Bagging、随机森林、Boosting

  • 1.Bagging(装袋算法)
  • 2.随机森林
  • 3.Boosting
  • 参考

1.Bagging(装袋算法)

bootstrap抽样:反复地从原始数据集中有放回地抽取观测数据,得到多个数据集。

  • 优点:适用于样本数量较小,可从原始数据中产生多个训练集。
  • 缺点:会引入相同样本,改变了原始数据的分布,导致偏差;模型的可理解性差。

在决策树中(或其他高方差模型中),由于其高方差低偏差地特性(即对训练集样本很敏感),样本发生个别变化时,生成的决策树可能会完全不同。为了减小高方差,引入Bagging方法。

假设有n个数据集,Z1,Z2,...ZnZ_1,Z_2,...Z_nZ1​,Z2​,...Zn​,每个数据集的方差为σ2\sigma^2σ2,则其样本平均值Zˉ\bar{Z}Zˉ的方差为σ2n\frac{\sigma^2}{n}nσ2​。

可以发现,对一系列观测值取平均可以显著降低方差。因此,类比可知,依赖原训练集生成许多新的训练集,再分别对新的训练集训练模型f^1(x),f^2(x),...f^B(x)\hat{f}^1(x),\hat{f}^2(x),...\hat{f}^B(x)f^​1(x),f^​2(x),...f^​B(x),最终取得各模型预测结果的平均。(分类问题即可以少数服从多数)
f^avg(x)=1B∑b=1Bf^b(x)\hat{f}_{avg}(x)=\frac{1}{B}\sum_{b=1}^B\hat{f}^b(x) f^​avg​(x)=B1​b=1∑B​f^​b(x)
Bagging(Boostrap aggregation):给定一个训练集,采用boostrap抽样生成b个训练集,再分别这b个训练集去训练模型,生成b个模型,再通过取平均值或取多数票等方法得到模型预测或分类结果。

  • Out-of-Bag Error(袋外错误)
    运用Boostrap抽样方式不可避免地存在一个问题,即当从样本数为n的训练集D中,运用Bootstrap抽样时,第j个观测值在bootstrap抽样集中的概率为:
    P=(1−(1−1n)n)lim⁡n→∞P=1−1e≈23P= (1-(1-\frac{1}{n})^n)\\ \lim_{n\rightarrow\infty }P=1- \frac{1}{e}\approx \frac{2}{3} P=(1−(1−n1​)n)n→∞lim​P=1−e1​≈32​
    可以得知,每个抽样集平均利用了原数据集的三分之二去训练子模型,而剩下的三分之一数据没有被利用去拟合该子模型,称这部分数据为Out-of-Bag(OOB)观测值(即子模型拟合未用到的训练集)。
    OOB误分率:对所有样本,计算它作为OOB样本时的预测或分类情况;通过平均或多数投票的方式得到该样本的分类样本;最后用误分个数占样本总数的比率作为OOB误分率。(因为OOB样本的预测利用的模型并不是用其拟合的模型,相当于测试集,所以可以近似将OBB错误作为test error)

2.随机森林

随机森林是在Bagging方法上的改进,子模型为决策树,在Bagging中抽样时进行模型拟合时,利用了观测值的所有特征p个,而在随机森林模型中,各子模型仅利用观测值所有特征中m=pm=\sqrt{p}m=p​个进行拟合。

  • m越大,单棵树的效果会提升,但树之间相关性也会增强
  • B越大,模型效果会有提升,但计算量会变大

优势:降维;当强特征存在时,bagging生成的各树模型可能高度相似,因此平均或多数投票不能够显著降低方差,而随机森林平均上(p−m)/p(p-m)/p(p−m)/p的split不会考虑强特征。
劣势:对小量数据集和低维数据集的分类不一定可以得到很好的效果。

bagging与随机森林均不会因为B值的增大而产生过拟合,所以一般采用较大的B去减小误差。
一方面:在样本的抽样中,会产生重复的样本,这样每一个子模型在拟合时都不会采用全部的样本,就不会产生过拟合现象。
另一方面:在特征值的采样中,选择有限的特征,这样每一个子模型可能不会生成完整的决策树(效果上类似于剪枝),所以不会产生过拟合现象。

3.Boosting

提升方法(Boosting)在该文进行了详细阐述。
提升树中,子模型的split为1时(即模型为树桩)通常效果较好,因为每次迭代产生的子模型都依赖于上一个子模型的结果(即与每次迭代的残差有关),因此每个模型之间的相关度越低,提升的效果越好。此时每一个子模型只包括一个特征,相当于加法模型。split越多,子模型考虑的特征数就越多,interaction depth就越大。

