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

admin 足球比分

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

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

  

  过去的参赛成绩

  

  一般从如下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来采样的话,那么会有部分样本没被选中,这部分样本可以用来调参大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

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

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

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

  

  

  

  

  

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

  大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

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

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

0 49

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。