模型融合即Ensemble Generation,指的是将多个不同的Base Model组合成一个Ensemble Model的方法。它可以同时降低最终模型的bias和Variance。从而在提高分数的同时又降低过拟合的风险。
常见的Ensemble方法有以下几种:
1.Bagging:使用训练数据的不同随机子集来训练每个Base Model,最后进行每个基本模型权重相同的投票,即随机森林原理 。
2.Boosting:迭代地训练Base Model,每次根据上一个迭代中预测错误的情况修改训练样本的权重。也即Gradient Boosting,Adaboost的原理。比Bagging效果好,但是更容易过拟合。
上述两种之间的区别:(1)样本选择上:Bagging是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
(2)样例权重:Bagging:使用均匀取样,每个样例的权重相等。Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
(3)预测函数:Bagging:所有预测函数的权重相等。Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
(4)并行计算:Bagging:每个预测函数可以并行生成。Boosting:每个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
3.Blending:用不相交的数据训练不同的基本模型,将它们的输出取(加权)平均。实现简单,但对训练数据利用少了。
4.Stacking:(1)拆解训练集:将训练数据随机且大致均匀的拆为m份
(2)在拆解后的训练集上训练模型,同时在测试集预测。利用m-1份训练数据进行训练,预测剩余一份;在此过程进行的同时,利用相同的m-1份数据训练,在真正的测试集上预测;如此重复m次,将训练集上m次结果叠加为1列,将测试集上m次结果取均值融合为1列。
(3)使用k个分类器重复2过程。将分别得到k列训练集的预测结果,k列测试集预测结果。
(4)训练3过程得到的数据。将k列训练集预测结果和训练集真实label进行训练,将k列测试集预测结果作为测试集。