目录
融合方法分类
模型融合是比赛后期一个重要的环节,大体来说有如下的类型方式。
-
简单加权融合:
-
回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);
-
分类:投票(Voting)
-
综合:排序融合(Rank averaging),log融合
-
-
stacking/blending:
-
构建多层模型,并利用预测结果再拟合预测。
-
-
boosting/bagging(在xgboost,Adaboost,GBDT中已经用到):
-
多树的提升方法
-
关于 stacking 的补充资料
参考:Kaggle机器学习之模型融合(stacking)心得
stacking 和 blending 的区别
Blending,其实和Stacking是一种类似的多层模型融合的形式
-
其主要思路是把原始的训练集先分成两部分,比如70%的数据作为新的训练集,剩下30%的数据作为测试集。
-
在第一层,我们在这70%的数据上训练多个模型,然后去预测那30%数据的label,同时也预测test集的label。
-
在第二层,我们就直接用这30%数据在第一层预测的结果做为新特征继续训练,然后用test集第一层预测的label做特征,用第二层训练的模型做进一步预测
其优点在于
-
比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)
-
避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集
缺点在于:
-
使用了很少的数据(第二阶段的blender只使用training set10%的量)
-
blender可能会过拟合
-
stacking使用多次的交叉验证会比较稳健
经验总结
模型融合是数据挖掘比赛后期上分的主要方式,尤其是进行队伍合并后,模型融合有很多优势。总结一下三个方面:
-
结果层面的融合,这种是最常见的融合方法,其可行的融合方法也有很多,比如根据结果的得分进行加权融合,还可以做Log,exp处理等。在做结果融合的时候。有一个很重要的条件是模型结果的得分要比较近似但结果的差异要比较大,这样的结果融合往往有比较好的效果提升。如果不满足这个条件带来的效果很低,甚至是负效果。
-
特征层面的融合,这个层面叫融合融合并不准确,主要是队伍合并后大家可以相互学习特征工程。如果我们用同种模型训练,可以把特征进行切分给不同的模型,然后在后面进行模型或者结果融合有时也能产生比较好的效果。
-
模型层面的融合,模型层面的融合可能就涉及模型的堆叠和设计,比如加stacking,部分模型的结果作为特征输入等,这些就需要多实验和思考了,基于模型层面的融合最好不同模型类型要有一定的差异,用同种模型不同的参数的收益一般是比较小的。
参考资料