第一篇:对Adaboost和GBDT的学习

Adaboost在李航的《统计学习方法》中有,写的非常详细,大题意思就是:对未分类正确的数据加大权值,使得受到下一轮弱分类器更大的关注,对于误差率小的若分类器加大权值,使得在表决中起到更大的作用。言而言之一句话:重视错分数据和好的分类器。

GBDT可以看下面这篇文章:
https://www.cnblogs.com/peizhe123/p/5086128.html
重点是:GBDT是回归树,使用梯度迭代方法,GBDT是把所有树的结论累加起来做最终结论的,所以可以想到每棵树的结论并不是年龄本身,而是年龄的一个累加量。GBDT的核心就在于,每一棵树学的是之前所有树结论和的残差(就是预测值与真实值之间的差距),这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学。这就是Gradient Boosting在GBDT中的意义,简单吧。

举个栗子:

还是年龄预测,简单起见训练集只有4个人,A,B,C,D,他们的年龄分别是14,16,24,26。其中A、B分别是高一和高三学生;C,D分别是应届毕业生和工作两年的员工。如果是用一棵传统的回归决策树来训练,会得到如下图1所示结果:
现在我们使用GBDT来做这件事,由于数据太少,我们限定叶子节点做多有两个,即每棵树都只有一个分枝,并且限定只学两棵树。我们会得到如下图2所示结果:
在第一棵树分枝和图1一样,由于A,B年龄较为相近,C,D年龄较为相近,他们被分为两拨,每拨用平均年龄作为预测值。此时计算残差**(残差的意思就是: A的预测值 + A的残差 = A的实际值)**,所以A的残差就是16-15=1(注意,A的预测值是指前面所有树累加的和,这里前面只有一棵树所以直接是15,如果还有树则需要都累加起来作为A的预测值)。进而得到A,B,C,D的残差分别为-1,1,-1,1。然后我们拿残差替代A,B,C,D的原值,到第二棵树去学习,如果我们的预测值和它们的残差相等,则只需把第二棵树的结论累加到第一棵树上就能得到真实年龄了。这里的数据显然是我可以做的,第二棵树只有两个值1和-1,直接分成两个节点。此时所有人的残差都是0,即每个人都得到了真实的预测值。

换句话说,现在A,B,C,D的预测值都和真实年龄一致了。Perfect!:

A: 14岁高一学生,购物较少,经常问学长问题;预测年龄A = 15 – 1 = 14

B: 16岁高三学生;购物较少,经常被学弟问问题;预测年龄B = 15 + 1 = 16

C: 24岁应届毕业生;购物较多,经常问师兄问题;预测年龄C = 25 – 1 = 24

D: 26岁工作两年员工;购物较多,经常被师弟问问题;预测年龄D = 25 + 1 = 26

那么哪里体现了Gradient呢?其实回到第一棵树结束时想一想,无论此时的cost function是什么,是均方差还是均差,只要它以误差作为衡量标准,残差向量(-1, 1, -1, 1)都是它的全局最优方向,这就是Gradient。

第一篇:对Adaboost和GBDT的学习相关推荐

  1. 第一篇博客(关于IT学习的初步想法)

    目录 一.个人介绍 二.编程目标 三.如何学习编程 四.每周投入时间 五.最想进入的IT公司 六.总结 一.个人介绍 我是一名大一学生,目前就读计算机相关专业.想做的事有很多,但现在自己能力有限,希望 ...

  2. 学习日志:第一篇博客

    小郝的第一篇博客 记录自己未来学习的过程--自我认知 文章目录 小郝的第一篇博客 一.做出改变 二.自我介绍 三.具体实现 四.总结 一.做出改变 在很久之前就有写博客这个想法,但一直没有付诸行动,疫 ...

  3. kaggle新手入门第一篇——Titanic

    Titanic作为Kaggle官方网站的第一篇入门比赛,如果你想学习kaggle,那么从它开始无疑是比较好的一个选择. 首先贴一下网址:https://www.kaggle.com/c/titanic ...

  4. 机器学习笔记(六)Boosting集成学习算法Adaboost和GBDT

    一.前言 在前一篇文章中我们介绍了集成学习算法中的Bagging模型,本篇文章将继续介绍集成学习算法中的另一个代表性算法Boosting模型.Boosting是一种可将弱学习器提升为强学习器的算法,其 ...

  5. python机器学习案例系列教程——集成学习(Bagging、Boosting、随机森林RF、AdaBoost、GBDT、xgboost)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 可以通过聚集多个分类器的预测结果提高分类器的分类准确率,这一方法称为集成(Ensemble)学习或分类器组合(Classifier C ...

  6. MongoDB学习第一篇 --- Mac下使用HomeBrew安装MongoDB

    2019独角兽企业重金招聘Python工程师标准>>> MongoDB学习第一篇 --- Mac下使用HomeBrew安装MongoDB 0.确保mac已经安装了HomeBrew ( ...

  7. RabbitMQ学习总结 第一篇:理论篇

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  8. 源码学习【HashMap第一篇】HashMap到底是怎么put的?

    HashMap到底是怎么put 的? 这是我的专栏的第一篇,有任何错误,希望大家不吝赐教,共同学习. 写这个专栏主要是自己学习源码的过程,如果对别人能有所帮助,不胜开心~ Put的流程: resize ...

  9. PHP学习记录第一篇:Ubuntu14.04下LAMP环境的搭建

    PHP学习记录第一篇:Ubuntu14.04下LAMP环境的搭建 最近一段时间会学习一下PHP全栈开发,将会写一系列的文章来总结学习的过程,以自勉. 第一篇记录一下LAMP环境的安装 0. 安装Apa ...

最新文章

  1. 64位虚拟机下asm()语法_一步步学写Windows下的Shellcode
  2. 华为云容器部署WordPress服务
  3. trufflesuite/truffle-hdwallet-provider
  4. sBRDF空间双向反射分布函数完全解析
  5. ADO.NET 2.0 功能一览
  6. 操作系统学习笔记:文件系统接口
  7. C++程序设计语言(特别版)pdf
  8. 服装行业如何做软文营销推广产品?
  9. POJ 2210 Metric Time G++
  10. Hadoop,MapReduce,HDFS面试题
  11. 都0202年了,还在用Office2010/2016吗?手把手教你使用Office Tool Plus部署Microsoft Office 365,简单快速!
  12. ZooKeeper【基础知识 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
  13. Linux服务器重启后crs,更改服务器名后CRS无法启动
  14. Linux环境下Shell脚本基础篇-鸡兔同笼问题
  15. itext 导出word
  16. Selenium自动化测试网页加载太慢怎么办
  17. android 地铁地图api,百度地铁图JS API使用
  18. 显著性检测—谱残差方法分析与实现
  19. 完美支持4.3.1固件 360手机卫士iPhone版
  20. ultraedit链接linux服务器,(工具类)使用UltraEdit与虚拟机上的Linux进行ftp连接

热门文章

  1. 20180826(04)-Java序列化
  2. XXE漏洞攻击与防御
  3. [国嵌笔记][025][ARM指令分类学习]
  4. 重拾C,一天一点点_12
  5. ICML 2022 第一届关于新冠病毒的智慧医疗研讨会
  6. 为了给女朋友独特的七夕惊喜,我学会了人像美肤算法!
  7. ICCV2019 | 腾讯优图13篇论文入选,其中3篇被选为Oral
  8. 旷视研究院张弛:行人重识别及其应用
  9. 一文读懂目前大热的AutoML与NAS!
  10. x60 深度linux,vivo X60 系列将全球首发 OriginOS 交互体验脱胎换骨