【开车了】大数据竞赛技术分享

本次分享为笔者在一年半时间里的关于数据挖掘技术在学习和实践方面的经验

由于准备时间仓促和水平有限,有误之处请多多指教



过去的参赛成绩





一般从如下4个方面来做深入分析

一套全自动的数据挖掘工具应该是所有挖掘者的梦想

git上有人开发了一套自动的流程参考:https://github.com/rhiever/tpot




很多同学不太注重预处理,预处理实际上是相当重要的环节

预处理做好了,后面可以省去不少麻烦事

尤其是数据集的划分,一般需要准确模拟线上提交,方便快速迭代想法

聚类一般用来过滤异常值,将业务场景细分等作用

预处理参考:http://blog.csdn.net/bryan__/article/details/51228971



特征工程可以说是整个工程中最为重要的环节

特征没做好,参数调到老

着重根据业务场景来构建特征,注意时间尺度一致,不要使用标签信息来统计特征



使用GBDT和LR可以自动发现组合特征,省去人工构造



特征选择也是重要的一个环节,大量特征会导致训练成本较高,甚至模型跑不出来

总体需要注意的是与标签列相关性高,特征之间冗余度低,避免共线性等等

压缩方法一般对于图像特征效果可能比较好,一般情况的场景效果可能稍差

时间够的话用wrapper吧,能找到效果最好的特征子集,模型自带的特征排序效果也非常不错

特征选择资料参考:http://blog.csdn.net/bryan__/article/details/51607215



分类模型里面,比较常见的是线性模型,决策树模型,SVM超平面间隔模型,神经网络模型

LR和SVM使用前记得先归一化,LR取LOG效果也不错,树模型不用归一化

SVM一般使用线性核和高斯核,调参可以使用自动搜索  核选择和参赛问题参考:http://blog.csdn.net/bryan__/article/details/51506801

这些不同性质的模型可以用来做后面的模型融合

分类模型简单使用参考:http://blog.csdn.net/bryan__/article/details/51288953



回归模型一般也是这些常见的算法,L1和L2区别简单来说是p范数的问题,具体参考:http://blog.csdn.net/bryan__/article/details/51288760


至于规则模型,可以说是难点吧,没有深入理解业务知识不太好掌握,用好了也是大杀器


推荐算法一般主要内容是计算相似度过滤,频繁项挖掘,矩阵分解,图算法等等


文本处理的核心是将文本转换成特征向量,注意tf-idf得到的词在不同文档中值不一样,word2vec得到的词向量在所有文档都一样

如何把word2vec得到的向量变成文档的向量呢?一般是简单采用向量相加然后平均的方法



在现实场景用,数据不平衡是十分常见的问题,一般处理方法是代价敏感,也就是在算法层面增加小类权重

在数据层面一般是采用过采样方法,常见的smote处理比较随意,最好采用我们实验室的基于粗糙集的研究成果,哈哈~

另外不太推荐复制小类样本,周志华都说了不能这样,笔者表示支持


模型融合稍微复杂一点,把握好差异性和多样性融合

差异性是在算法层面,比如树模型和线性模型融合就算是差异性融合

多样性是指在数据,特征,参数等方面的多样性

bagging的优点是减少方差,也就是稳定性好

boosting的优点是减少误差,也就是更准确

stacking的顶层使用线性融合,数据量小的时候容易导致过拟合

ranking针对AUC优化效果不错,使用的是样本的排名来做融合,跟具体得分没啥关系


模型融合的时候需要注意不同模型结果的相关性

如下列举了几种常用的相关性指标,也可以用来做特征选择的时候计算相关性

单独用一种说服力不强,一般是同时跑多个指标来评估相关性

关于如何使用这几种算法参考:http://blog.csdn.net/bryan__/article/details/51607215



下面介绍几种常用的bagging方法,随机森林是比较常用的树模型bagging

在样本,特征,参数,基分类器上随机,然后平均


下面这种是我们之前在参加DC一个比赛夺冠时使用的xgboost bagging

