Bagging和Boosting 概念及区别

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

首先介绍Bootstraping,即自助法:它是一种有放回的抽样方法(可能抽到重复的样本)。算法

一、Bagging (bootstrap aggregating)bootstrap

Bagging即套袋法,其算法过程以下:api

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

B)每次使用一个训练集获得一个模型,k个训练集共获得k个模型。(注:这里并无具体的分类算法或回归方法,咱们能够根据具体问题采用不一样的分类或回归方法,如决策树、感知器等)机器学习

C)对分类问题:将上步获得的k个模型采用投票的方式获得分类结果;对回归问题,计算上述模型的均值做为最后的结果。(全部模型的重要性相同)函数

 

二、Boosting性能

其主要思想是将弱分类器组装成一个强分类器。在PAC(几率近似正确)学习框架下,则必定能够将弱分类器组装成一个强分类器。学习

关于Boosting的两个核心问题:spa

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

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

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

经过加法模型将弱分类器进行线性组合,好比AdaBoost经过加权多数表决的方式,即增大错误率小的分类器的权值,同时减少错误率较大的分类器的权值。

而提高树经过拟合残差的方式逐步减少残差,将每一步生成的模型叠加获得最终模型。

 

三、Bagging,Boosting两者之间的区别

Bagging和Boosting的区别:

1)样本选择上:

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

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

2)样例权重:

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

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

3)预测函数:

Bagging:全部预测函数的权重相等。

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

4)并行计算:

Bagging:各个预测函数能够并行生成

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

 

四、总结

这两种方法都是把若干个分类器整合为一个分类器的方法,只是整合的方式不同,最终获得不同的效果,将不一样的分类算法套入到此类算法框架中必定程度上会提升了原单一分类器的分类效果,可是也增大了计算量。

下面是将决策树与这些算法框架进行结合所获得的新的算法:

1)Bagging + 决策树 = 随机森林

2)AdaBoost + 决策树 = 提高树

3)Gradient Boosting + 决策树 = GBDT

 

 

参考文献

[1] 林轩田,机器学习技法。

[2] IRLAB, http://www.cnblogs.com/guolei/archive/2013/05/21/3091301.html

[3] 百度技术,http://baidutech.blog.51cto.com/4114344/743809/