模型融合

模型融合

集成学习可以分为两类:(1)把强分类器进行强强联合,使得融合后的模型效果更强,称为模型融合;(2)将弱分类器通过学习算法集成起来变为很强的分类器,称为机器学习元算法
模型融合常有的做法:投票法、线性混合、Stacking;

机器学习元算法又可以根据个体学习器之间是否存在依赖关系分为两类,称为BaggingBoosting:

  • Bagging: 个体学习器不存在依赖关系,可同时对样本随机采样并行化生成个体学习器。代表作为随机森林(Random Forest)
  • Boosting: 个体学习器存在依赖关系,基于前面模型的训练结果误差生成新的模型,必须串行化生成。代表的算法有:Adaboost、GBDT、XGBoost.
投票法

分类
对于分类任务来说,可以使用投票的方法:

  • 简单投票法: H(x)=cargmaxxi=1Thij(x)\ H(x)=c_{argmax_x} \sum^{T}_{i=1}h^j_i(x)
    即各个分类器输出其预测的类别,取最高票对应的类别作为结果。若有多个类别都是最高票,那么随机选取一个。
    加权投票法:  H(x)=cargmaxxi=1Tαihij(x)\ H(x)=c_{argmax_x} \sum^{T}_{i=1} \alpha_i ·h^j_i(x)
    和上面的简单投票法类似,不过多了权重αi,这样可以区分分类器的重要程度,通常
     αi0\ \alpha_i \geq 0 i=1Tαi=1\ \sum^{T}_{i=1}\alpha_i=1
    此外,个体学习器可能产生不同的 hij(x)\ h^j_i(x)的值,比如类标记和类概率。

类标记 hij(x){0,1}\ h^j_i(x) \in \{0,1\},若 hi\ h_i将样本 x\ x预测为类别 cj\ c_j取值为1,否则为0。使用类标记的投票亦称“硬投票”。(其实就是多分类的输出),使用类标记的称为硬投票
类概率 hij(x)[0,1]\ h^j_i(x) \in [0,1],即输出类别为 cj\ c_j的概率。使用类概率的投票称为软投票。对应sklearn中的VotingClassifier中voting参数设为soft。
PS:使用类概率进行结合往往比直接基于类标记的效果好,即使分类器估计出的概率值一般都不太准确。

回归

对于回归任务来说,采用平均法:

  • 简单平均: H(x)=1Ti=1Thi(x)\ H(x)=\frac{1}{T}\sum^T_{i=1}h_i(x)
  • 加权平均: H(x)=1Ti=1Tαihi(x)αi0;i=1Tαi=1\ H(x)=\frac{1}{T}\sum^T_{i=1} \alpha_i ·h_i(x);\alpha_i \geq0;\sum^T_{i=1} \alpha_i=1
Stacking

首先从数据集中训练出初级学习器,然后”生成“一个新的数据集用于训练次级学习器。为了防止过拟合,采用K折交叉验证法求解。
模型融合
假设采用5折交叉验证,每个模型都要做满5次训练和预测,对于每一次:

  • 从80%的数据训练得到一个模型ht,然后预测训练集剩下的那20%,同时也要预测测试集。
  • 每次有20%的训练数据被预测,5次后正好每个训练样本都被预测过了。
  • 每次都要预测测试集,因此最后测试集被预测5次,最终结果取5次的平均。

如果是分类问题,我们对测试集的结果就不能像回归问题一样直接取平均,而是分类器输出所有类别的概率,最后取平均。每个分类器都贡献了类别数个的维度。