集成学习(Ensamble Learning)通过训练多个若学习器,然后将其按某种策略组合起来,从而达到最好的学习性能,提高算法的泛华能力。

目前集成学习有3个框架:bagging ,boosting,stacking;

Boosting作用于相同的测试集,在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类性能。

Boosting提升算法的思路

提升方法是基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。通俗点说,就是”三个臭皮匠顶个诸葛亮”。

工作机制类似先从初始训练集训练出一个弱学习器,再根据学习器的表现对训练样本分布进行调整(通过改变样本概率从而实现改变样本分布),使得先前弱学习器做错的的训练样本在后续学习中得到更多关注,如此重复进行,知道学习器数目达到指定值T,最终将这T个基学习器进行加权组合。

Leslie Valiant首先提出了“强可学习(strongly learnable)”和”弱可学习(weakly learnable)”的概念,并且指出:在概率近似正确(probably approximately correct, PAC)学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的,如果正确率不高,仅仅比随即猜测略好,那么就称这个概念是弱可学习的。2010年的图灵奖给了L. Valiant,以表彰他的PAC理论。非常有趣的是Schapire后来证明强可学习与弱可学习是等价的,也就是说,在PAC学习的框架下,一个概念是强可学习的充要条件是这个概念是可学习的。

这样一来,问题便成为,在学习中,如果已经发现了“弱学习算法”,那么能否将它提升(boost)为”强学习算法”。大家知道,发现弱学习算法通常比发现强学习算法容易得多。那么如何具体实施提升,便成为开发提升方法时所要解决的问题。关于提升方法的研究很多,有很多算法被提出。最具代表性的是AdaBoost算法(Adaptive Boosting Algorithm),可以说,AdaBoost实现了PAC的理想。

大多数的提升方法都是改变训练数据的概率分布(训练数据中的各个数据点的权值分布),调用弱学习算法得到一个弱分类器,再改变训练数据的概率分布,再调用弱学习算法得到一个弱分类器,如此反复,得到一系列弱分类器。

代表性的提升算法有Adaboost(adaptive boosting)

Adaboost是1995年由Freund和Schapire提出的,Boosting Tree(提升树)是2000年由Fridman等人提出的。选取的是指数损失函数,

AdaBoost的运行过程如下:训练数据中的每个样本,并赋予其一个权重,这些权重构成向量D。一开始,这些权重都初始化成想等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器。在分类器的第二次训练当中,将会重新调整每个样本的权重,其中第一次分对的样本的权重将会降低,而第一次分错的样本的权重将会提高。(迭代样本的权重)

为了从所有弱分类器中得到最终的分类结果,AdaBoost为每个分类器都分配了一个权重值alpha, 这些alpha是基于每个弱分类器的错误率ε进行计算的。(弱分类器权重的确定)

alpha的计算公司:α = 0.5 * ln[(1-ε) / ε],很明显,当错误率ε越大时,分类器的权重α就越小;

计算出alpha后,可以对权重向量进行更新,以使得那些正确分类的样本权重降低,错误样本权重升高。计算方法如下:

其中

Wt,i代表第t个学习器,对测试集中的第i个样本的权重值;

AdaBoost的例子

接下来,给定下边的数据集D,我们用AdaBoost算法来学习得到一个强分类器

数据集D共有10条数据,根据x的输入得到的y可以分类两类,即y=1与y=-1。我们每一轮使用最简单的决策树桩来构建基分类器,即每轮设定一个阈值θ,只要x<θ,就判定为正类(y=1),x>θ就判定为负类(y=-1)。

第一轮

因为是第一轮,故所有样本的权重相同:

第二轮

第一轮训练完成后对进行更新得到,更新公式的推导过程也是等到后边的推到部分再说,此处还是只要知道通过下边的公式来计算更新即可:

其中

上一轮中x=6、7、8的点分错了,可以看到这三个点在中的权重变大了,而其余分类正确的点权重变小了。

第三轮

第二轮训练完成后对进行更新得到,更新公式的推导过程也是等到后边的推到部分再说,此处还是只要知道通过下边的公式来计算更新即可:

其中

上一轮中x=3、4、5的点被分错,所以在中的权重变大,其余分类正确的点权重变小。

