文章目录
概述
先验知识
集成学习
boosting家族简述
boosting家族——AdaBoosting
boosting家族——GBDT
boosting家族——XGBoost
RandomForest 与 GBDT 的区别
参考
概述
boosting往上了说,是集成学习的分支。往下分,有AdaBoost和GBDT以及xgboost和lightBgm。此文是我这个boosting小白对boosting家族的理论知识的学习的的大致学习记录。

先验知识
先验知识中,线性回归、决策树以及基本的特征工程相关的知识就不赘述了。主要学习下集成学习的来龙去脉。

集成学习
集成学习适合机器学习的几乎所有的领域:回归、分类、推荐、排序等等。
后文中:

1.什么是集成学习?

在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不会这么理想。可能模型A在某个方面变现优于模型B,但模型B又不是处处都表现不好。也就是说:每个弱分类器具备一定的“准确性”,分类器之间具备“差异性”。
上面提到的模型A、B常被称为基学习器(注意,基学习器与弱学习器(weak learner)其实并不是同等概念,基学习器范围大于弱学习器)。
构建并结合多个学习器来完成学习任务,被称为集成学习。
集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。
2.为什么理论上集成学习效果会更好?

形象的说:集成学习的结果通过投票法(voting)产生,“少数服从多数”。也就是说,假设有5个若学习器,对于啊a,b,c三个事物的分类,分别有四个学习器结果相同,一个不相同。我们假设正确结果掌握在绝大多数“人”手中,那么投票会使得正确率由80%提升到100%。
抽象的说:【“西瓜”书P172、P173】
总结:也就是我们常说的“博采众长”。
3.集成学习的思路、核心点、要点

思路:通过迭代地训练一系列的分类器,每个分类器采用的样本的选择方式都和上一轮的学习结果有关。具体是如何关联的,不同的集成学习算法有不同的实现。
集成学习的一个主要假设是:基学习器的误差相互独立。但是这可能吗?同一任务中的不同基学习器的目标是一样的,再次再次它们的误差也不可能相互独立。所以说,事实上每个基学习器的“准确率”和多样性是冲突的。如何产生并结合“好而不同”的基学习器,就是集成学习研究的核心。
-可通过为每个基学习器拆分相互有一定交叉的子集,使得误差尽量大一些(但是不可完全独立的拆分子集)
要点:
每个基学习器好于“随机猜测”
基学习器尽量误差相互独立
基学习器各有优点,要有差异(Diversity)
选用不同的基学习器
4.集成学习的大致阵营

