Bagging,Boosting,Stacking

  本文主要总结Bagging 和 Boosting 和 Stacking思想的异同点。这三种算法都可以称作为“meta-algorithms”,就是将多个机器学习方法集成到一个模型里面去降低方差,偏差,或者改善模型预测能力。通常bagging可以降低variance,boosting可以降低bias,stacking可以改善模型预测能力。

  这三种算法都包含以下两个步骤:

  • 在原始数据的子集样例上产生一个简单的ML模型分布。
  • 将这个分布的模型集成到一个模型当中。


在多分类问题当中,常用到两大类的方法:Ensemble methods 和 Hybrid methods。Ensemble methods:主要是指将多个相同的学习模型集成到一起。最常见的方法里面有Bagging 和 Boosting,它们可以使弱分类器组成强分类器。Hybrid methods:主要是指将不同的学习模型集成到一起组成一个新的学习模型。最常见的方法里面有Stacking (or stacked generation)

下面着重总结bagging 和 boosting 的异同点。

1.Bagging (booststrap aggregating)

具体算法过程如下:

a> 先从原始样本集中抽取训练集。有放回的抽样n个训练样本,其中某些样本可能被多次抽到,而有些样本也可能一次没有抽到。共进行k轮抽取,得到k个训练集。(大约有1/3不会被抽到)  

b>每次使用一个训练集得到一个模型,k个训练集共得到k个模型。

c>对于分类模型:最后结果采取k个模型投票的方式得到分类结果;对于回归问题:计算上述模型的均值得到最好的结果。(所有模型的重要性相同)

>>bagging只是通过增大训练集合的个数来降低预测的方差。(仅仅改变训练数据,不改变模型)

2.Boosting

最主要的思想是将弱分类器组装成一个强分类器,在PCA(概率近似正确)框架下,则一定可以将弱分类器组成一个强分类器。

boosting两个核心问题:

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

boosting中每个模型的更新都是和上一个模型相关的。通过提高那些在前一轮被弱分类器分错样例的权值,来使分类器对误分的数据有较好的效果。

b>通过什么方式来组合弱分类器?

通过加法模型使弱分类器线性组合。增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。

>>每一个新的训练子集合包含着上一个模型误分类的数据。

Stacking:

stacking类似于boosting。

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

a>在样本选择上:

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

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

b>样例权重:

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

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

c>预测函数:

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

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

d>并行计算:

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

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

e>作用和目标:

Bagging:目标是降低variance,而不是bias。适合高方差低偏差模型,也就是复杂模型。

Boosting:目标是降低bias,而不是variacne,适合低方差高偏差模型。

4.总结

Bagging 和Boosting 方法都是将多个分类器集成到一个分类器,只是集成的方法不一样。最后集成模型提高了单一分类器的效果,同时增大了计算量。

常用的算法组合:

Bagging +决策树=随机森林

AdaBoost+决策树=提升树

Gradient Boosting+决策树=GBDT

5.reference

1. http://www.cnblogs.com/liuwu265/p/4690486.html

2.https://stats.stackexchange.com/questions/18891/bagging-boosting-and-stacking-in-machine-learning

3.https://people.cs.pitt.edu/~milos/courses/cs2750-Spring04/lectures/class23.pdf

4.http://quantdare.com/dream-team-combining-classifiers-2/

5.https://quantdare.com/what-is-the-difference-between-bagging-and-boosting/

原文地址:https://www.cnblogs.com/makino/p/9670216.html

时间: 2024-11-05 22:54:39

Bagging,Boosting,Stacking的相关文章

机器学习入门-集成算法(bagging, boosting, stacking)

目的:为了让训练效果更好 bagging:是一种并行的算法,训练多个分类器,取最终结果的平均值 f(x) = 1/M∑fm(x) boosting: 是一种串行的算法,根据前一次的结果,进行加权来提高训练效果 stacking; 是一种堆叠算法,第一步使用多个算法求出结果,再将结果作为特征输入到下一个算法中训练出最终的预测结果 1.Bagging:全程boostap aggregation(说白了是并行训练一堆分类器) 最典型的算法就是随机森林 随机森林的意思就是特征随机抽取,即每一棵数使用60

Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting的区别