弱分类器错误率和样本权重迭代公式的证明

(1)分类器权重alpha公式的推导

2)样本权重矩阵D迭代公式的推导 :

按照以上思路自己全部动手推到了一遍,一些细节部分做了上下承接;

参考:

https://www.cnblogs.com/willnote/p/6801496.html

https://blog.csdn.net/zhuzuwei/article/details/80538060

集成算法-Boosting算法案例及推理过程相关推荐

  1. 集成学习boosting算法:AdaboostGBDTXgboostLightGBMCatBoost

    Adaboost&GBDT&Xgboost&LightGBM&CatBoost 0简介 0.0发展史 0.1 经典文章链接/文章总结链接 0.2 bagging和boo ...

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

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

  3. 【Python机器学习】之 Boosting算法

    Boosting 1.Boosting 1.1.Boosting算法 ​ Boosting算法核心思想: 1.2.Boosting实例 ​ 使用Boosting进行年龄预测: 2.XGBoosting ...

  4. bagging和boosting算法(集成学习算法)

    一.集成学习简介   在讲boosting和bagging算法之前,首先需要了解一下集成学习的概念.集成学习是指将若干弱分类器组合之后产生一个强分类器.弱分类器(weak learner)指那些分类准 ...

  5. 【集成学习】:bagging和boosting算法及对比

    参考:bagging和boosting算法(集成学习算法) Bagging算法和Boosting区别和联系 机器学习笔记-集成学习之Bagging,Boosting,随机森林三者特性对比 目录 1. ...

  6. 集成学习2:Boosting算法:AdaboostGBDT

    文章目录 一. Boosting算法原理 二. Adaboost算法 2.1 Adaboost算法原理 2.2 Adaboost算法举例 2.3 Adaboos代码举例 三. 前向分步算法 3.1加法 ...

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

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

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

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

  9. 集成学习-Boosting集成学习算法GBDT

    GBDT算法的核心为:先构造一个(决策)树,然后不断在已有模型和实际样本输出的残差上再构造一颗树,依次迭代. 目录 Decistion Tree(决策树) Gradient Boosting(梯度提升 ...

最新文章

  1. 注解 java 反射_java注解和反射
  2. 分布式系统用户登录路由
  3. 在Vivado中,使用锁定增量编译技术进行增量综合布局布线
  4. DCMTK:列出dicom文件的内容
  5. OpenGL 加载模型Model
  6. C++智能指针(二)模拟实现三种智能指针
  7. php面试题之五——PHP综合应用(高级部分)
  8. 使用JavaMail技术发送邮件
  9. 强制换行word-break:break-all或者word-wrap:break-word都无效的解决方法
  10. 金蝶k3服务器的操作系统,金蝶k3服务器配置工具
  11. HTML巩固练习之字体样式
  12. c语言判断闰年次数,C语言判断闰年,即判断年份是否为闰年
  13. MFC软件常见问题解决
  14. 闭合导线的近似平均差(工程测量)
  15. EGM2008-地球重力场
  16. 关于不能访问腾讯云服务器tomcat的问题解决
  17. 响应时代号召 中烜速充走进新能源充电桩新时代
  18. 零基础从零开始写VO视觉里程计
  19. 脑电产品-时间常数与截止频率相互换算
  20. 监控器怎样连接到云服务器,一步步教你使用云端服务器yeelink远程监控

热门文章

  1. LayaAir拖拽移动对象并吸附(附源码)
  2. linux 查看hbase是否启动命令,linux、hdfs、hive、hbase常用命令
  3. 分享:详记一次MySQL千万级大表优化过程!
  4. azure kinect三维点云_Azure Kinect3动作捕捉三代深度机器学习AI图像识别光学动作捕捉系统...
  5. API Testing 12 - API测试工具
  6. MSSQLSERVER订阅发布闭坑指南
  7. Python 数据采集、清洗、整理、分析以及可视化实战
  8. Linux(CentOS8)系统下的/var/www/html目录与httpd服务
  9. 【每日python小程序练习】第一天:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。
  10. 42套div+css模板专题模板(各种风格和行业应用网站模板和单页模板)