【干货】数据大神最新数据挖掘经验出炉

 

继上次一口气分享九大比赛思路之后,@不得直视本王又出马,大神最新数据挖掘经验出炉,速取不送!...





继上次一口气分享九大比赛思路之后,@不得直视本王又出马,大神最新数据挖掘经验出炉,速取不送!

【干货】数据大神带你一口气揭秘九大比赛思路

作者说

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

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

过去的参赛成绩



之前经常听到有人说比赛嘛,不都是那些套路,是啊,装逼我也会。不过咱还是老老实实做人,具体问题具体分析。

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



很多同学不太注重预处理,预处理实际上是相当重要的环节。预处理做好了,后面可以省去不少麻烦事。尤其是数据集的划分,一般需要准确模拟线上提交,方便快速迭代想法,聚类一般用来过滤异常值,将业务场景细分等作用。

预处理参考: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等线性模型











原文链接:http://blog.csdn.net/bryan__/article/details/51745563

作者微博:@不得直视本王

作者系拍拍贷魔镜杯大赛风控算法组铜奖得主——不得仰视本王团队成员,拥有丰富的大数据竞赛经验,以下为“不得仰视本王团队”作品链接和代码分享~

【明星团队】科赛网对话周耀:"人生应该奋斗,不然和咸鱼有什么分别”

【纯干货】魔镜杯决赛作品开源代码汇总

魔镜杯决赛风控算法组【铜奖】-不得仰视本王团队作品

编辑 汪梦梦 邓以勒

专业大数据竞赛平台




中国数据青年成长之家


    关注 Kesci数据实践


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册