模型融合

一、有哪些模型融合方法

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