引自http://blog.csdn.net/xianlingmao/article/details/7712217 Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting 这些术语,我经常搞混淆,现在把它们放在一起,以示区别.(部分文字来自网络,由于是之前记的笔记,忘记来源了,特此向作者抱歉) Bootstraping: 名字来自成语"pull up by your own

快速理解bootstrap,bagging,boosting,gradient boost-三个概念

1 booststraping:意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法,它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法. 其核心思想和基本步骤如下: (1)采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样. (2)根据抽出的样本计算统计量T. (3)重复上述N次(一般大于1000),得到统计量T. (4)计算上述N个统计量T的样本方差,得到统计量的方差. 应该说是Bootstrap是现代统计学较为流行的方法,小样本效果好,通过

Bootstrap aggregating (Bagging) & Boosting

Booststrap aggregating (有些地方译作:引导聚集),也就是通常为大家所熟知的bagging.在维基上被定义为一种提升机器学习算法稳定性和准确性的元算法,常用于统计分类和回归中. 而Boosting在维基中被定义为一种主要用来减少偏差(Bias)和同时也可降低方差(Variance)的机器学习元算法,是一个将弱学习器转化为强学习器的机器学习算法族.最初由Kearns 和 Valiant (1988,1989)提出的一个问题发展而来:Can a set of weak lear

集成学习:随机森林.GBDT

集成学习(Ensemble Learning) 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate < 0.5): 集成算法的成功在于保证弱分类器的多样性(Diversity).而且集成不稳定的算法也能够得到一个比较明显的性能提升 常见的集成学习思想有: Bagging Boosting Stacking Why need Ensemble Learning? 1. 弱分

机器学习高阶训练营知识点一览

第一阶段 机器学习基础与凸优化  [核心知识点] - KNN,Weighted KNN.近似KNN - KD树,近似KD树.哈希算法.LSH - 岭回归.LASSO.ElasticNet - 正则:L1, L2, L-inifity Norm - LR.GD.SGD.小批量SGD - 凸集,凸函数.判定凸函数 - LP.QP.ILP.SDP问题 - Duality,Strong Duality.KKT条件 - 带条件/无条件优化问题.Projected GD - 平滑函数.Convergence

bootstrap, boosting, bagging 几种方法的联系

http://blog.csdn.net/jlei_apple/article/details/8168856 这两天在看关于boosting算法时,看到一篇不错的文章讲bootstrap, jackknife, bagging, boosting, random forest 都有介绍,以下是搜索得到的原文,没找到博客作者的地址, 在这里致谢作者的研究. 一并列出一些找到的介绍boosting算法的资源: (1)视频讲义,介绍boosting算法,主要介绍AdaBoosing    http:

转载:bootstrap, boosting, bagging 几种方法的联系

转:http://blog.csdn.net/jlei_apple/article/details/8168856 这两天在看关于boosting算法时,看到一篇不错的文章讲bootstrap, jackknife, bagging, boosting, random forest 都有介绍,以下是搜索得到的原文,没找到博客作者的地址, 在这里致谢作者的研究. 一并列出一些找到的介绍boosting算法的资源: (1)视频讲义,介绍boosting算法,主要介绍AdaBoosing    htt

集成学习算法总结----Boosting和Bagging(转)

1.集成学习概述 1.1 集成学习概述 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高.目前接触较多的集成学习主要有2种:基于Boosting的和基于Bagging,前者的代表算法有Adaboost.GBDT.XGBOOST.后者的代表算法主要是随机森林. 1.2 集成学习的主要思想 集成学习的主要思想是利用一定的手段学习出多个分类器,而且这多个分类器要求是弱分类器,然后将多个分类器进行组合公共预测.核心思想就是如何训练处多个弱分类器以及如何将这些