ML中Boosting和Bagging的比較

说到ML中Boosting和Bagging,他们属于的是ML中的集成学习,集成学习法(Ensemble Learning)

①  将多个分类方法聚集在一起。以提高分类的准确率。

(这些算法能够是不同的算法,也能够是同样的算法。)

②  集成学习法由训练数据构建一组基分类器,然后通过对每一个基分类器的预測进行投票来进行分类

③  严格来说,集成学习并不算是一种分类器,而是一种分类器结合的方法。

④  通常一个集成分类器的分类性能会好于单个分类器

⑤  假设把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一项决策。

下图形象的表示了集成学习的思路


要掌握集成学习法,我们会提出下面两个问题:

1)怎么训练每一个算法?

2)怎么融合每一个算法?

因此,bagging方法和boosting方法应运而生


Bagging

①  Bagging又叫自助聚集(BootstrapAggregating),是一种依据均匀概率分布从数据中反复抽样(有放回)的技术。

②  每一个抽样生成的自助样本集上,训练一个基分类器。对训练过的分类器进行投票。将測试样本指派到得票最高的类中。

③  每一个自助样本集都和原数据一样大

④  有放回抽样,一些样本可能在同一训练集中出现多次,一些可能被忽略。


图解如上所看到的

例子:

X 表示一维属性,Y 表示类标号(1或-1)測试条件:当x<=k时,y=?。当x>k时。y=?;k为最佳分裂点。

下表为属性x相应的唯一正确的y类别


如今进行5轮随机抽样,结果例如以下





每一轮随机抽样后,都生成一个分类器 然后再将五轮分类融合

对照符号和实际类,我们能够发现:在该例子中,Bagging使得准确率可达90%

由此,总结一下bagging方法:

 Bagging通过减少基分类器的方差。改善了泛化误差

②  其性能依赖于基分类器的稳定性。假设基分类器不稳定。bagging有助于减少训练数据的随机波动导致的误差。假设稳定。则集成分类器的误差主要由基分类器的偏倚引起

③  由于每一个样本被选中的概率同样,因此bagging并不側重于训练数据集中的不论什么特定实例


Boosting

训练过程为阶梯状。基模型按次序一一进行训练(实现上能够做到并行),基模型的训练集依照某种策略每次都进行一定的转化。对全部基模型预測的结果进行线性综合产生终于的预測结果:


① boosting是一个迭代的过程,用于自适应地改变训练样本的分布,使得基分类器聚焦在那些非常难分的样本上

② boosting会给每一个训练样本赋予一个权值,并且能够再每轮提升过程结束时自己主动地调整权值。

開始时。全部的样本都赋予同样的权值1/N,从而使得它们被选作训练的可能性都一样。

依据训练样本的抽样分布来抽取样本,得到新的样本集。

然后,由该训练集归纳一个分类器,并用它对原数据集中的全部样本进行分类。每轮提升结束时,更新训练集样本的权值。添加被错误分类的样本的权值。减小被正确分类的样本的权值,这使得分类器在随后的迭代中关注那些非常难分类的样本。


Boosting和Bagging对照

  • 模型

1)样本选择上

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

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

2)例子权重:

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

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

3)预測函数:

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

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

4)并行计算:

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

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

  • 偏差和方差

对于bagging来说,每一个基模型的权重等于1/m且期望近似相等(子训练集都是从原训练集中进行子抽样),故我们能够进一步化简得到:


依据上式我们能够看到,总体模型的期望近似于基模型的期望。这也就意味着总体模型的偏差和基模型的偏差近似。

同一时候,总体模型的方差小于等于基模型的方差(当相关性为1时取等号)。随着基模型数(m)的增多,总体模型的方差减少。从而防止过拟合的能力增强,模型的精确度得到提高。

可是,模型的精确度一定会无限逼近于1吗?并不一定,当基模型数添加到一定程度时,方差公式第二项的改变对总体方差的作用非常小,防止过拟合的能力达到极限。这便是精确度的极限了。另外。在此我们还知道了为什么bagging中的基模型一定要为强模型。否则就会导致总体模型的偏差度低,即精确度低。

Random Forest是典型的基于bagging框架的模型,其在bagging的基础上,进一步减少了模型的方差。

Random Fores中基模型是树模型,在树的内部节点分裂过程中。不再是将全部特征,而是随机抽样一部分特征纳入分裂的候选项。

这样一来,基模型之间的相关性减少,从而在方差公式中,第一项显著减少。第二项略微添加,总体方差仍是减少。

对于boosting来说,基模型的训练集抽样是强相关的,那么模型的相关系数近似等于1,故我们也能够针对boosting化简公式为:


通过观察总体方差的表达式,我们easy发现,若基模型不是弱模型。其方差相对较大,这将导致总体模型的方差非常大,即无法达到防止过拟合的效果。

因此,boosting框架中的基模型必须为弱模型。

  由于基模型为弱模型,导致了每一个基模型的精确度都不是非常高(由于其在训练集上的精确度不高)。随着基模型数的增多,总体模型的期望值添加,更接近真实值,因此。总体模型的精确度提高。

可是精确度一定会无限逼近于1吗?仍然并不一定,由于训练过程中精确度的提高的主要功臣是总体模型在训练集上的精确度提高,而随着训练的进行,总体模型的方差变大。导致防止过拟合的能力变弱,终于导致了精确度反而有所下降。

基于boosting框架的Gradient Tree Boosting模型中基模型也为树模型,同RandomForrest,我们也能够对特征进行随机抽样来使基模型间的相关性减少,从而达到减少方差的效果。

  • 其他

Bagging对样本重採样。对每一重採样得到的子样本集训练一个模型,最后取平均。由于子样本集的类似性以及使用的是同种模型。因此各模型有近似相等的bias和variance(其实,各模型的分布也近似同样。但不独立)。bagging后的bias和单个子模型的接近。一般来说不能显著减少bias。还有一方面,若各子模型独立,此时能够显著减少variance。若各子模型全然同样。则 ,此时不会减少variance。bagging方法得到的各子模型是有一定相关性的,属于上面两个极端状况的中间态,因此能够一定程度减少variance。为了进一步减少variance,Random forest通过随机选取变量子集做拟合的方式de-correlated了各子模型(树),使得variance进一步减少。(用公式能够一目了然:设有i.d.的n个随机变量,方差记为 。两两变量之间的相关性为 ,则 的方差为 ,bagging减少的是第二项,random forest是同一时候减少两项。详见ESL p588公式15.1)。 

boosting从优化角度来看。是用forward-stagewise这样的贪心法去最小化损失函数 ,比如。常见的AdaBoost即等价于用这样的方法最小化exponential loss: 。

所谓forward-stagewise。就是在迭代的第n步。求解新的子模型f(x)及步长a(或者叫组合系数),来最小化 ,这里 是前n-1步得到的子模型的和。因此boosting是在sequential地最小化损失函数。其bias自然逐步下降。但由于是採取这样的sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著减少variance。所以说boosting主要还是靠减少bias来提升预測精度。 

结论:bagging主要是减少variance。而boosting主要是减少bias来提升精度

參考:[1] https://www.zhihu.com/question/26760839

            [2] http://blog.csdn.net/hguo11/article/details/70495671

            [3] http://blog.csdn.net/lihaitao000/article/details/52058486

            [4] http://m.blog.csdn.net/article/details?id=49765673




posted @ 2018-04-05 13:19  llguanli  阅读(251)  评论(0编辑  收藏  举报