Bagging与Boosting的联系与区别

Bagging与Boosting的联系与区别,第1张

Bagging算法所利用的预测数据就是通过Bootstrap方法得到的,Bootstrap方法是非参数统计上的一种抽样方法,实质就是对观测数据进行抽样,通过新抽样样本对总体分布特征进行推断。例如我们熟知的随机森林算法中不同的分类回归树,所利用的数据集就是通过Boostrap方法重抽样得到的。而利用Boostrap方法所做的好处是避免了做交叉验证时的样本量少的问题。同时重抽样后的数据可以得到相较于原观测数据少的噪声点,所以更能获得好的分类器。

Boostrap步骤:

当然Bootstrap方法适合于小样本,难以有效划分训练集和测试集时很有用,在做集成学习中,样本集往往通过Bootstrap方法来获取,倘若样本足够多,那么交叉验证会比Bootstrap更好。

在理解了Bootsrap抽样方法后,Bagging实际就是对重抽样的多个样本集,分别建立一个分类器,进行并行模型训练。由于每个分类器之间相互独立,所以Bagging与只训练一个弱分类器相比,复杂度是相同的,所以这是一个高效的集成算法!利用Bagging的好处是它能在提高准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。并且由于利用的Boostrap方法,所以能减少噪音的影响,体现样本真实的分布情况。

Bagging的算法流程为:

通过这个流程可以看出,由于是投票选出最终的预测结果,从而可以获得很高的精度,降低泛化误差,但是弊端就是如果对于某一块,大多数分类器给出了一个错误分类,最终分类的结果也会错误。所以Bagging就没有考虑到对于分类器错分类,或者说性能差的地方做出调整。

那我们在什么时候会利用到Bagging呢? 学习算法不稳定的时候,例如神经网络、kNN算法、线性回归子集选取等,这些都是不稳定的(弱学习算法),如果利用Bagging,则可以增强原算法,倘若原算法本身就有很高的稳定性,使用Bagging可能会适得其反。

随机森林(Random Forest)就是一个很好的利用Bagging的模型,他采用的弱分类器是决策树算法,在此基础上,引入了一个随机属性选择,这使得每个分类器的差异度增加,进而提升集成后的模型泛化能力。这里不对RF展开叙述,读者可参看以下相关参考。

相关参考:

与Bagging一样,Boosting也是集成算法中重要的算法,他与Bagging不同的是,Bagging采取的是并行计算,而Boosting是串行计算,对多个模型预测结果相加得到最终的结果。

在之前我们也说过,Bagging没有考虑在基学习器性能差的地方做出调整,所以Boosting在整个运行机制上做出了改进,具体可描述为:先用基学习器在初始训练集中训练,再根据基学习器表现对预测错的样本赋予更大的权值,从而在后续的学习器训练中受到更多的关注。这样根据基学习器对样本分布做出调整后,再将其训练下一个基学习器,反复分布迭代,从而达到指定值。所以Boosting是基于权值的弱分类器集成!

Boosting的算法流程:

在Boosting的框架基础上,还提出了AdaBoost (Adaptive Boosting), GBDT(Gradient Boosting Decision Tree), XGBoost(eXtreme Gradient Boosting),lightGBM(Light Gradient Boosting Machine)等。其中最具代表性的算法是AdaBoost,结合Boosting的算法流程,Adaboost主要是通过对迭代后的分类器权值与分类器的线性组合作为最终的分类器。其中最关键的就是如何得到权值的更新公式,而这是通过最小化AdaBoost的基本分类器的损失函数得到的。

下面对权值的更新进行推导:

AdaBoost的算法流程:

AdaBoost系列主要解决了: 两类问题、多类单标签问题、多类多标签问题、大类单标签问题,回归问题等,并且在实现过程中简单高效,没有超参数调节,但是Adaboost对于噪音数据和异常数据十分敏感,这种异常样本在迭代中可能会获得较高的权重,影响预测结果。此外,当其中的基分类器是分类回归树时,此时就变成了提升树,这里不阐述。

相关参考:

Bagging和Boosting都是集成学习的两种主流方法,都是由弱分类器融合成强分类器。

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

Adaboost算法已被证明是一种有效而实用的Boosting算法。该算法是Freund和Schapire于1995年对Boosting算法的改进得到的,其算法原理是通过调整样本权重和弱分类器权值,从训练出的弱分类器中筛选出权值系数最小的弱分类器组合成一个最终强分类器。基于训练集训练弱分类器,每次下一个弱分类器都是在样本的不同权值集上训练获得的。每个样本被分类的难易度决定权重,而分类的难易度是经过前面步骤中的分类器的输出估计得到的。

Adaboost算法在样本训练集使用过程中,对其中的关键分类特征集进行多次挑选,逐步训练分量弱分类器,用适当的阈值选择最佳弱分类器,最后将每次迭代训练选出的最佳弱分类器构建为强分类器。其中,级联分类器的设计模式为在尽量保证感兴趣图像输出率的同时,减少非感兴趣图像的输出率,随着迭代次数不断增加,所有的非感兴趣图像样本都不能通过,而感兴趣样本始终保持尽可能通过为止。

1 先通过对N个训练样本的学习得到第一个弱分类器

2 将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器

3 将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器

4 最终经过提升的强分类器。即某个数据被分为哪一类要由各分类器权值决定

由Adaboost算法的描述过程可知,该算法在实现过程中根据训练集的大小初始化样本权值,使其满足均匀分布,在后续 *** 作中通过公式来改变和规范化算法迭代后样本的权值。样本被错误分类导致权值增大,反之权值相应减小,这表示被错分的训练样本集包括一个更高的权重。这就会使在下轮时训练样本集更注重于难以识别的样本,针对被错分样本的进一步学习来得到下一个弱分类器,直到样本被正确分类。在达到规定的迭代次数或者预期的误差率时,则强分类器构建完成。

(1)很好的利用了弱分类器进行级联

(2)可以将不同的分类算法作为弱分类器

(3)AdaBoost具有很高的精度

(4)相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定

(2)数据不平衡导致分类精度下降

(3)训练比较耗时,每次重新选择当前分类器最好切分点

看到这个算法你是不是似曾相识?对,他们都是由多个弱算法组合成一个强算法的原理。印证了“三个臭皮匠赛过诸葛亮”。但是其实他们棣属于不同的算法框架:

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

2)AdaBoost + 决策树 = 提升树

那么bagging和boosting分别是什么呢?

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

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

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

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

其主要思想是将弱分类器组装成一个强分类器。在PAC(概率近似正确)学习框架下,则一定可以将弱分类器组装成一个强分类器。关于Boosting的两个核心问题:

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

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

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

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

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

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

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

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

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

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

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

Adaboost算法基本原理就是将多个弱分类器弱分类器一般选用单层决策树进行合理的结合,使其成为一个强分类器。

资料扩展:

Boosting,也称为增强学习或提升法,是一种重要的集成学习技术,能够将预测精度仅比随机猜度略高的弱学习器增强为预测精度高的强学习器,这在直接构造强学习器非常困难的情况下,为学习算法的设计提供了一种有效的新思路和新方法。

作为一种元算法框架,Boosting几乎可以应用于所有目前流行的机器学习算法以进一步加强原算法的预测精度,应用十分广泛,产生了极大的影响。而AdaBoost正是其中最成功的代表,被评为数据挖掘十大算法之一。

在AdaBoost提出至今的十几年间,机器学习领域的诸多知名学者不断投入到算法相关理论的研究中去,扎实的理论为AdaBoost算法的成功应用打下了坚实的基础。

AdaBoost的成功不仅仅在于它是一种有效的学习算法,还在于它让Boosting从最初的猜想变成一种真正具有实用价值的算法;算法采用的一些技巧,如:打破原有样本分布,也为其他统计学习算法的设计带来了重要的启示;相关理论研究成果极大地促进了集成学习的发展。

以上就是关于Bagging与Boosting的联系与区别全部的内容,包括:Bagging与Boosting的联系与区别、分类算法 - adaboost、adaboost算法的基本原理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10095821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存