主要可以分为三大类,Boosting、Bagging、Stacking。
强依赖关系、必须串行生成的顺序方法(顺序构建多个学习器):Boosting(主要关注降低偏差)为代表
不存在强依赖关系、可同时生成的并行化方法(主要是减少运算时间):Bagging(主要关注降低方差)、Stacking
Boosting的代表有AdaBoost, GBDT, XGBoost。而Bagging的代表则是随机森林 (Random Forest)。Stacking的
当模型越复杂时,拟合的程度就越高,模型的训练偏差就越小。但此时如果换一组数据可能模型的变化就会很大,即模型的方差很大。所以模型过于复杂的时候会导致过拟合。当模型越简单时,即使我们再换一组数据,最后得出的学习器和之前的学习器的差别就不那么大,模型的方差很小。还是因为模型简单,所以偏差会很大。
(作者:于菲 链接:https://www.zhihu.com/question/45487317/answer/99153174)

5.集成学习之结合策略
参考[7]

6.集成学习的缺点

计算复杂度大
一般而言,所得到的模型比较难解释
boosting家族简述
在顺序方法中,我们顺序地构建多个学习器。在构建后面的学习器中,我们它能够“纠正”前面的学习器的错误,从而提高聚合后的准确度。
基于图形的理解见参考[3]

思路:
从初始训练集得到基学习器,根据其表现,对训练样本进行调整,后续计算中,之前分类错误的样本有较高的可能性被选到。(就像错题集,但是这里是把你的错题给其他人做,其他人多了,总会有人做对的。)然后拿调整后的样本训练下一个基学习器,直到达到预设的基学习器个数,最后再对这些个基学习器的结果进行加权求和。
重采样与重赋权:
1.Boosting算法要求基学习器能对特定数据分布进行学习,这可以通过”重赋权法“或者”重采样法“来处理。即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重。对于无法接受带权重样本的基学习算法,可以通过“重采样法”来处理,即在每一轮学习中,根据样本分布对训练集合重新进行采样,再用重采样而得的样本集对基学习器进行训练。
2.Boosting算法在训练的每一轮都要检查当前生成的基学习器是否满足设置的基本条件,如果不满足就直接抛弃当前基学习器,且学习过程停止。在这种情形下,初始设置的学习轮数T也许还远未达到,可能导致最终集成中只包含很少的基学习器而性能不佳。若采用“重采样”则可能获得**“重启动”的机会以避免训练过程过早停止**。即在抛弃不满足条件的当前基学习器之后,可以根据当前分布重新对训练样本进行采样,再基于新的采样结果重新训练出基学习器,从而使学习过程可以持续到预设的T轮完成
从偏差-方差角度来看,Boosting主要关注降低偏差(广义的偏差(bias)描述的是预测值和真实值之间的差异,方差(variance)描述距的是预测值作为随机变量的离散程度)。因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成。
Boosting方法的学习思想和模型结构上可以保证其不容易产生过拟合(除非Weak Learner本身出现过拟合)

boosting家族——AdaBoosting
1995年由Freund和Schapire提出。

算法推理:“西瓜”书175,或者此链接

整体思路之图片版:借用下涵子涵的图(兄dei,要不再练练字。。。)

整体思路之文字版:http://www.52caml.com/head_first_ml/ml-chapter6-boosting-family/

最终模型的产出:

加大 分类误差率小 的弱分类器的权值,使其在表决中起较大的作用;减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

boosting家族——GBDT
梯度提升决策树(Gradient Boosting Decison Tree, 以下简称GBDT)
boosting tree(提升树)+ gradient boost(梯度提升算法)【提升树是迭代多棵回归树来共同决策。】

概述:
1.GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力较强的算法。GBDT中的树是回归树(不是分类树),GBDT用来做回归预测,调整后也可以用于分类。
2.回顾下Adaboost,其利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱学习器限定了只能使用CART(分类与回归树)模型,同时迭代思路和Adaboost也有所不同。
**参考[5]和参考[6]**真的写得很不错,我的实力“造”不出那样的轮子,推荐多次阅读
**参考[5]和参考[6]**真的写得很不错,我的实力“造”不出那样的轮子,推荐多次阅读
**参考[5]和参考[6]**真的写得很不错,我的实力“造”不出那样的轮子,推荐多次阅读

要点
GBDT中的回归树的每一个节点都会得一个预测值
提升树是迭代多棵回归树来共同决策
提升树利用加法模型和前向分步算法实现学习的优化过程。
boosting家族——XGBoost
与gbdt相比,具体的优点有:

1.损失函数是用泰勒展式二项逼近,而不是像gbdt里就是一阶导数
2.对树的结构进行了正则化约束,防止模型过度复杂,降低了过拟合的可能性
3.节点分裂的方式不同,gbdt是用的gini系数,xgboost是经过优化推导后的

gboost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear)。下面所有的内容来自原始paper,包括公式。

。。。我真的看不下去了。。。
还是改天慢慢看参考[5]

这两天先具体的实践下XGBoost,实践调优的过程中慢慢回来补这部分的博客。

RandomForest 与 GBDT 的区别
相同点:

1.都由很多棵树组成

2.最终的结果是由多棵树一起决定的

不同点:

1.RandomForest中的树可以是分类树,也可以是回归树,而GBDT只能由回归树(CART)组成,这也说明GBDT各个树相加是有意义的

2.RandomForest中的树是并行生成的,而GBDT是串行生成的,GBDT中下一颗树要去拟合前一颗树的残差,所以GBDT中的树是有相关关系的,而RandomForest中的树的相关性依赖于Boostrap生成的样本子集的相关性

3.RandomForest 对异常值不敏感,GBDT敏感

4.RandomForest是通过降低模型方差来提高性能的,而GBDT是通过降低偏差来提高性能

参考
[1].《机器学习》-周志华
[2].《实用机器学习》-孙亮/黄倩
[3].博客园——机器学习中的数学(3)-模型组合(Model Combining)之Boosting与Gradient Boosting
[4]建议阅读此文,综合
[5]集成学习总结,综合
[6]博客园——梯度提升树(GBDT)原理小结
[7]博客园——集成学习的结合策略
[8]博客园——使用sklearn进行集成学习——理论
————————————————
版权声明:本文为CSDN博主「haixwang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/HaixWang/article/details/79949195

