1、主要内容

  介绍集成学习,然后讲述boosting和bagging的区别与联系,同时对adaBoost进行推导然后进行gbdt的推导,最后比较随机森林和gdbt的区别和联系。

2、集成学习

  集成学习(ensamble learning)通过构建多个学习器来完成任务。集成学习的一般结构:先产生一组“个体学习器”,然后再用某种策略将这些个体学习器进行联系起来,个体学习器由现有的一个算法产生,比如说c4.5决策树,bp神经网络等。根据集成学习中个体学习器是否相同可以分为同质集成和已质集成,同质集成中个体学习器被称为“基学习器”,已质集成中的个体学习器称为“组件学习器”。

  集成学习通过使用多个学习器进行组合获得强大的功能,通常个体学习器为弱分类器:分类结果不是太好但是要比随机猜测的预测结果好(精度高于50%)。目前集成学习的生成方式有两类:

  1)、boosting:个体学习器之间存在强烈的依赖关系,只能进行串行生成不同的个体学习器,以adaboost和gdbt为代表

  2)、bagging:个体学习器独立生成,互相之间没有关系,以随机森林为代表

3、boosting 和 bagging

  boosting的工作机制:从初始训练数据集出发训练出一个基学习器,然后再根据基学习器的表现对训练的样本进行调整,使得先前基学习器中学习结果错误的样本权重提升获得更大的关注,然后使用调整后的训练样本进行训练下一个基学习器,如此重复直到产生足够数量的基学习器。

  bagging的工作机制:都训练样本进行又放回的抽样(bootstrap sampling)产生和训练数据规模相同的新的训练数据,重复动作产生N个训练样本,然后使用这N个样本数据进行分别训练基学习器,基学习器之间没有关系,相互独立。

4、adaboost算法

  输入:训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)}; 其中xy = {-1, +1};弱分类器算法

  输出:最终分类器G(x),此处得到的是一个分类器

  (1)、初始化训练数据的分布权重

    D1 = {w11,w12,....,w1i,.....,w1N}, i = 1,2,3, ..... , N

    w1i = 1/N

  (2)、对于要生成M个基学习器,则对于m = 1,2,.....,M:

  (a)、使用具有权重分布Dm的训练数据进行生成基学习器:

    

  (b)、计算Gm(x)在训练数据集上的分类误差率:

    

  关于这个误差率计算的问题,针对不同的问题有不同的计算方法,此处为分类器的计算方法,上式还可以写为:

    

  这个表达式就表明了计算分类错误率时就是被Gm(x)误分类样本的权重之和,从这个关系上可以看出分类误差率和样本权重之间的关系。在此处,实际工程中需要判断以下误差率是否小于0.5,如果小于则表示这个基学习器还不如随机预测的结果,如果加入到最终分类器中会严重影响分类器的性能需要抛弃该学习器。

  (c)、计算基学习器Gm(x)的系数

    

  基学习器Gm(x)的系数就是这个学习器正确分类的概率除以分错概率的对数值的一半。当em越小时αm也就越大,也就是说分类误差率越小的分类器在最终的分类器中的作用就越来越大,也是保证了最终分类器性能强劲的原因。同时如果 em 》0.5的话,结果小于0.这是不允许的,这就是上面要抛弃掉分类误差大于0.5的学习器的原因。

  (d)、更新训练数据集的权重分布

    

    

  其中Zm为:

  

  从更新权重值的公式可以看出,正确分类的样本数据的权重减小了(e-am < 1),同样错误分类的样本的权重变大了,因此错误样本在下一轮的训练中会被重视,如果这个样本还是算错那么误差率必然会很大,因为必然会导致基学习器变换分类策略使得误差率变小,通过更新权重避免了改变训练数据,使不同的训练数据在基学习器的学习过程中起到不同的作用,这是adaBoost的一个特点。

  (3)、构建基本分类器的线性组合

    

  得到最终的分类器:

  

  需要注意的是这里的αm的和并不等于1,表示每个分类器的重要程度,f(x)的符号表明了x的类别,|f(x)|表示分类的确信度,越大分类结果越可靠。

  对于adaBoost的回归情况分析,以下内容来自http://www.cnblogs.com/pinard/p/6133937.html

  回归问题与分类问题算法的不同点在于误差率计算的方式不同,分类问题一般都采用0/1损失函数,而回归问题一般都是平方损失函数或者是线性损失函数,因此此处会有较大的不同。

  对于第k个弱学习器,计算他在训练集上的最大误差:

  

  然后计算每个样本的相对误差结果:

  

  此处使用的是线性误差的情况,如果是平方误差,则

  

  如果采用指数误差函数那么:

  

  最终得到第k个弱学习器的误差率:

  

  有了误差率后看学习器的权重系数的计算:

  

  计算完学习器的权重系数后更芯样本权重Dm+1

  

  最后进行线性组合:

  

  同时其他的adaBoost的算法可以参考:http://www.cnblogs.com/jcchen1987/p/4581651.html

  

  这里对Adaboost算法的优缺点做一个总结。

    Adaboost的主要优点有:

    1)Adaboost作为分类器时,分类精度很高

    2)在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。

    3)作为简单的二元分类器时,构造简单,结果可理解。

    4)不容易发生过拟合

    Adaboost的主要缺点有:

    1)对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性