主要是在特征和参数层面的bagging



SVM在处理小样本分类的时候性能强悍,但是随着数据量的增加,SVM有可能会跑不出结果

在数据量大的时候,一般可以采用训练集分解的方式来解决时间复杂度问题

分解为p份时间复杂度降低p倍,当然不能分解太多,不然样本不够导致单模型性能欠佳

如果使用bootstrap来采样的话,那么会有部分样本没被选中,这部分样本可以用来调参


stacking可能理解稍微困难一些,参考:http://blog.csdn.net/bryan__/article/details/51229032

需要注意的是底层模型尽量不要用同质模型

上层模型一般使用LR、NN等线性模型









下面是阿里巴巴ODPS平台的数据分析工具,可以参考下




AliDMCompetition 阿里巴巴大数据竞赛(http://102.alibaba.com/competition/addDiscovery/index.htm ) 数据说明 提供的原始文件有大约4M左右,涉及1千多天猫用户,几千个天猫品牌,总共10万多条的行为记录。 用户4种行为类型(Type)对应代码分别为: 点击:0 购买:1 收藏:2 购物车:3 提交格式 参赛者将预测的用户存入文本文件中,格式如下: user_id \t brand_id , brand_id , brand_id \n 上传的结果文件名字不限(20字以内),文件必须为txt格式。 预测结果 真实购买记录一共有3526条 TODO 注意调整正负样本比例 在LR的基础上做RawLR。按照天猫内部的思路来。 在LR的基础上做MRLR,样本提取要更加合理。 在UserCF和ItemCF上加上时间因子的影响。 利用UserCF做好的用户聚类、ItemCF做好的品牌聚类来做细化的LR,或者在聚类 上做LFM 在ItemCF的思路上挖掘频繁项集/购买模式,如购买品牌A和商品后往往会购买 品牌B的商品 LFM 数据集特征 某一商品在购买前的一段时间内会出现大量点击次数,购买完成后的一段时间内也会出现大量点击次数 用户在本月有过行为的商品极少出现在下个月的购买列表里 根据观察推断:用户浏览商品的行为可分为两类: 无目的浏览,可能会在浏览过程中对某些中意的商品进行购买,数据表现为有大量点击次数<=2的行为记录,但很少有购买行为 有目的的查找商品,可能是事先有需求的情况,数据表现为一段时间内点击商品数很少, 但点击过的商品大多数都进行了购买 参考论文 See https://www.google.com.hk/search?q=data+mining+time+series&ie=utf-8&oe=utf-8&aq=t for more. Chapter 1 MINING TIME SERIES DATA - ResearchGate 模型列表 LR(model=LinearSVC(C=10, loss='l1'), alpha=0.7, degree=1) | TOTAL VISITED BOUGHT FAVO CART NEW | Pred # 1438 1436 626 71 12 | % 100% 99.861% 43.533% 4.937% 0.834% | Real # 1311 250 89 10 1 | % 100% 19.069% 6.789% 0.763% 0.076% Hit # 76 Precision 5.285118% Recall 5.797101% F1 Score 5.529283% LR(model=LogisticRegression(penalty='l1'), alpha=0.7, degree=1) | TOTAL VISITED BOUGHT FAVO CART NEW | Pred # 1472 1470 615 68 14 | % 100% 99.864% 41.780% 4.620% 0.951% | Real # 1311 250 89 10 1 | % 100% 19.069% 6.789% 0.763% 0.076% Hit # 74 Precision 5.027174% Recall 5.644546% F1 Score 5.318002% 这个模型在数据变成2次后,Precision ~ 16%,同时F1 ~ 3% LR(model=Perceptron(penalty='l1'), alpha=0.7, degree=1) | TOTAL VISITED BOUGHT FAVO CART NEW | Pred # 3145 3140 1023 130 26 | % 100% 99.841% 32.528% 4.134% 0.827% | Real # 1311 250 89 10 1 | % 100% 19.069% 6.789% 0.763% 0.076% Hit # 113 Precis
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值