Bagging与Boosting的区别与联系
1 Bagging与Boosting的区别与联系
Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。
1.1 Bagging介绍
- 用抽样的方式从原始样本中进行有放回的多次抽样(或者是抽特征),这种方法叫做Bootstraping,抽取k次每次抽取n个样本,这样就生成了k个样本容量为n的数据集。原始数据集中的样本可能是多次被抽到也可能是没有被抽到。
- 每次使用一个数据即选练得到一个模型,这样k个数据集就可以得到k个模型。(模型可以是根据问题来选择,回归或者分类模型都可以)这里就得到了k个弱分类器。
- 对新的数据使用所有的模型进行分类,然后采用voting的方式来确定结果。统计所有模型的计算结果,然后选出票数最高的那个作为结果。(如果是回归问题则以所有模型的均值作为最终结果。)
1.2 Boosting介绍
boosting与bagging不同的是,bagging是多个模型“并行”,voting决定结果;而boosting是多个模型串行,通过多个模型的结果相加得到最终的结果。
AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)
梯度提升的Boosting方式是使用代价函数对上一轮训练出的模型函数f的偏导来拟合残差。
1.3 Bagging和Boosting的区别:
1. 训练集
- Bagging:每个训练集都是从原始训练集中有放回的选取出来的,每个训练集各不相同且相互独立。
- Boosting:每一轮的训练集都是原始选练集,只是每次训练后会根据本轮的训练结果调整训练集中的各个样本的权重,调整完权重的训练集用于下一轮的训练。
2. 样本权重
- Bagging:使用Bootstraping的方式均匀抽样
- Boosting:根据每一轮的训练不断调整权值,分类错误的样本拥有更高的权值。
3)弱分类器权重
- Bagging:所有弱分类器权重相同,使用voting的方式(或均值)决定最终结果
- Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算
- Bagging:各个预测函数可以并行生成,因为数据集相互独立,每个模型之间也独立,没有序列关系。
- Boosting:各个预测函数只能顺序生成,因为下一个模型的产生依赖于之前模型的计算结果。
问题:为什么bagging可以减少variance,而boosting是减少bias?
这个问题我给出一个简单的解释并没有严谨的数学证明,(其他博客给出的数学证明我也没看懂,,)
首先需要理解什么是variance什么是bias,这有一张图可以清楚的展示两者的差别。
这张图来自李宏毅老师机器学习课程中的一张PPT截图,很清楚的展示了variance和bias的区别,两者是在两个维度上产生error,bias是这个估计是有偏的,不是无偏估计,而variance表示对某点的估计过于的散开不够集中。这两者都会使模型产生error。
所以现在已经知道了Bagging和Boosting可以很大程度上降低error,只不过bagging是通过减少variance从而减少error,而boosting是通过减少bias从而很大程度上降低error。
为什么?
从这张图可以看出boosting是如何减小bias的。上面说了boosting是基于残差的训练,每次都根据上一次训练留下来的残差训练出新的模型,如图中上侧的过程所示,棕色线表示每次训练的残差,蓝色点表示每次训练完成后的模型累加上之前的模型的预测情况,可以看到逐步减少bias的过程。
从这张图可以看出来bagging是通过减少variance的,中心的红点表示真实值。绿圈中的红点表示多次采样形成的不同数据集,从而训练出不同的模型,然后对新数据预测后多个模型取平均,就到达了蓝点的位置,这展示了bagging如何减少variance的过程,这张图可能画的不是很恰当。就是说很多弱分类器取平均像是一个互相修正的过程,从而使得预测结果更集中,从而减少variance。
从而引出了另一个问题:
问题:为什么bagging适用于由容易overfitting弱分类器构成,boosting适用于由容易underfitting弱分类器构成?
因为过拟合往往导致variance过大,而bagging可以减少variance;欠拟合往往导致bias过大,而boosting可以减少bias。这里有一张图可以很清楚的展示。
Bagging与Boosting的区别与联系相关推荐
- 机器学习中Bagging和Boosting的区别
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 Bagging和Boosting都是将已有的分类或回归算法通过一定 ...
- Bagging和Boosting的区别(面试准备)
Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好. Bagging: 先介绍Bagging方法: Bagging ...
- 【机器学习】Bagging和Boosting的区别(面试准备)
Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好. Bagging: 先介绍Bagging方法: Bagging ...
- 集成模型Bagging和Boosting的区别
Bagging和Boosting的主要区别 Bagging(套袋法) Boosting(提升法) Bagging,Boosting二者的区别 总结 基本概念--偏差.方差 为什么说bagging是减少 ...
- Bagging和Boosting的区别
Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法.即将弱分类器组装成强分类器的方法. 首先介绍Boot ...
- bagging与boosting的区别
bagging 把数据集通过有放回的抽样方式,划分为多个数据集,分别训练多个模型.针对分类问题,按照少数服从多数原则进行投票,针对回归问题,求多个测试结果的平均值 boosting 与Bagging一 ...
- Bagging和Boosting 概念及区别
Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法.即将弱分类器组装成强分类器的方法. 首先介绍Boot ...
- Bagging和Boosting 策略及其区别
转自:Bagging和Boosting 概念及区别:http://www.cnblogs.com/liuwu265/p/4690486.html (仅作为笔记,如有侵权请告知) Bagging和Boo ...
- Jackknife,Bootstrap, Bagging, Boosting, AdaBoost, RandomForest 和 Gradient Boosting的区别
Bootstraping: 名字来自成语"pull up by your own bootstraps",意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法,它是非参数统 ...
- Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting的区别
这些术语,我经常搞混淆,现在把它们放在一起,以示区别.(部分文字来自网络,由于是之前记的笔记,忘记来源了,特此向作者抱歉) Bootstraping: 名字来自成语"pull up by y ...
最新文章
- flaash-ACC_LSMOOTH2: Cannot continue with smoothing calculation
- 做这行的,一定要会修电脑!
- ARM裸机环境搭建(U-Boot命令详解)
- 2012年,拥抱梦想实现梦想!
- 工具记录,使用jarsigner 对APK进行签名
- android 本地广播原理,本地广播原理
- oracle 正版识别,正版Oracle产品价格
- 多旋翼无人机构成及其原理详解
- 脱壳-ASPack 2.12
- Blender软件介绍与使用心得
- Python实现相空间重构求关联维数——GP算法、自相关法求时间延迟tau、最近邻算法求嵌入维数m
- FilterConfig的用法是什么
- arm开发板嵌入式Linux的ftp软件
- 如何利用海关数据开发客户?
- 测试进阶篇之测试方法的分类(二)
- 关联规则、支持度(support)、置信度(confidence)
- 虚拟机无法正常打开使用,拷贝出虚拟机文件
- 区间问题(区间贡献问题超全详解)
- 马格南摄影师谈抓拍(ZT)
- [转]LSM-Tree (BigTable 的理论模型)
热门文章
- 《从Excel到R 数据分析进阶指南》一2.6 查看数据表数值
- iOS入门培训还要钱?看博客,看视频都拿下
- 什么是我想要守护的东西?
- linux 使用 ioctl 参数
- 洛谷.5283.[十二省联考2019]异或粽子(可持久化Trie 堆)
- Python中序列,列表,元组,字典及集合
- 基于Redis实现分布式单号,分布式ID(自定义规则生成)
- 第二次课动手动脑的问题以及课后实验性的问题
- angular2 --使用DecimalPipe格式化数字
- 河南计算机基础知识会考,2011河南事业单位备考计算机基础知识试题(含答案 )...