bagging与boosting的区别

bagging与boosting的区别
bagging采用自主采样方法。给定m个样本的数据集,先随机取出一个样本(每个样本的权值相等,也就是说每个样本被取出的概率相等)放入采样集中,在把该样本放回到初始数据集中,使得下次采样时该样本任有可能被选中,这样,经过多次随机采样操作,得到多个样本的采样集,初始训练集中有的样本在采样集中多次出现,有的则从未出现过。在每个采样集中训练出一个基学习器,再将这些基学习器进行组合。这些基学习器之间没有依赖关系。Bagging通常对分类任务进行简单投票法,对回归任务使用简单平均法。典型代表是随机森林。

Boosting方法:是指将弱学习器转化为强学习器的一类算法,把很多个弱学习器组合在一起,形成具有良好的泛化能力的强学习器。每个弱分类器之间存在依赖关系。由于Boosting方法将注意力集中在难分的样本上,使得它对训练样本的噪声非常敏感,会影响最终的分类性能。对于 Boosting 来说,有两个问题需要回答:

一是在每一轮如何如何改变训练数据的概率分布:在上一次分类错误的数据的权值会增加、而分类正确的数据的权值会减小。

二是如何将多个弱分类器组合成一个强分类器:分类错误率小的分类器对应的权值会更大,分类错误率大的分类器对应的权值会更小。

而且boosting存在一个重大的缺陷:该分类算法要求预先知道弱分类器识别准确率的下限。

典型代表是Adaboost(对boosting进行改进)。

区别:

1、样本选择上:

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

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。(不改变所给的训练数据,而不断改变训练数据的权值分布,使得训练数据在弱学习器中起不同的作用)

bagging中的模型是强模型,偏差低,方差高。目标是降低方差。在bagging中,每个模型的bias(偏差)和variance(方差)近似相同,但是互相相关性不太高,因此一般不能降低Bias,而一定程度上能降低variance。典型的bagging是random forest。

boosting中每个模型是弱模型,偏差高,方差低。目标是通过平均降低偏差。boosting的基本思想就是用贪心法最小化损失函数,显然能降低偏差,但是通常模型的相关性很强,因此不能显著降低variance。典型的Boosting是adaboost,另外一个常用的并行Boosting算法是GBDT(gradient boosting decision tree)。这一类算法通常不容易出现过拟合。

2、样例权重:

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

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

3、预测函数:

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

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

4、并行计算:

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

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。(Xgboost除外,它可以并行生成)

猜你喜欢

转载自blog.csdn.net/weixin_44766179/article/details/89039989