集成学习与模型融合

https://www.hrwhisper.me/machine-learning-model-ensemble-and-bagging/


image.png

如果硬要把集成学习进一步分类,可以分为两类,一种是把强分类器进行强强联合,使得融合后的模型效果更强,称为模型融合。另一种是将弱分类器通过学习算法集成起来变为很强的分类器,称为机器学习元算法

这里我们把用来进行融合的学习器称为个体学习器。

模型融合的代表有:投票法(Voting)、线性混合(Linear Blending)、Stacking。

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

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

不过也有说法是:
(1)用于减少方差的bagging(样本存在重叠导致分布的差异即方差缩小)
(2)用于减少偏差的boosting(每一次迭代都根据上一次迭代的预测结果对样本进行加权,所以随着迭代不断进行,误差会越来越小,所以模型的 bias 会不断降低。)
(3)用于提升预测结果的stacking


模型融合:

上面提到,模型融合是把强分类器进行强强联合,变得更强。

在进行模型融合的时候,也不是说随意的融合就能达到好的效果。进行融合时,所需的集成个体(就是用来集成的模型)应该好而不同。好指的是个体学习器的性能要好,不同指的是个体模型的类别不同。

这里举个西瓜书的例子,在介绍例子之前,首先提前介绍简单投票法,以分类问题为例,就是每个分类器对样例进行投票,哪个类别得到的票数最多的就是融合后模型的结果。

image.png

在上面的例子中,采用的就是简单的投票法。中间的图b各个模型输出都一样,因此没有什么效果。第三个图c每个分类器的精度只有33%,融合后反而更糟。也就是说,想要模型融合有效果,个体学习器要有一定的准确率,并且要有多样性,学习器之间具有差异,即”好而不同“。

如何做到好而不同呢?

可以由下面几个方面:

  • 针对输入数据:使用采样的方法得到不同的样本(比如bagging方法采用自助法进行抽样)

  • 针对特征:对特征进行抽样

  • 针对算法本身:

  1. 个体学习器ht来自不同的模型集合(LR/SVM)
  2. 个体学习器ht来自于同一个模型集合的不同超参数,例如学习率η不同
  3. 算法本身具有随机性,例如用不同的随机种子来得到不同的模型
  • 针对输出:对输出表示进行操纵以增强多样性
  1. 如将多分类转化为多个二分类任务来训练单模型
  2. 将分类输出转化为回归输出等

进行模型融合为什么比较好呢?

学习器的结合可能会从三个方面带来好处:

首先,从统计的方面来看,由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到相同的性能,此时若使用单学习器,可能因误选而导致泛化性能不佳,结合多个学习器则会减少这一风险;

第二,从计算的方面来看,学习算法往往会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险;

第三,从表示的方面来看,某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器则肯定无效,而通过结合多个学习器,由于相应的假设空间有所扩大,有可能学得更好的近似。

image.png

投票和平均 Voting and Average

分类

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

简单投票法(一人一票):

  • 即各个分类器输出其预测的类别,取对应类别最高票作为结果。若有多个类别都是最高票,那么随机选取一个。,或者

加权投票法(投一票相当于人家两票):

  • 和上面的简单投票法类似,不过多了个权重

  • 使用类概率进行结合往往比直接基于类标记的效果好,即使分类器估计出的概率值一般都不太准确。


回归

简单平均(所有估计值求平均):
加权平均:

对于回归任务来说,采用的为平均法。

你可能感兴趣的:(集成学习与模型融合)