Bagging与Boosting的区别与联系

20 篇文章 4 订阅
9 篇文章 1 订阅

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,这有一张图可以清楚的展示两者的差别。

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

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

为什么?

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

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

从而引出了另一个问题:

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

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

  • 78
    点赞
  • 395
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: bagging:是一种集成学习方法,通过对训练数据进行有放回的随机抽样,生成多个子集,然后在每个子集上训练一个基学习器,最后将这些基学习器的预测结果进行平均或投票来得到最终的预测结果。 boosting:也是一种集成学习方法,但与bagging不同的是,它是通过对训练数据进行加权,使得基学习器更加关注那些难以分类的样本,从而提高整体的预测准确率。 stacking:是一种更加高级的集成学习方法,它不仅仅是将多个基学习器的预测结果进行简单的平均或投票,而是将这些预测结果作为新的特征,再训练一个元学习器来得到最终的预测结果。 ### 回答2: BaggingBoosting和Stacking都是集成学习(Ensemble Learning)中常用的方法。 Bagging(自举汇聚法)是一种并行集成方法,基于自助采样的思想,通过构建多个相互独立的分类器(如决策树),再进行投票或求平均等方式进行集成。每个子分类器都是在不同的训练数据集上训练得到的,可以减少模型的方差,提高模型的稳定性,有效降低过拟合风险。 Boosting(提升法)则是一种串行集成方法,通过迭代训练一系列弱分类器(如决策树),通过不断调整样本权重以使错误样本更加关注,然后再结合所有弱分类器形成一个强分类器。Boosting可以提高模型的准确性,特别适用于处理复杂的分类问题。 Stacking(堆叠泛化法)是一种更为复杂的集成方法,它结合了BaggingBoosting的优势。在Stacking中,首先构建多层的分类器(如基分类器、元分类器等),每层的输出作为下一层的输入。最后通过一个元分类器来整合各层的输出结果,以获得最终的预测结果。 总结起来,Bagging通过并行地构建多个相互独立的分类器进行集成,Boosting通过迭代地训练一系列弱分类器形成一个强分类器,而Stacking通过构建多层的分类器以获得更强大的预测能力。这些集成方法在实际应用中,能够有效提高分类模型的准确性和稳定性,达到更好的预测效果。 ### 回答3: BaggingBoosting和Stacking都是常用于集成学习(ensemble learning)中的方法。 Bagging是基于自助采样(bootstrap sampling)的一种集成学习方法。在Bagging中,我们从原始数据集中使用有放回地进行采样得到多个不同的子样本集,并使用这些子样本集独立地训练多个基学习器。最后,通过对基学习器的预测结果进行投票或求平均来得到最终的集成模型。Bagging能够减少过拟合,提高模型的稳定性和泛化能力。 Boosting也是一种集成学习方法,与Bagging不同的是它是基于序列训练的。在Boosting中,基学习器是按顺序训练的,每个基学习器都会根据前一个学习器的预测结果对样本进行调整。Boosting的核心思想是通过迭代训练一系列弱学习器,使得它们能够逐步提升性能并最终形成一个强学习器。常用的Boosting算法有AdaBoost和Gradient Boosting。 Stacking是一种更高级的集成学习方法,它将多个不同类型的基学习器集成在一起。在Stacking中,我们首先使用训练数据集对多个基学习器进行训练,然后使用这些基学习器对测试数据集进行预测。接着,我们将基学习器的预测结果作为输入,再训练一个元学习器来得到最终的集成模型。Stacking通过将不同类型的基学习器进行组合,可以充分利用它们的优势,提高模型的性能和泛化能力。 综上所述,BaggingBoosting和Stacking都是集成学习中常用的方法,它们通过组合多个基学习器来提高模型的性能和泛化能力,从而在实际应用中取得更好的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值