Bagging与Boosting的区别与联系

1 Bagging与Boosting的区别与联系

Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。

1.1 Bagging介绍

  • 用抽样的方式从原始样本中进行有放回的多次抽样(或者是抽特征),这种方法叫做Bootstraping,抽取k次每次抽取n个样本,这样就生成了k个样本容量为n的数据集。原始数据集中的样本可能是多次被抽到也可能是没有被抽到。
  • 每次使用一个数据即选练得到一个模型,这样k个数据集就可以得到k个模型。(模型可以是根据问题来选择,回归或者分类模型都可以)这里就得到了k个弱分类器。
  • 对新的数据使用所有的模型进行分类,然后采用voting的方式来确定结果。统计所有模型的计算结果,然后选出票数最高的那个作为结果。(如果是回归问题则以所有模型的均值作为最终结果。)

1.2 Boosting介绍

boosting与bagging不同的是,bagging是多个模型“并行”,voting决定结果;而boosting是多个模型串行,通过多个模型的结果相加得到最终的结果。

AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)

梯度提升的Boosting方式是使用代价函数对上一轮训练出的模型函数f的偏导来拟合残差。

1.3 Bagging和Boosting的区别:

1. 训练集

  • Bagging:每个训练集都是从原始训练集中有放回的选取出来的,每个训练集各不相同且相互独立。
  • Boosting:每一轮的训练集都是原始选练集,只是每次训练后会根据本轮的训练结果调整训练集中的各个样本的权重,调整完权重的训练集用于下一轮的训练。

2. 样本权重

  • Bagging:使用Bootstraping的方式均匀抽样
  • Boosting:根据每一轮的训练不断调整权值,分类错误的样本拥有更高的权值。

3)弱分类器权重

  • Bagging:所有弱分类器权重相同,使用voting的方式(或均值)决定最终结果
  • Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4)并行计算

  • Bagging:各个预测函数可以并行生成,因为数据集相互独立,每个模型之间也独立,没有序列关系。
  • Boosting:各个预测函数只能顺序生成,因为下一个模型的产生依赖于之前模型的计算结果。

问题:为什么bagging可以减少variance,而boosting是减少bias?

这个问题我给出一个简单的解释并没有严谨的数学证明,(其他博客给出的数学证明我也没看懂,,)

首先需要理解什么是variance什么是bias,这有一张图可以清楚的展示两者的差别。

Bagging与Boosting的区别与联系

这张图来自李宏毅老师机器学习课程中的一张PPT截图,很清楚的展示了variance和bias的区别,两者是在两个维度上产生error,bias是这个估计是有偏的,不是无偏估计,而variance表示对某点的估计过于的散开不够集中。这两者都会使模型产生error。

Bagging与Boosting的区别与联系

所以现在已经知道了Bagging和Boosting可以很大程度上降低error,只不过bagging是通过减少variance从而减少error,而boosting是通过减少bias从而很大程度上降低error。

为什么?

Bagging与Boosting的区别与联系

从这张图可以看出boosting是如何减小bias的。上面说了boosting是基于残差的训练,每次都根据上一次训练留下来的残差训练出新的模型,如图中上侧的过程所示,棕色线表示每次训练的残差,蓝色点表示每次训练完成后的模型累加上之前的模型的预测情况,可以看到逐步减少bias的过程。

Bagging与Boosting的区别与联系

从这张图可以看出来bagging是通过减少variance的,中心的红点表示真实值。绿圈中的红点表示多次采样形成的不同数据集,从而训练出不同的模型,然后对新数据预测后多个模型取平均,就到达了蓝点的位置,这展示了bagging如何减少variance的过程,这张图可能画的不是很恰当。就是说很多弱分类器取平均像是一个互相修正的过程,从而使得预测结果更集中,从而减少variance。

从而引出了另一个问题:

问题:为什么bagging适用于由容易overfitting弱分类器构成,boosting适用于由容易underfitting弱分类器构成?

因为过拟合往往导致variance过大,而bagging可以减少variance;欠拟合往往导致bias过大,而boosting可以减少bias。这里有一张图可以很清楚的展示。

Bagging与Boosting的区别与联系