Bagging和Boosting 概念及区别

Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法。即将弱分类器组装成强分类器的方法。

1. Bagging (bootstrap aggregating)

Bagging即套袋法,是并行集成学习方法最著名的代表,它是基于自主采样法(Boosting Sampling)来构建基分类器训练样本集合,并基于此进行基分类器的训练,最终通过简单的投票方式决定最终的分类结果。其算法过程如下:

  1. 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)

  2. 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)

  1. 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

2.Boosting

Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器达到事先指定的值T,最终这T个基学习器进行加权结合。Boosting族算法最著名的代表是AdaBoost算法。

关于Boosting的两个核心问题:

1)在每一轮如何改变训练数据的权值或概率分布?

通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。

2)通过什么方式来组合弱分类器?

通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。而提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。

3. Bagging,Boosting二者之间的区别

Bagging和Boosting的区别:

1)样本选择上:

Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2)样例权重:

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

3)预测函数:

Bagging:所有预测函数的权重相等。

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4)并行计算:

Bagging:各个预测函数可以并行生成

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

4. 为什么说bagging是减少方差,而boosting是减少偏差?

Bagging对样本重采样,对每一重采样得到的子样本集训练一个模型,最后取平均。由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的bias和variance(事实上,各模型的分布也近似相同,但不独立)。由于 E [ ∑ X i n ] = E [ X i ] E[\frac{\sum X_i}{n}]=E[X_i] E[nXi]=E[Xi],所以bagging后的bias和单个子模型的接近,一般来说不能显著降低bias。另一方面,若各子模型独立,则有 V a r ( ∑ X i n ) = V a r ( X i ) n Var(\frac{\sum X_i}{n})=\frac{Var(X_i)}{n} Var(nXi)=nVar(Xi),此时可以显著降低variance。若各子模型完全相同,则 V a r ( ∑ X i n ) = V a r ( X i ) Var(\frac{\sum X_i}{n})=Var(X_i) Var(nXi)=Var(Xi)

,此时不会降低variance。bagging方法得到的各子模型是有一定相关性的,属于上面两个极端状况的中间态,因此可以一定程度降低variance。为了进一步降低variance,Random Forest通过随机选取变量子集做拟合的方式de-correlated了各子模型(树),使得variance进一步降低。(用公式可以一目了然:设有i.d.的n个随机变量,方差记为 σ 2 \sigma^2 σ2,两两变量之间的相关性为 ρ \rho ρ,则 ∑ X i n \frac{\sum X_i}{n} nXi的方差为 ρ ∗ σ 2 + ( 1 − ρ ) ∗ σ 2 / n \rho*\sigma^2+(1-\rho)*\sigma^2/n ρσ2+(1ρ)σ2/n,bagging降低的是第二项,random forest是同时降低两项。

boosting从优化角度来看,是用forward-stagewise这种贪心法去最小化损失函数 L ( y , ∑ i a i f i ( x ) ) L(y, \sum_i a_if_i(x)) L(y,iaifi(x)) 例如,常见的AdaBoost即等价于用这种方法最小化exponential loss: L ( y , f ( x ) ) = e x p ( − y f ( x ) ) L(y,f(x))=exp(-yf(x)) L(y,f(x))=exp(yf(x)) 所谓forward-stagewise,就是在迭代的第n步,求解新的子模型 f ( x ) f(x) f(x)及步长 a a a(或者叫组合系数),来最小化 L ( y , f n − 1 ( x ) + a f ( x ) ) L(y,f_{n-1}(x)+af(x)) L(y,fn1(x)+af(x)),这里 f n − 1 ( x ) f_{n-1}(x) fn1(x)是前n-1步得到的子模型的和。因此boosting是在sequential地最小化损失函数,其bias自然逐步下降。但由于是采取这种sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著降低variance。所以说boosting主要还是靠降低bias来提升预测精度。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值