kaggle竞赛实战12-数学建模竞赛方法总结
首先介绍基本流程
数据预处理:
id是否重复,缺失值、异常值情况分析并清洗
重复值直接去重
缺失值和异常值处理:
step1:划分离散变量和连续变量
step2:离散变量缺失值标注为-1
离散变量分为三类:连续型、名义型(比如男女)、有序型(abcd,需转为1234)
查看字段类型,将object类型转为01
step3:连续值处理
无穷值替换为最大值
最后进行离散、连续表格合并
接下来就是数据处理,尤其是特征衍生和筛选的部分
方法有以下这些,按照异常值处理-特征衍生-特征筛选顺序处理-数据重编码



离散:独热
连续变量:离散化(也成为分箱)
作用:1.消除异常值影响
2.引入非线性因素,提升模型表现能力
3.缺点是会损失一些信息
怎么分:
1.根据业务指标分(比如>10000是高收入人群)
2.固定方法(等宽、等频、聚类、有监督)等宽就是每类数值区间长度一样
等频就是每个里面样本个数一致
一个矛盾点:等宽会受异常值影响,等频则完全忽略异常值影响,要兼顾则用聚类分箱,公认效果好(因为它会把异常值单独分成一类)
特征衍生:
1.分组统计法(即a特征根据b特征的不同取值求统计值,注意b特征得是离散的,且取值要多些。离散变量不要只用离散统计值。统计值结果可以和变量再做四则运算衍生
3.时序特征:
先处理成datetime格式,然后用函数提取
a.提取其年月日为特征
b.季度特征,是否在周末等,周几
c.和关键时间点的差值
为什么有用:同一组内的用户表现出类似的特效,方便预测
如何做衍生:考虑自然周期和业务周期
4.模型:gbdt+lr/kmeans:是否属于某一类,与质心距离
5.文本:tf-idf
特征筛选:(分为指标筛选、递归筛选、模型筛选)
指标筛选就是用离散度那些来看
1.方差分析法:
step1:提出两个相反的假设(两个群体的xx指标是否有差异)
step2:判断两个群体是否分部一致,转换为和整体分布是否一致,看统计量是否一致
step3:设计统计量(算出ssb和sse然后用F检验)
step4:计算F后查表看是否接受



注意,方差分析只是用到了F检验。方差分析能够同时检验多个样本,而t检验只能检验两个样本
2.RFE方法:(递归消除法)
计算特征重要度,每次删除最低的几个,循环计算
存在的问题:模型会过拟合且输出结果随机
解决方法:用一个已经训练好的模型去筛选(在全量样本上先训练一个),每轮筛选都训练一个新的,效果也会提升
注意:方差分析等一般用于指标初筛,RFE用于精筛
进一步优化:交叉验证
改进方法是RFECV,即每次训练好模型后看一下有没有上一次效果好,如果没有就不要根据重要性删特征了
3、启发性的方法:向前搜索法或向后搜索
先选一个,然后依次加入新特征看哪几个特征组合做好,注意这个结果只是有较大概率是最优的
缺失值处理:
首先,要当心有些0就是缺失值,不一定是none或者np.nan

具体思路图如上
为什么要处理缺失值:
1.异常值可能有额外信息
2.有些算法不会自动填补缺失值,有些算法在sklearn里面不能填补
一.分层均值:先找出相关性最强的一列,聚类,再按层的均值填补。举例:如果这是一个分类问题,可以以不同类别为一类去聚
二.热平台法:以点估点,用其他有值的行类似点估计这个点(分为最近邻(算距离)、序贯(计算相关性后看)、随机)
如何选择:如果本来就要kmeans就用最近领热平台,如果要快用分层均值
如果缺失了10%-30%且数据集分布很一致则用
三.插值法:比如拉格朗日、牛顿
二.模型法:KNN、决策树、随机森林、SVM,把缺失列作为目标列,没有缺失的作为训练集,缺失的作为测试集
当有多列都有缺失值时如何处理(分为先不填补、用0填补和随机填补三种,整体思路都是从缺失最少的列开始算,依次去预测)
整体思路:


策略二核心:把无缺失的和一列有缺失的作为训练集
三.多重插补(miceforest)
目前效果最好的是miceforest法:比如有三列有缺失值,先都随机填,然后用完整的bc列预测a列,再用ab列预测c,不断循环直到值不太变
进阶(配合PMM插补)
以上讲了三种方法,那么如何选择呢?

这里的效率指运算效率
到此特征处理结束
下面来优化这个模型,除了前面提到的用不同的方法外
1.集成学习:用五折交叉验证的方法,超参数确定的情况下,根据不同的测试集训练出不同的参数,得到五个模型,做voting或者stacking
stacking:用三种模型,分别在训练集和测试集上得到结果,三个模型的结果横着拼接成下一次训练的训练集和测试集
2.NLP特征处理:比如用TF-IDF来挖掘客户是否特别喜欢某一商户
3.其他特征优化方法:行为特征深挖:近两个月买了几次/创造二阶特征交叉特征/识别异常值(分两阶段建模,异常样本直接给个值)
最后介绍下模型融合的方法:
1、最基本的有均值法、加权平均法
2、基于贝叶斯优化的权重搜索:这里以TPE搜索为例:
步骤:创造参数空间,定义目标函数
问题:得到的权重带入模型后得到的准确率并不高,原因是这里的训练和模型之前的训练重复了,会出现过拟合
如何解决:去掉一些超参数或是缩小范围
流程图如下

3、stacking
整体流程如下
思路:在得到各个模型结果后,采用模型来训练出权重
软投票:输出概率预测结果;硬投票:输出类别预测结果。在使用优化方法时,软投票好
问题:过拟合
解决方法:交叉验证
由此也可联想到几种优化方法:
1、可以用三层stacking堆叠
2、特征增强,指一级学习器和元学习器带入不同的特征组合,提高模型多样性,效果可能最好,但最难
3、优化一、二级学习器,包括一级学习器训练方法优化与元学习器优化
4、级联优化:把一级学习器和元学习器的参数放在一个空间进行搜索
BLENDING方法:
stacking的一种改良,把训练集划成训练集合留出集,前者用于一级学习器训练,后者用于留出集训练,保证数据隔离,流程如下

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)