1 Boosting算法的起源

Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。Boosting是一种提高任意给定学习算法准确度的方法。

Boosting的思想起源于 Valiant提出的 PAC ( Probably Approximately Correct)学习模型。Valiant和 Kearns提出了弱学习和强学习的概念:
弱学习:识别错误率小于1/2(即准确率仅比随机猜测略高的学习算法)
强学习:识别准确率很高并能在多项式时间内完成的学习算法

PAC学习模型中弱学习算法和强学习算法的等价性问题:即任意给定仅比随机猜测略好的弱学习算法 ,是否可以将其提升为强学习算法 ? 如果二者等价 ,那么只需找到一个比随机猜测略好的弱学习算法就可以将其提升为强学习算法 ,而不必寻找很难获得的强学习算法。

1990年, Schapire最先构造出一种多项式级的算法 ,对该问题做了肯定的证明 ,这就是最初的 Boosting算法。一年后 ,Freund提出了一种效率更高的Boosting算法。但是,这两种算法存在共同的实践上的缺陷 ,那就是都要求事先知道弱学习算法学习正确的下限。1995年 , Freund和 Schapire改进了Boosting算法 ,提出了 AdaBoost 算法该算法效率和 Freund于 1991年提出的 Boosting算法几乎相同 ,但不需要任何关于弱学习器的先验知识 ,因而更容易应用到实际问题当中。之后, Freund和 Schapire进一步提出了改变 Boosting投票权重的 AdaBoost .M1,AdaBoost . M2等算法 ,在机器学习领域受到了极大的关注。

转自:百度百科-Boosting

2 Boosting算法的发展

Boosting算法是一种把若干个分类器整合为一个分类器的方法,也就是一种集成分类方法(Ensemble Method)。比较简单的集成分类方法在boosting之前出现过boostrapping和bagging方法,我们先简要介绍一下这两个方法。

Boostrapping

  1. 重复地从一个样本集合D中采n个样本
  2. 针对每次采样的子样本,进行统计学习,获得假设HiH i  Hi
  3. 将若干个假设进行组合,形成最终的假设HfinalH final  Hfinal
  4. 将最终的假设用于具体的分类任务

Bagging

  1. 从整体样本集合中抽样产生不同的训练集并训练弱分类器
  2. 用分类器对分类进行投票,最终的分类结果是弱分类器投票的优胜结果

但是,上述这两种方法,都只是将分类器进行简单的组合,实际上,并没有发挥出分类器组合的威力来。直到1989年,Freund与Schapire提出了一种可行的将弱分类器组合为强分类器的方法。并由此而获得了2003年的哥德尔奖(Godel price)。

Schapire还提出了一种早期的boosting算法,其主要过程如下:

  1. 从样本整体集合D中,不放回的随机抽样n1<n个样本,得到集合D1训练弱分类器C1n 1 <n n1<n
    个样本,得到集合 D 1  D1
    训练弱分类器C 1  C1
  2. 从样本整体集合D中,抽取n2<n个样本,其中合并进一半被C1分类错误的样本。得到样本集合D2训练弱分类器C2。n 2 <n n2<n
    个样本,其中合并进一半被 C 1  C1
    分类错误的样本。得到样本集合 D 2  D2
    训练弱分类器C 2  C2
  3. 抽取D样本集合中,C1和C2分类不一致样本,组成D3训练弱分类器C3C 1  C1
    和C 2  C2
    分类不一致样本,组成D 3  D3
    训练弱分类器C 3  C3
  4. 用三个分类器做投票,得到最后分类结果

到了1995年,Freund and schapire提出了现在的adaboost算法,其主要框架可以描述为:

  1. 循环迭代多次

      更新样本分布

      寻找当前分布下的最优弱分类器

      计算弱分类器误差率

  2. 聚合多次训练的弱分类器

转自:Boosting

3 Adaboost算法

AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器。(很多博客里说的三个臭皮匠赛过诸葛亮)

算法本身是改变数据分布实现的,它根据每次训练集之中的每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改权值的新数据送给下层分类器进行训练,然后将每次训练得到的分类器融合起来,作为最后的决策分类器。

完整的adaboost算法如下

 

 转自:  浅谈AdaBoost算法

转载于:https://www.cnblogs.com/wwf828/p/9272325.html

