1 模型融合目标
对于多种调参完成的模型进行模型融合。
2 内容介绍
模型融合是比赛后期一个重要的环节,大体来说有如下的类型方式。
- 简单加权融合:
回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);分类:投票(Voting);综合:排序融合(Rank averaging),log融合。 - stacking/blending:
构建多层模型,并利用预测结果再拟合预测。 - boosting/bagging(在xgboost,Adaboost,GBDT中已经用到):
多树的提升方法
3 Stacking相关理论
3.1 什么是 stacking
简单来说 stacking 就是当用初始训练数据学习出若干个基学习器后,将这几个学习器的预测结果作为新的训练集,来学习一个新的学习器。
将个体学习器结合在一起的时候使用的方法叫做结合策略。对于分类问题,我们可以使用投票法来选择输出最多的类。对于回归问题,我们可以将分类器输出的结果求平均值。
上述投票法和平均法都是很有效的结合策略,还有一种结合策略是使用另外一个机器学习算法来将个体机器学习器的结果结合在一起,这个方法就是Stacking。
在stacking方法中,我们把个体学习器叫做初级学习器,用于结合的学习器叫做次级学习器或元学习器(metalearner),次级学习器用于训练的数据叫做次级训练集。次级训练集是在训练集上用初级学习器得到的。
3.2 如何进行 stacking
以上是我们两层堆叠的一种基本的原始思路想法。在不同模型预测的结果基础上再加一层模型,进行再训练,从而得到模型最终的预测。
Stacking有时对于如果训练集和测试集分布不那么一致的情况下是有一点问题的,其问题在于用初始模型训练的标签再利用真实标签进行再训练,毫无疑问会导致一定的模型过拟合训练集,这样或许模型在测试集上的泛化能力或者说效果会有一定的下降,因此现在的问题变成了如何降低再训练的过拟合性,这里我们一般有两种方法,分别是次级模型尽量选择简单的线性模型和利用K折交叉验证。
4 实现方法
1 回归\分类概率-融合:
简单加权平均,结果直接融合
2 分类模型融合:
对于分类,同样的可以使用融合方法,比如简单投票,Stacking
-
Voting投票机制:
Voting即投票机制,分为软投票和硬投票两种,其原理采用少数服从多数的思想。 -
分类的Stacking\Blending融合:
stacking是一种分层模型集成框架,以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为训练集进行再训练,从而得到完整的stacking模型, stacking两层模型都使用了全部的训练数据。
Blending,其实和Stacking是一种类似的多层模型融合的形式。其主要思路是把原始的训练集先分成两部分,比如70%的数据作为新的训练集,剩下30%的数据作为测试集。在第一层,我们在这70%的数据上训练多个模型,然后去预测那30%数据的label,同时也预测test集的label。在第二层,我们就直接用这30%数据在第一层预测的结果做为新特征继续训练,然后用test集第一层预测的label做特征,用第二层训练的模型做进一步预测。
优点在于:
1.比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)。
2.避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集。
缺点在于:
1.使用了很少的数据(第二阶段的blender只使用training set10%的量)。
2.blender可能会过拟合。
3.stacking使用多次的交叉验证会比较稳健 。
- 分类的Stacking融合(利用mlxtend):