模型融合
一、有哪些模型融合方法
1. Voting/Averaging
sklearn.ensemble.VotingClassifier
sklearn.ensemble.VotingRegressor
在不改变模型的情况下,直接对各个不同的模型预测结果,进行投票或平均
这种融合的前提条件是模型之间相互独立,结果之间没有相关性。越相近的模型进行融合,融合效果也会越差。
可见模型之间差异越大,融合所得的结果将会更好。这种特性不会受融合方式的影响。
注意:这里所指模型之间的差异,并不是指正确率的差异,而是指模型之间相关性的差异。
对于回归问题,对各种模型的预测结果进行平均,所得到的结果能够减少过拟合,并使得边界更加平滑,单个模型的边界可能很粗糙。
在上述融合方法的基础上,一个进行改良的方式是对各个投票者分配不同的权重,以改变其对最终结果影响的大小。对于正确率低的模型给予更低的权重,而正确率高的模型给予更高的权重。
2. Bagging
sklearn.ensemble.BaggingClassifier
sklearn.ensemble.BaggingRegressor
概念:相同模型不同参数/采样数据集结果的平均,典型例如:random forest
方法: seed、row sampling、shuffling、column sampling、model parameter、model number
3. stacking
步骤:
1)首先我们将训练集分为5份;
2)对于每一个模型来说,我们用其中的四份来训练,然后对未用来训练的一份训练集和测试集进行预测。然后改变训练集和验证集,重复此步骤,直到获得完整的训练集预测结果;
3)对5个模型,分别进行步骤2,将获得5个模型,以及5个模型分别通过交叉验证获得的训练集预测结果,即P1、P2、P3、P4、P5;
4)用5个模型分别对测试集进行预测,得到测试集的预测结果:T1、T2、T3、T4、T5;
5)将P1~5、T1~5作为下一层的训练集和测试集。在图中分别作为了模型6的训练集和测试集。
如下所示
4. Blending
四、模型融合要点
模型融合时,应尽量让在不同模型之间保持差异性:包括特征、算法、参数这几个维度的差异:比如随机选取topN的特征(N随机取值),运用不同算法、相同算法赋予不同的参数引入随机扰动。这些措施增加了模型之间的差异性,使得融合结果有很大提高。
加权融合时,可以采用最大信息系数(MIC)来度量不同模型的差异性,选择差异性较大的模型进行融合。
a. MIC