[转]Boosting相关推荐

  1. 人工智能AI Boosting HMC Memory Chip

    人工智能AI Boosting HMC Memory Chip Innosilicon的AI Boosting HMC存储芯片适用于高速,高带宽和高性能存储领域,例如AI边缘,数据中心,自动化等. H ...

  2. 有关GBDT(Gradient Boosting Decison Tree,梯度提升树)

    集成学习有两大家族,Bagging家族与Boosting家族:相同家族的算法,思想有类似之处,例如Bagging家族主要并行思想,典型代表:随机森林:Boosting家族主要是串行思想,主要代表有Ad ...

  3. 04 集成学习 - Boosting - AdaBoost算法构建

    03 集成学习 - Boosting - AdaBoost算法原理 十.AdaBoost算法构建 上一章最后说明了每个基模型的权值α是如何求得的,于是我就可以对模型进行更新操作了. 构建过程一 1.假 ...

  4. 流行于机器学习竞赛的Boosting,这篇文章讲的非常全了

    作者 | AISHWARYA SINGH 译者 | 武明利,责编 | Carol 出品 | AI科技大本营(ID:rgznai100) 你能说出至少两种机器学习中的 Boosting 吗? Boost ...

  5. 数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting

    Datawhale 作者:田杨军 ,Datawhale优秀学习者 摘要:对于数据挖掘项目,本文将学习如何进行模型融合?常见的模型融合的方法有哪些?针对不同的问题类型,应该选择哪种方法呢? 模型融合:通 ...

  6. 集成学习之Boosting

    集成学习之Boosting 1.boosting集成原理 1.1 什么是boosting 随着学习的积累从弱到强 简而言之:每新加入一个弱学习器,整体能力就会得到提升 代表算法:Adaboost,GB ...

  7. 机器学习中Bagging和Boosting的区别

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 Bagging和Boosting都是将已有的分类或回归算法通过一定 ...

  8. 集成学习Bagging和Boosting算法总结

    一.集成学习综述 1.集成方法或元算法是对其他算法进行组合的一种方式,下面的博客中主要关注的是AdaBoost元算法.将不同的分类器组合起来,而这种组合结果被称为集成方法/元算法.使用集成算法时会有很 ...

  9. R语言使用caret包构建gbdt模型(随机梯度提升树、Stochastic Gradient Boosting )构建回归模型、通过method参数指定算法名称

    R语言使用caret包构建gbdt模型(随机梯度提升树.Stochastic Gradient Boosting )构建回归模型.通过method参数指定算法名称 目录

  10. Boosting、Adaboost、AdaBoost模型的优缺点、提升树、梯度提升树GBDT

    Boosting.Adaboost.AdaBoost模型的优缺点.提升树.梯度提升树GBDT 目录 Boosting.Adaboost.AdaBoost模型的优缺点.提升树.梯度提升树GBDT Boo ...

最新文章

  1. hacktoberfest_Hacktoberfest 2018:如何获得免费衬衫—即使您是编码新手
  2. 我是一个秒杀请求,正在逃离这颗星球...
  3. 使用DWR实现自己主动补全 相似百度搜索框的自己主动显示效果
  4. mysql性能测试工具msyqlslap_mysqlslap工具测试mysql DB的性能
  5. 有关 Oracle redo log
  6. 【Qt】MainWindow窗口状态栏
  7. 尚硅谷_Ajax_学习笔记
  8. java中得到classpath和当前类的绝对路径的一些方法(路径中的%20进行替换空格)...
  9. centos6.x文本操作
  10. Docker-创建支持ssh服务的镜像
  11. uniapp调用c语言方法,uni-app 入坑指南-web开发
  12. 传输线模型(分布参数模型)
  13. 在vue中使用html表格
  14. 微信pc无法卡开word文件,点击文件提示“目录名无效“
  15. 计算机技术专硕学哪些课程,计算机专业考研需要考哪些科目
  16. HINSTANCE/HWND/CWnd/HANDLE 的区别
  17. 伦敦大学研究:新的长寿机制,延长端粒,阻止衰老
  18. 3 - 分布式系统的流量防卫兵:Sentinel
  19. Brup_Suite安装配置及基础使用----最详细的教程(测试木头人)
  20. Edge 联动 VsCode,这功能爱了

热门文章

  1. matlab中ga函数用法,matlab遗传算法ga函数
  2. CVPR 2021 最佳论文奖项出炉,何恺明等获最佳论文提名 !
  3. 南京大学开源!ResT:高效Transformer架构!
  4. 浙江大学最美学习笔记赏析!我太吃惊了
  5. Ubuntu 16.04安装NVIDIA驱动后循环登录问题
  6. 展示面-网络安全相关学习总结
  7. 佩斯大学计算机科学世界排名,美国佩斯大学留学推荐 计算机科学专业
  8. ipython使用oracle,python的os模块(ipython,文件,目录,权限,管理)
  9. 在Linux系统下载email,LINUX下安装U-MAIL邮件系统
  10. 【雕爷学编程】Arduino动手做(16)---数字触摸传感器