boosting家族之综合理论篇相关推荐

  1. YOLO系列专题——YOLOv2理论篇

    YOLOv2理论篇 YOLOv2实践篇 背景介绍: YOLOv1和同时期的SSD属于两个单阶段检测模型,以速度快著称.但是YOLOv1的诸多缺陷导致精准度较差.召回率低.估计YOLOv2参考了SSD或 ...

  2. P4编程理论与实践——理论篇(转载)

    P4编程理论与实践--理论篇 由于对SDN充满着兴趣,在学习了一段时间OpenFlow之后,一次偶然的机会接触到了P4.P4可以实现很多新的Idea,但是无奈于国内的实践资料太少了(有些资料似乎比较陈 ...

  3. 软件测试基础___测试理论篇

    前言 高手,是避免失败,而不是追求成功 目录 前言 高手,是避免失败,而不是追求成功 1.为什么要写测试理论篇 2.软件测试的目标,模型及核心 3.软件测试目标案例 4.软件测试的策略 5.软件测试的 ...

  4. [转载]儿童画教学-理论篇_我是亲民_新浪博客

    原文地址:儿童画教学-理论篇 作者:小鹰wang520yxy 一.基础练习 学习简笔画,可以从画点开始练习,逐步进入到画线的培养,继而过渡到形,即用简练的笔法通过线与线的结合来组成形. (一)点的练习 ...

  5. RecyclerView的超强辅助Graywater——理论篇

    关于Graywater的系列文章 RecyclerView的超强辅助Graywater--理论篇 RecyclerView的超强辅助Graywater--基础实操篇 RecyclerView的超强辅助 ...

  6. [转载]儿童画教学-理论篇

    原文地址:儿童画教学-理论篇 作者:小鹰wang520yxy 一.基础练习 学习简笔画,可以从画点开始练习,逐步进入到画线的培养,继而过渡到形,即用简练的笔法通过线与线的结合来组成形. (一)点的练习 ...

  7. JVM调优理论篇_二、常用垃圾回收器(JVM10种垃圾回收器)以及垃圾回收算法

    JVM调优理论篇_二.常用垃圾回收器以及垃圾回收算法 前言 一.垃圾回收基础 1.什么场景下使用垃圾回收 2.垃圾回收发生在哪个区域? 3.对象在什么情况下会被回收?(如何判断一个对象是否该被回收) ...

  8. 艾伟_转载:学习 ASP.NET MVC (第五回)理论篇

    本系列文章导航 学习 ASP.NET MVC (第一回)理论篇 学习 ASP.NET MVC (第二回)实战篇 学习 ASP.NET MVC (第三回)实战篇 学习 ASP.NET MVC (第四回) ...

  9. 一步步教你轻松学朴素贝叶斯模型算法理论篇1

    一步步教你轻松学朴素贝叶斯模型理论篇1 (白宁超2018年9月3日17:51:32) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对 ...

最新文章

  1. static构造函数的运行
  2. 《The Coaching Booster》问与答
  3. Linux学习笔记5月22日任务
  4. YOLOv5导出jit,onnx,engine
  5. 【以太坊】搭建测试网络之ubuntu系统安装node.js
  6. 张磊香港理工大学计算机,香港理工大学张磊博士赴深圳先进院交流
  7. 2016蓝桥杯省赛---java---B---3(凑算式)
  8. 測试AtomicInteger与普通int值在多线程下的递增操作
  9. unity中的update、Lateupdate和FixedUpdate。
  10. 无心剑中译奥修《顺其自然》
  11. 转:关于数据库压缩技术的Survey
  12. 超细!详解AD13:如何从零开始画出一个PCB(电路板)
  13. Linux 串口读写
  14. html显示百度热搜,Python获取百度热搜的完整代码
  15. PyCharm下载及安装教程(Windows)
  16. 使用IntelliJ IDEA打开一个项目步骤
  17. QT(1)- QString
  18. 一个中国方案的落地:马云的eWTP,如何让马来西亚第一个all in
  19. 基于 OE、Yocto、Arago 构建 TI 板卡的定制文件系统
  20. 头像上传(限制大小,格式,尺寸)

热门文章

  1. 安装驱动器于当前运行的windows驱动器不能相同_如何预防硬盘故障?5个迹象表明硬盘驱动器即将故障...
  2. Thread——线程
  3. 「Swift」第三章String and Character
  4. 「ProtocolBuffers2」ProtocolBuffers2 Python简易入门
  5. nginx在Centos下的安装,转:http://www.linuxidc.com/Linux/2016-09/134907.htm
  6. lucene和elasticsearch的前世今生、elasticsearch的核心概念、elasticsearch核心概念 vs. 数据库核心概念(来自学习资料)
  7. 网站用户访问速度监测分析项目
  8. oracle 删除补全日志组_浅谈Oracle 20c ASM文件组模板技术
  9. mediawiki java_使用MediaWiki 1.16.0实现添加媒体向导
  10. gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】