Boosting与前两者的区别:

  • Boosting根据错误率调整样本权重,错误率越大的样本权重越大;
  • Bagging使用的是均匀取样,每个样本权重相等。
  • Boosting各个预测函数必须按顺序迭代生成;
  • Bagging各个预测函数可以并行生成。
  • Boosting中误差越小的预测函数其权重越大;
  • Bagging所有的预测函数的权重相等。

参考

[1]《An introduction to statistical learning; with Application in R》

《ISLR》学习笔记 —— Bagging、随机森林、Boosting相关推荐

  1. 随机森林分类算法python代码_Python机器学习笔记:随机森林算法

    随机森林算法的理论知识 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为&q ...

  2. 【进阶版】机器学习之集成学习介绍、随机森林模型经验贴(12)

    目录 欢迎订阅本专栏,持续更新中~ 本专栏前期文章介绍! 机器学习配套资源推送 进阶版机器学习文章更新~ 点击下方下载高清版学习知识图册 集成学习 个体与集成 Boosting Bagging与Ran ...

  3. 集成学习中的随机森林

    摘要:随机森林是集成算法最前沿的代表之一.随机森林是Bagging的升级,它和Bagging的主要区别在于引入了随机特征选择. 本文分享自华为云社区<集成学习中的随机森林>,原文作者:ch ...

  4. Opencv学习笔记 - 使用opencvsharp和Boosting算法处理分类问题

    决策树非常有用,但单独使用时它并不是表现最佳的分类器.改进的方法随机森林和Boosting算法.随机森林与Boosting算法都是在内部循环中使用决策树的,因此继承了决策树的许多优良属性,它们通常是机 ...

  5. 机器学习 ||《菜菜的sklearn机器学习》笔记——2 随机森林

    1 集成算法 集成学习 非常流行的机器学习算法,通过在数据上构建多个模型,集成所有模型的结果. 多个模型集成成为的模型叫做集成评估器,其中的每个模型叫做基评估器.通常来说,有三类集成算法:袋装法(Ba ...

  6. 【机器学习】集成学习ensemble之随机森林

    Bootstrapping Bootstrapping从字面意思翻译是拔靴法,从其内容翻译又叫自助法,是一种再抽样的统计方法.自助法的名称来源于英文短语"to pull oneself up ...

  7. Xposed学习笔记之蚂蚁森林能量自动收取模块

    本文主要借鉴尼古拉斯_赵四大佬的文章 本人xposed小白一枚,看了尼古拉斯_赵四大佬的那篇文章入门,深入的原理什么的,大家可以深入研究一下尼古拉斯_赵四大佬的文章. 学习笔记 调试常用的函数Log. ...

  8. 机器学习笔记(3) 随机森林

    random forest 和 extra-trees是对decison tree做ensemble而得到最终模型的两种算法. 阅读本文前需要先了解一下 机器学习笔记1:决策树 机器学习笔记2:集成学 ...

  9. numpy学习笔记之随机采样函数

    numpy的随机采样函数 np.random.choice(a, size=None,replace=None, p=None) 功能:Generates a random sample from a ...

最新文章

  1. scrapy实现post请求与请求传参
  2. 擷取Registry內的螢幕EDID資訊(沒解決問題不過可以學下)
  3. ASP读取ACCESS数据库随机记录的方法
  4. 本地Spark连接远程集群Hive(Scala/Python)
  5. CString常用方法
  6. tornado的websocket处理
  7. 大型网站技术架构(二)--架构模式(转)
  8. Linux文档内容查询命令
  9. box2d之刚体,定制器笔记
  10. 基于Citespace和vosviewer的文献信息可视化分析技术
  11. 常见的API接口管理工具
  12. 计算机网络局域网之无线局域网
  13. $wnd and $doc Calling native JavaScript with JSNI
  14. 计算机协会游园活动方案,计算机爱好者协会建设策划方案
  15. tp3.2.3 图片打水印
  16. V6H--升级3种方式和修改版本号
  17. 51CTO“硅谷技划”日记之一:飞向旧金山的技术集结号
  18. Latex 表格单元格内换行
  19. Xshell 免密连接云主机(以Vultr云服务为例)
  20. c语言随机产生一组四则运算题,随机生成四则运算

热门文章

  1. c语言des算法实验报告,c语言实现des算法des加密算法实验报告
  2. 【Pygame小游戏】一发超人:弓箭手佛系射鸟休闲小游戏,你能射中几只?(源码白嫖)
  3. Vue.js的下载和调用
  4. 使用burp进行网站爆破
  5. GarageBand for mac(音乐制作工具)
  6. 简介:Virtual Kubelet
  7. 杭州职业技术学院计算机教研室主任,课题名称杭州地区农村小学教师运用现代教育技术现状调查和对策的研究.doc...
  8. 程序员的核心竞争力是什么?
  9. Qt5--学习笔记-+openCV2-客户端、服务端回环视频显示
  10. OMCI协议二层功能的模型选择