5、随机森林

  bagging的典型代表。未完

转载于:https://www.cnblogs.com/daguankele/p/6554973.html

统计学习方法--提升方法adaBoost算法(集成学习)相关推荐

  1. 提升方法-Adaboost算法

    总第85篇 01|基本概念: 提升方法的基本思想:对于任何一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比任何一个专家单独的判断好. 先来看两个概念:强可学习和弱可学习. 在概率近似 ...

  2. 机器学习之提升方法Adaboost算法

    文章目录 1.背景 2.基本原理 3.Adaboost算法 4.周志华老师Boosting25周年 5.Adaboost算法优缺点 6.Q&A 1.背景 集成学习(ensemble learn ...

  3. 机器学习-Adaboost 算法(集成学习)

    本文结构: 什么是集成学习? 为什么集成的效果就会好于单个学习器? 如何生成个体学习器? 什么是 Boosting? Adaboost 算法? 什么是集成学习 集成学习就是将多个弱的学习器结合起来组成 ...

  4. EL之AdaBoost:集成学习之AdaBoost算法的简介、应用、经典案例之详细攻略

    EL之AdaBoost:集成学习之AdaBoost算法的简介.应用.经典案例之详细攻略 目录 AdaBoost算法的简介 1.理解AdaBoost算法 1.1.从前向逐步递增角度来看理解AdaBoos ...

  5. python实现决策树算法sklearn_GitHub - cbyonder/lihang_algorithms: 用python和sklearn两种方法实现李航《统计学习方法》中的算法...

    lihang_algorithms 用python和sklearn实现李航老师的<统计学习方法>中所提到的算法 实验数据:MNIST数据集,这里用kaggle中处理好的数据 官方下载地址: ...

  6. 机器学习算法——集成学习1(个体与集成)

    集成学习(Ensemble Learning)通过构建并结合多个学习器来完成学习任务. 上图为集成学习的一般结构:先产生一组"个体学习器",再用某种策略将它们结合起来. 个体学习器 ...

  7. 《统计学习方法》—— 感知机对偶算法、推导以及python3代码实现(二)

    前言 在前一篇博客 <统计学习方法>-- 感知机原理.推导以及python3代码实现(一) 里面,我们介绍了感知机原始形式以及具体推导.在这篇博客里面,我们将继续介绍感知机对偶形式以及py ...

  8. Adaboost算法的学习笔记~

    1 致谢 感谢网友ScorpioLu的帮助,他写的博文对我理解Adaboost算法有启发和帮助的效果~ 原文链接如下: https://www.cnblogs.com/ScorpioLu/p/8295 ...

  9. Android MTK三方算法集成学习

    MTK官方资料/优秀学习博客分享 MTK HAL算法集成之单帧算法 MTK HAL算法集成之双摄算法 3rd Party ALGO Integrate Capture 3rd ALGO HAL三方算法 ...

最新文章

  1. 详解python中的用法_详解python中*号的用法
  2. day01 python基础笔记
  3. 职场中不要问程序员这五类问题
  4. Git应用之eclipse解决冲突代码
  5. HiJson(Json格式化工具)
  6. Nessus安装与使用
  7. 用Python实现最强大脑游戏
  8. 「大专及以上学历人员必看」学信网电子注册备案表
  9. java 2048思路_浅谈2048
  10. Linux(CentOS)搭建redmine项目管理系统
  11. EF 之 System.InvalidOperationException
  12. Azure Synapse Analytics (Azure SQL DW)性能优化指南(4)——使用结果集缓存优化性能
  13. 盘点我用过的导出Excel的方法
  14. 欧拉计划问题四 学习笔记 matlab 回文字符串+length()+floor()
  15. jsp+ssh2+mysql实现的CRM客户关系管理系统
  16. Neurodevelopment of the association cortices: Patterns, mechanisms:综述——联合皮层神经发育的模式和对精神病学的启发
  17. Hermite Polynomials(厄米多项式)
  18. 你最该学的职场必修课[职场规划个人笔记]
  19. 有了 HTTP 协议,为什么还需要 Websocket?
  20. 小米电视系统服务器升级,小米电视怎么更新系统 升级步骤图文详解

热门文章

  1. java 数据结构--希尔排序
  2. 黄聪:C#设置Word中表格某个列宽
  3. NetTiers学习笔记09---RADGrid + EntityDataSource设置默认排序, 及表格自动排序,分页的方法...
  4. TypeError: 'str' object is not callable
  5. mysql 深胡_数据存储之MySQL
  6. linux 主机的网络属性基本配置:
  7. Mongodb亿级数据量的性能测试
  8. perl 中文处理 乱码
  9. james邮件服务器的用户信息添加
  10. Perl线程开发过程中的经验