Blog icon indicating copy to clipboard operation
Blog copied to clipboard

Python机器学习算法技术博客,有原创干货!有code实践! 【更多内容敬请关注公众号 "算法进阶"】

Results 65 Blog issues
Sort by recently updated
recently updated
newest added

结合论文《Revisiting Deep Learning Models for Tabular Data》的观点,集成树模型通常擅长于表格数据这种异构数据集,是实打实的表格数据王者。集成树模型中的LightGBM是增强版的GBDT,支持了分类变量,在工程层面大大提高了训练效率。关于树模型的介绍,可见之前文章:[一文讲透树模型](http://mp.weixin.qq.com/s?__biz=MzI4MDE1NjExMQ==&mid=2247488558&idx=1&sn=476991d1c8e16db31f71a18c41c98acd&chksm=ebbd968edcca1f988730379ed1553a846c9ef27cc26d2ce7f2a6034c3199358096dcc6b817d6&token=38808633&lang=zh_CN#rd) ![](https://upload-images.jianshu.io/upload_images/11682271-d1b442205d2b64f2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) DNN深度神经网络擅长于同构的高维数据,从高维稀疏的表示中学习到低维致密的分布式表示,所以在自然语言、图像识别等领域基本上是称霸武林(神经网络的介绍及实践可见系列文章:[一文搞定深度学习建模全流程](http://mp.weixin.qq.com/s?__biz=MzI4MDE1NjExMQ==&mid=2247486048&idx=1&sn=bbbe904159a9f9a65940057992a2ce8b&chksm=ebbd88c0dcca01d6a5054651e0f28266e4ad5dd762bdd1f3b6f4eadc0590af50af2ef653b14b&token=38808633&lang=zh_CN#rd))。对于异构致密的表格数据,个人实践来看,DNN模型的非线性能力没树模型来得高效。 ![](https://upload-images.jianshu.io/upload_images/11682271-e3eb70a2b488ecea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 所以一个很朴素的想法是,结合这树模型+神经网络模型的优势。比如通过NN学习文本的嵌入特征后,输入树模型继续学习(如word2vec+LGB做文本分类,可见文章:[NLP建模全流程](http://mp.weixin.qq.com/s?__biz=MzI4MDE1NjExMQ==&mid=2247489096&idx=1&sn=700d19511c6fff982082148ff1d9496c&chksm=ebbd94e8dcca1dfe998bae685e7c37c9bd89717834060225193f092df3caf12d3480800ef04f&token=38808633&lang=zh_CN#rd))。 或者是,树模型学习表格数据后,输出样本的高维个叶子节点的特征表示,输入DNN模型。 接下来,我们使用LightGBM+DNN模型强强联手,验证其在信贷违约的表格数据预测分类效果。 ![](https://upload-images.jianshu.io/upload_images/11682271-b64c3f3cb53af92f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### 数据处理及树模型训练 lightgbm树模型,自带缺失、类别变量的处理,还有很强的非线性拟合能力,特征工程上面不用做很多处理,建模非常方便。 ![](https://upload-images.jianshu.io/upload_images/11682271-0a05830674310c8f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ``` ##完整代码及数据请见 算法进阶github:https://github.com/aialgorithm/Blog # 划分数据集:训练集和测试集 train_x, test_x, train_y, test_y = train_test_split(train_bank[num_feas +...

### 金融的定义 谈到金融,也就是资金的融通,是指在经济生活中,银行、证券等从业者从金融市场主体(例如:储户、证券投资者或者保险者等)募集资金,并借贷给其它市场主体的经济活动。 ![](https://upload-images.jianshu.io/upload_images/11682271-20618afa51750f34.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 更为本质的,金融 是一个 **高效的资源融通的网络**。所以,金融的核心问题是解决网络中的**信任互通**问题,而信任源于减少信息不对称,进而提高资金流转的效率。 ### 金融科技的生态体系 金融科技并没有改变金融的实质,科技的意义在于通过利用各类科技手段创新(如大数据、AI、区块链等技术),为传统金融行业各领域构建稳健高效的金融体系,提升效率并降低运营成本。 ![](https://upload-images.jianshu.io/upload_images/11682271-f2ad04cea0aaacf0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 金融领域的科技应用主要有:大数据风控、智能营销、智能客服、区块链金融、智能投顾、量化交易等,如下做重点展开(相关金融项目:https://github.com/firmai/financial-machine-learning): ![](https://upload-images.jianshu.io/upload_images/11682271-1f11c1c7512d8e4c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) #### 1、大数据风控 金融是极其厌恶风险的行业,所以利用科技做风险管理是行业的强刚需。金融风险是一定量金融资产在未来时期内预期收入遭受损失的可能性,金融风险可以分为信用风险、操作风险、合规风险、市场风险等等。 大数据风控是金融风险管理的一种重要手段,其主要用于识别金融信贷中的信用风险(含欺诈风险),通过人脸识别、OCR和生物特征的识别等技术确认用户身份,再借由大数据全方面评估借贷方的还款能力及意愿,从而减少信贷业务中的坏账风险。 ![](https://upload-images.jianshu.io/upload_images/11682271-695f5a7a878c855d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 值得注意的,金融中的大数据通常是隐私且关键性的数据(如客户基本信息、征信报告、交易记录等等),而大数据风控其实就是学习数据中的经验规律预判未来表现,这也就意味着 只要能掌握大量的金融数据(数据垄断),就能有更好的业务优势。对于金融科技公司来说,一方面可以通过智能营销去积累客户产生数据优势,另一方面可以通过联邦学习等方法,在保护隐私和数据安全的前提下共用数据,以达到更好业务效果。 #### 2、智能营销 智能营销的主要因素在于数据获取和营销算法。通过数据埋点合法获取用户数据,大数据分析结合人工智深度学习算法,实现用户画像、营销推荐,帮助金融机构实现精准营销和稳定获客。 ![](https://upload-images.jianshu.io/upload_images/11682271-750684065128c8b7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) #### 3、智能投顾 智能投顾利用大数据和机器学习,将大量的数据和国内外各类信息,尤其是基本面相关的信息与投资决策进行智能整合,并通过内部算法将收集的数据进行智能化关联,在给投资者提供参考同时也能提高投资者工作效率。 ![](https://upload-images.jianshu.io/upload_images/11682271-87af8a0ad54338b6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) #### 4、区块链金融...

### 一、海外信贷现状简介 自国内金融P2P暴雷,国内很多小贷机构便涌入了东南亚、非洲等未开拓的市场,像印尼、印度、菲律宾、泰国、越南、尼日利亚等国家。 分析这些东南亚/非洲国家的市场特点,有低金融包容性(2017年越南有30.8%的人拥有银行账户),对金融的高需求(2017年借贷的人口比例49.0%)和互联网普及率(2018年为66%)和移动连通性,为东南亚金融科技贷款的发展提供了最有利的条件,开启了野蛮生长的模式。 结合这些地域的贷款市场情况,通常征信体系建设及经济情况都比较差,且大部分的用户资质比较差(也并不满足银行的贷款资格)。种种因素下,机构对于放贷用户的信用/欺诈风险的掌握是比较差的,小贷机构坏账率普遍地高(如一些机构的新借贷用户坏账率可达 20~30%,而银行坏账通常在10%左右)。 在东南亚开展的小额贷款产品,普遍是714高炮(贷款周期7-14天,收取高额逾期费用或放贷时提前从本金中扣除利息-砍头息,有的实际年化利率竟达到300%)。高利率必然带着高风险,这种业务也很容易受到金融监管政策的封杀。 ### 二、小贷风控体系介绍 这么高的坏账情况,如果小贷机构在对借贷用户信用情况的掌握不足,即使高利率也未必覆盖这么高的信用风险。 可见,风控能力是小贷业务控制损失的核心,风控体系通常由 反欺诈(证件信息核实、人脸识别验证、黑名单)+ 申请评分模型组成。 风控好坏关键在于数据获取及积累。一个明显差异体现在于,机构新借贷的用户坏账率是20~30%(里面骗贷欺诈的比重应该挺高),而对于在机构内复贷的老用户(之前有借贷的再重复贷款的用户)坏账率仅有4%。 也就是,**对于机构有掌握借贷历史的用户,其坏账率是显著较低的!信贷风控能力的差异其实也就是数据垄断优势的体现!** 对于小贷机构,营销扩展新用户后,如何应用风控模型尽量准确地评估新用户,并给予较低的额度,当其有较好的信贷历史后再提高额度,好好维持及扩充这部分复贷用户就是业务盈利的关键。 海外的小贷机构申请评分模型的数据主要来源有: - 机构历史借贷记录:如使用同一手机号申请贷款次数、逾期次数。在征信体系建设覆盖不完全的情况下,在机构内(或联合机构)的借贷历史往往也是最有说服力及有效的。 - 客户基本资料:如身份信息、联系方式、职业、收入、借款用途等信息。由于线上申请这些数据往往没有人工审核,信息的可靠性是存疑的,通常可以借助多方数据来核验这些是不是一致及可靠的。 - 征信机构的征信报告:全球三大商业个人征信巨头分别为益百利(Experian)、艾克发(Equifax)和环联(Trans union),可以提供贷款申请次数、贷款额度、信用账户数等信息。但不足的地方在于,对于征信体系建设不完善的地区,覆盖度、信息记录会比较差(本项目验证的Experian实际覆盖度80%左右)。 - 手机短信:短信可以提供很多有价值的信息,如话费欠费、银行卡收入支出、联系人数量、日常闲聊短信、机构催收短信、信贷广告数量。可以通过简单关键字匹配、词袋模型等方法抽取关键特征,进一步还可以通过短信分类、信息抽取(实体抽取)等方法统计催收短信数量、欠款金额、收入支出金额等数据(注:获取短信数据肯定是不合规的,对于机构只想要更多的数据保证,而对于用户急着用钱哪还管什么隐私数据。当前,有些APP已被禁止获取短信、通话记录,这也是要随着监管不断完善。) - 手机通讯录:可用于统计关联的联系人的逾期次数等特征,以及其他的一些社交信息; - APP数据:可统计安装信贷类APP、社交类APP的数量,以及app使用率;...

>好久没有学习充电,最近刚好看了一些大佬的文章(如文末参考文献),在此总结关于技术、事业的一些看法。 ## 一、前言 人类的发展历程的核心可以归纳为**能源+信息**(资源)的获取及利用,以传递基因信息及维持生命体的"减熵"行为。 人类对能源、信息的渴望以发展繁衍的这段代码是写到基因里面的,是最原始的本能,也是最最基本的自然规律。 判断事件发展的必然性,往往也可以从“能源及信息”的输送关系加以判断,这个是核心的驱动因素。反之,一个事能不能成功,信息是否有误,信息有无增益(熵减),资源传输转换是否异常。 将**获取利用能源及信息**这段逻辑映射人类社会里面,也就是不断**探索科学,开发技术,发展经济**的过程。 ![](https://upload-images.jianshu.io/upload_images/11682271-d660b92ad7f719c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 二、科学、技术、经济的发展体系 - 科学 科学是一个探索知识的体系(system of inquiry),由可以被否定的理论假设组成(可证伪性是一个科学理论的必要属性),科学主要用于认识及解释自然现象的。 ![](https://upload-images.jianshu.io/upload_images/11682271-ac9b159be5ec0210.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - 技术 技术不同于科学,它基于科学理论并不断演化,用于改造自然,以满足人类**需求**的实践方法。意味着技术是可编程且可执行的,永远朝着人类需求多的方向不断地发展,这是它的本质使然。 ![](https://upload-images.jianshu.io/upload_images/11682271-46ed0e9ee5c13de3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - 经济体系 是指经济个体之间具有相互关系,也就是资源流通的体系。人类创造了不同阶段的市场经济,它与科学、技术的发展是紧密结合,三者间相互交互不断朝着人类的需求发展。 如下图,我们从人类历史来观察科学技术、经济发展一些规律: ![](https://upload-images.jianshu.io/upload_images/11682271-3b0c254b6e3d2723.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 可见, 经济发展和科学技术发展是紧密结合的,发展的核心是能源和信息利用的发展。 历史上所有重要的技术能力,可以归为三大稳定的范式: 第一个体系:农业时代。核心是太阳能的利用,在水土资源+简单工具+劳动力劳作下,农作物光合作用产出粮食。这个阶段的产出关系相对简单,效率也是被有限的**水土资源**、天气节气及劳动力严格地限制住了。 第二个体系:工业时代。核心是利用化石能源、电力做大规模生产和流通。这个阶段能源和信息结构完全不一样了,能源转换、信息处理的过程的科学知识及技术也更复杂了,工业时代(绿色曲线)生产效率比农业时代(红色曲线)有了大大的提高。...

## 一、信贷风控简介 信贷风控是数据挖掘算法最成功的应用之一,这在于金融信贷行业的数据量很充足,需求场景清晰及丰富。 信贷风控简单来说就是判断一个人借了钱后面(如下个月的还款日)会不会按期还钱。更专业来说,信贷风控是还款能力及还款意愿的综合考量,根据这预先的判断为信任依据进行放贷,以此大大提高了金融业务效率。 ![](https://upload-images.jianshu.io/upload_images/11682271-5d87f2b74df9c759.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 与其他机器学习的工业场景不同,金融是极其厌恶风险的领域,其特殊性在于非常侧重模型的解释性及稳定性。业界通常的做法是基于挖掘多维度的特征建立一套可解释及效果稳定的规则及风控模型对每笔订单/用户/行为做出判断决策。 其中,对于(贷前)申请前的风控模型,也称为申请评分卡--A卡。A卡是风控的关键模型,业界共识是申请评分卡可以覆盖80%的信用风险。此外还有贷中行为评分卡B卡、催收评分卡C卡,以及反欺诈模型等等。 >A卡(Application score card)。目的在于预测申请时(申请信用卡、申请贷款)对申请人进行量化评估。 B卡(Behavior score card)。目的在于预测使用时点(获得贷款、信用卡的使用期间)未来一定时间内逾期的概率。 C卡(Collection score card)。目的在于预测已经逾期并进入催收阶段后未来一定时间内还款的概率。 ![](https://upload-images.jianshu.io/upload_images/11682271-4ba2725efc5a869a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 一个好的特征,对于模型和规则都是至关重要的。像申请评分卡--A卡,主要可以归到以下3方面特征: - 1、信贷历史类: 信贷交易次数及额度、收入负债比、查询征信次数、信贷历史长度、新开信贷账户数、额度使用率、逾期次数及额度、信贷产品类型、被追偿信息。(**信贷交易类的特征重要程度往往是最高的**,少了这部分历史还款能力及意愿的信息,风控模型通常直接就废了。) - 2、基本资料及交易记录类:年龄、婚姻状况、学历、工作类型及年薪、工资收入、存款AUM、资产情况、公积金及缴税、非信贷交易流水等记录(这类主要是从还款能力上面综合考量的。还可以结合多方核验资料的真伪以及共用像手机号、身份证号等团伙欺诈信息,用来鉴别欺诈风险。需要注意的,像性别、肤色、地域、种族、宗教信仰等类型特征使用要谨慎,可能模型会有效果,但也会导致算法歧视问题。) - 3、公共负面记录类: 如破产负债、民事判决、行政处罚、法院强制执行、涉赌涉诈黑名单等(这类特征不一定能拿得到数据,且通常缺失度比较高,对模型贡献一般,更多的是从还款意愿/欺诈维度的考虑) ## 二、申请评分卡(A卡)全流程 实战部分我们以经典的申请评分卡为例,使用的中原银行个人贷款违约预测比赛的数据集,使用信用评分python库--toad、树模型Lightgbm及逻辑回归LR做申请评分模型。(注:文中所涉及的一些金融术语,由于篇幅就不展开解释了,疑问之处 可以谷歌了解下哈。)...

## 一、自然语言处理(NLP)简介 >自然语言处理就是用计算机来分析和生成自然语言(文本、语音),目的是让人类可以用自然语言形式跟计算机系统进行人机交互,从而更便捷、有效地进行信息管理。 NLP是人工智能领域历史较为悠久的领域,但由于语言的复杂性(语言表达多样性/歧义/模糊等等),如今的发展及收效相对缓慢。比尔·盖茨曾说过,"NLP是 AI 皇冠上的明珠。" 在光鲜绚丽的同时,却可望而不可及(...)。 ![](https://upload-images.jianshu.io/upload_images/11682271-2808ff813c4db7f6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 为了揭开NLP的神秘面纱,本文接下来会梳理下NLP流程、主要任务及算法,并最终落到实际NLP项目(经典的文本分类任务的实战)。`顺便说一句,个人水平有限,不足之处还请留言指出~~` ## 二、NLP主要任务及技术 **NLP任务可以大致分为词法分析、句法分析、语义分析三个层面。具体的,本文按照单词-》句子-》文本做顺序展开,并介绍各个层面的任务及对应技术。本节上半部分的分词、命名实体识别、词向量等等可以视为NLP基础的任务。下半部分的句子关系、文本生成及分类任务可以看做NLP主要的应用任务。** ![](https://upload-images.jianshu.io/upload_images/11682271-865816ee430c1e08.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 这里,贴一张自然语言处理的技术路线图,介绍了NLP任务及主流模型的分支: ![](https://upload-images.jianshu.io/upload_images/11682271-06b637d032ccde3f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) >高清图可如下路径下载(原作者graykode):https://github.com/aialgorithm/AiPy/tree/master/Ai%E7%9F%A5%E8%AF%86%E5%9B%BE%E5%86%8C/Ai_Roadmap ### 2.1 数据清洗 + 分词(系列标注任务) - 数据语料清洗。我们拿到文本的数据语料(Corpus)后,通常首先要做的是,分析并清洗下文本,主要用正则匹配删除掉数字及标点符号(一般这些都是噪音,对于实际任务没有帮助),做下分词后,删掉一些无关的词(停用词),对于英文还需要统一下复数、语态、时态等不同形态的单词形式,也就是词干/词形还原。 - 分词。即划分为词单元(token),是一个常见的序列标注任务。对于英文等拉丁语系的语句分词,天然可以通过空格做分词,![](https://upload-images.jianshu.io/upload_images/11682271-10407a47b0dca356.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)对于中文语句,由于中文词语是连续的,可以用结巴分词(基于trie tree+维特比等算法实现最大概率的词语切分)等工具实现。 ``` import jieba jieba.lcut("我的地址是上海市松江区中山街道华光药房")...

## 简介 机器学习在选定模型、目标函数之后,核心便是如何优化(目标)损失函数。而常见的优化算法中,有梯度下降、遗传算法、模拟退火等算法,其中用梯度类的优化算法通常效率更高,而使用也更为广泛。接下来,我们从梯度下降(Gradient descent)、梯度提升(Gradient Boosting)算法中了解下“梯度”优化背后的原理。 ## 一、梯度 我们先引出梯度的定义: >梯度是一个矢量,其方向上的方向导数最大,其大小正好是此最大方向导数 简单对于二维的情况,梯度也就是曲线上某点的切线斜率,数值就是该曲线函数的导数,如y=x^2^ ,求导dy/dx=2x ![](https://upload-images.jianshu.io/upload_images/11682271-6816de6cf1b8e211.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 扩展到3维(多维),各点方向导数是无限多(一个平面),梯度也就是方向导数最大的方向,数值即对多元函数各参数求偏导数,如y=x^2^ + 3z^2^ ,求x偏导dy/dx=2x,求z偏导dy/dz=6z。 ![](https://upload-images.jianshu.io/upload_images/11682271-aa14889858bc7ece.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 换句话说,沿着函数(曲线)的任意各点位置取梯度相反的方向,如y=x^2^ + 3z^2^ 的负梯度-(2x, 6z),也就是多元函数下降最快的地方,越容易找到极值。这也就是梯度下降算法的基本思想。 ## 二、梯度下降算法 ### 2.1 梯度下降的基本原理 梯度类的优化算法,最为常用的就是随机梯度下降,以及一些的升级版的梯度优化如“Adam”、“RMSP”等等。 ![](https://upload-images.jianshu.io/upload_images/11682271-5ca1785ca9e5a589.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 如下介绍梯度下降算法的基本原理:...

### 一、Deep Learning is Not All You Need 尽管神经网络在图像识别、自然语言等很多领域大放异彩,但回到表格数据的数据挖掘任务中,树模型才是低调王者,如论文《Tabular Data: Deep Learning is Not All You Need》提及的:![](https://upload-images.jianshu.io/upload_images/11682271-311cea94d1df6c47.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)深度学习可能不是解决所有机器学习问题的灵丹妙药,通过树模型在处理表格数据时性能与神经网络相当(甚至优于神经网络),而且树模型易于训练使用,有较好的可解释性。 ![](https://upload-images.jianshu.io/upload_images/11682271-e48ef9106ed911e9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### 二、树模型的使用 对于决策树等模型的使用,通常是要到scikit-learn、xgboost、lightgbm等机器学习库调用, 这和深度学习库是独立割裂的,不太方便树模型与神经网络的模型融合。 ![](https://upload-images.jianshu.io/upload_images/11682271-7111dbdea00ca9c2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 一个好消息是,Google 开源了 TensorFlow 决策森林(TF-DF),为基于树的模型和神经网络提供统一的接口,可以直接用TensorFlow调用树模型。决策森林(TF-DF)简单来说就是用TensorFlow封装了常用的随机森林(RF)、梯度提升(GBDT)等算法,其底层算法是基于C++的 [Yggdrasil 决策森林 (YDF)](https://github.com/google/yggdrasil-decision-forests#:~:text=Yggdrasil%20Decision%20Forests%20(YDF)%20is,interpretation%20of%20Decision%20Forest%20models.)实现的。...

## 一、推荐的技术方法 推荐系统简单来说就是, 高效地达成用户与意向对象的匹配。具体可见之前文章:[【一窥推荐系统的原理】](https://mp.weixin.qq.com/s?__biz=MzI4MDE1NjExMQ==&mid=2247487854&idx=1&sn=b3b16d7c10f3e36179b4c5c6f7547c7f&chksm=ebbd93cedcca1ad8682c47d3100d07b31ea517e39d041e441c40f3fa74592034ba9f0cdb3f57&token=229080214&lang=zh_CN#rd)。而技术上实现两者匹配,简单来说有两类方法: ### 1.1 基于分类方法 分类的方法很好理解,可以训练一个意向物品的多分类模型,预测用户偏好那一类物品。或者将用户+物品等全方面特征作为拼接训练二分类模型,预测为是否偏好(如下经典的CTR模型,以用户物品特征及对应的标签 0或 1 构建分类模型,预测该用户是否会点击这物品,)。 ![](https://upload-images.jianshu.io/upload_images/11682271-4584c6850848b2f0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 基于分类的方法,精度较高,常用于推荐的排序阶段(如粗排、精排)。 ### 1.2 基于相似度方法 利用计算物与物或人与人、人与物的距离,将物品推荐给喜好相似的人。 如关联规则推荐,可以将物与物共现度看做为某种的相似度;协同过滤算法可以基于物品或者基于用户计算相似用户或物品;以及本文谈到的**双塔模型**,通过计算物品与用户之间的相似度距离并做推荐。 ![](https://upload-images.jianshu.io/upload_images/11682271-263721bee326d563.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 利用相似度的方法效率快、准确度差一些常用于推荐中的粗排、召回阶段。 ## 2. DSSM双塔模型 ### 2.1 DSSM模型的原理 DSSM(Deep Structured Semantic Models)也叫深度语义匹配模型,最早是微软发表的一篇应用于NLP领域中计算语义相似度任务的文章。...

在数据挖掘项目的数据中,数据类型可以分为两种:有序的连续数值 和 无序的类别型特征。 对于xgboost等boosting树模型,基学习通常是cart回归树,而cart树的输入通常只支持连续型数值类型的,像年龄、收入等连续型变量Cart可以很好地处理,但对于无序的类别型变量(如 职业、地区等),cart树处理就麻烦些了,如果是直接暴力地枚举每种可能的[类别型特征的组合](https://stackoverflow.com/questions/46391632/cart-algorithm-why-2m-1-1-splits-for-categorical-variables),这样找类别特征划分点计算量也很容易就爆了。 在此,本文列举了 树模型对于类别型特征处理的常用方法,并做了深入探讨~ ### 一、one-hot编码处理 ![](https://upload-images.jianshu.io/upload_images/11682271-fbf6394e5f6c35b4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 我们可以直接对类别型特征做Onehot处理(这也是最常用的做法),每一类别的取值都用单独一位0/1来表示, 也就是一个“性别”类别特征可以转换为是否为“男”、“女” 或者“其他” 来表示,如下: ![](https://upload-images.jianshu.io/upload_images/11682271-2b2772ec3cda78bc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ``` display(df.loc[:,['Gender_Code']].head()) # onehot pd.get_dummies(df['Gender_Code']).head() ``` 但是onehot的重大缺点在于,对于取值很多的类别型特征,可能导致高维稀疏特征而容易导致树模型的过拟合。如之前谈到面对高维稀疏的onehot特征,一旦有达到划分条件,树模型容易加深、切分次数越多,相应每个切分出的子特征空间的统计信息越来越小,学习到的可能只是噪音(即 过拟合)。 **使用建议**:Onehot天然适合神经网络模型,神经网络很容易从高维稀疏特征学习到低微稠密的表示。当onehot用于树模型时,类别型特征的取值数量少的时候还是可以学习到比较重要的交互特征,但是当取值很多时候(如 大于100),容易导致过拟合,是不太适合用onehot+树模型的。 ![](https://upload-images.jianshu.io/upload_images/11682271-c8e2d2306626ea61.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) (注:此外 onehot 还有增加内存开销以及训练时间开销等缺点) ###...