模型融合
模型融合是将多种调参完成的模型进行融合 。
1.简单加权融合:
- 回归(或分类输出为概率)的数值型输出:平均法
- 算术平均(简单、加权)
- 几何平均 - 分类:投票(Voting)
- 绝对多数投票法
- 相对多数投票法
- 加权投票法
- 综合:排序融合(Rank averaging),log融合
2.stacking
构建多层模型,并利用预测结果再拟合预测。
-
什么是stacking
简单来说,就是当用训练数据学习出若干个基学习器后,将多个基学习器的预测结果作为新的训练集,来学习一个新的学习器。
注:在stacking方法中,我们把个体学习器叫做初级学习器,用于结合的学习器叫做次级学习器或元学习器(meta-learner),次级学习器用于训练的数据叫做次级训练集。次级训练集是在训练集上用初级学习器得到的。 -
如何进行stacking
算法如下:
- 过程1-3是训练的个体学习器的,也就是初级学习器。
- 过程5-9是使用初级学习器来预测结果,并将预测结果与真实样本标签合并,形成新的数据集作为次级学习器的训练集。
- 过程11 使用次级学习器学习新的数据集,预测的结果便是最后的结果。
- 降低过拟合
使用初级学习器训练的标签再利用真实标签进行再训练,容易导致过拟合,一般可使用两种方法解决:- 次级模型尽量选择简单的线性模型
- 利用k折交叉验证
3.blending
blending是与stacking类似的多层模型融合模式,大致流程如下:
- 将原始数据集划分为训练集和测试集,其中训练集需要再次划分为训练集和验证集。
- 使用多个初级学习器对训练集进行训练,然后用训练好的模型对验证集和测试集进行预测。
- 使用第2步中得到的验证集的预测结果作为新的训练数据,与真实样本标签合并,形成新的数据集作为次级学习器的训练集。
- 使用次级学习器对第2步中的测试集预测结果,再进行预测,得到最后的预测结果。
blending与stacking对比
- 优点:
- 比stacking简单(因为不用进行k次的交叉验证)
- 避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集
- 缺点:
- 使用了很少的数据(是用holdout划分测试集,并非cv)
- blender可能会过拟合
- stacking使用多次的CV会比较稳健
【 参考资料】
1、天池新手赛
2、西瓜书