GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器学习模型而引起大家关注。
GBDT主要由三个概念组成:Regression Decistion Tree(即DT),Gradient Boosting(即GB),Shrinkage (算法的一个重要演进分枝,目前大部分源码都按该版本实现)。搞定这三个概念后就能明白GBDT是如何工作的,要继续理解它如何用于搜索排序则需要额外理解RankNet概念,之后便功德圆满。下文将逐个碎片介绍,最终把整张图拼出来。

  • DT:回归树Regression Decision Tree

    提起决策树(DT, Decision Tree) 绝大部分人首先想到的就是C4.5分类决策树。但如果一开始就把GBDT中的树想成分类树,那就是一条歪路走到黑,一路各种坑,最终摔得都要咯血了还是一头雾水说的就是LZ自己啊有木有。咳嗯,所以说千万不要以为GBDT是很多棵分类树。决策树分为两大类,回归树和分类树。前者用于预测实数值,如明天的温度、用户的年龄、网页的相关程度;后者用于分类标签值,如晴天/阴天/雾/雨、用户性别、网页是否是垃圾页面。这里要强调的是,前者的结果加减是有意义的,如10岁+5岁-3岁=12岁,后者则无意义,如男+男+女=到底是男是女? GBDT的核心在于累加所有树的结果作为最终结果,就像前面对年龄的累加(-3是加负3),而分类树的结果显然是没办法累加的,所以GBDT中的树都是回归树,不是分类树,这点对理解GBDT相当重要(尽管GBDT调整后也可用于分类但不代表GBDT的树是分类树)。那么回归树是如何工作的呢?
    下面我们以对人的性别判别/年龄预测为例来说明,每个instance都是一个我们已知性别/年龄的人,而feature则包括这个人上网的时长、上网的时段、网购所花的金额等。
    作为对比,先说分类树,我们知道C4.5分类树在每次分枝时,是穷举每一个feature的每一个阈值,找到使得按照feature<=阈值,和feature>阈值分成的两个分枝的熵最大的feature和阈值(熵最大的概念可理解成尽可能每个分枝的男女比例都远离1:1),按照该标准分枝得到两个新节点,用同样方法继续分枝直到所有人都被分入性别唯一的叶子节点,或达到预设的终止条件,若最终叶子节点中的性别不唯一,则以多数人的性别作为该叶子节点的性别。
    回归树总体流程也是类似,不过在每个节点(不一定是叶子节点)都会得一个预测值,以年龄为例,该预测值等于属于这个节点的所有人年龄的平均值。分枝时穷举每一个feature的每个阈值找最好的分割点,但衡量最好的标准不再是最大熵,而是最小化均方差–即(每个人的年龄-预测年龄)^2 的总和 / N,或者说是每个人的预测误差平方和 除以 N。这很好理解,被预测出错的人数越多,错的越离谱,均方差就越大,通过最小化均方差能够找到最靠谱的分枝依据。分枝直到每个叶子节点上人的年龄都唯一(这太难了)或者达到预设的终止条件(如叶子个数上限),若最终叶子节点上人的年龄不唯一,则以该节点上所有人的平均年龄做为该叶子节点的预测年龄。若还不明白可以Google “Regression Tree”,或阅读本文的第一篇论文中Regression Tree部分。

  • GB:梯度迭代 Gradient Boosting

    Boosting,迭代,即通过迭代多棵树来共同决策。这怎么实现呢?难道是每棵树独立训练一遍,比如A这个人,第一棵树认为是10岁,第二棵树认为是0岁,第三棵树认为是20岁,我们就取平均值10岁做最终结论?–当然不是!且不说这是投票方法并不是GBDT,只要训练集不变,独立训练三次的三棵树必定完全相同,这样做完全没有意义。之前说过,**GBDT是把所有树的结论累加起来做最终结论的,所以可以想到每棵树的结论并不是年龄本身,而是年龄的一个累加量。**GBDT的核心就在于,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学。这就是Gradient Boosting在GBDT中的意义。

  • 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。

  • GBDT的适用范围

    该版本GBDT几乎可用于所有回归问题(线性/非线性),相对logistic regression仅能用于线性回归,GBDT的适用面非常广。亦可用于二分类问题(设定阈值,大于阈值为正例,反之为负例)。

GBDT迭代决策树的入门教程相关推荐

  1. 决策树系列之一决策树的入门教程

    决策树 (Decisiontree) 一.决策树的概念 决策树(decision tree)又称为分类树(classification tree),决策树是最为广泛的归纳推理算法之一,处理类别型或连续 ...

  2. 迭代决策树GBDT(MART)【理论】

    原文链接:BDT(MART) 迭代决策树入门教程 | 简介 一 GBDT 迭代决策树GBDT(Gradient Boosting Decision Tree)也被称为是MART(Multiple Ad ...

  3. GBDT(MART) 迭代决策树入门教程 | 简介 .

     GBDT(MART) 迭代决策树入门教程 | 简介 2013-12-23 16:26 2802人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: 数据挖掘相关(13) 作者同类文章X GB ...

  4. GBDT(MART) 迭代决策树入门教程

    在网上看到一篇对从代码层面理解gbdt比较好的文章,转载记录一下: GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Re ...

  5. GBDT(MART) 迭代决策树入门教程 | 简介

    版权声明:转载请注明出处:苏冉旭的博客 http://blog.csdn.net/suranxu007/ https://blog.csdn.net/suranxu007/article/detail ...

  6. GBDT决策树入门教程

    本文转载于:苏冉旭的博客 http://blog.csdn.net/suranxu007/ GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple ...

  7. GBDT 入门教程之原理、所解决的问题、应用场景讲解

    转载:https://toutiao.io/posts/u52t61/preview GBDT (Gradient Boosting Decision Tree) 又叫 MART (Multiple ...

  8. 随机森林和gbdt结合_决策树与迭代决策树(GBDT)

    关注数学,关注AI,关注我们公众号ID:Math-AI 阅读目录 1. 决策树的模型 2. 决策树的基本知识 3. ID3.C4.5&CART 4. Random Forest 5. GBDT ...

  9. [Machine Learning Algorithm] 决策树与迭代决策树(GBDT)

    阅读目录 1. 决策树的模型 2. 决策树的基本知识 3. ID3.C4.5&CART 4. Random Forest 5. GBDT 6. 参考内容 谈完数据结构中的树(详情见参照之前博文 ...

最新文章

  1. matlab画多个垂直的线段,新手求助,图形最后多出一条垂直线
  2. 穿了个GUI马甲的PyInstaller
  3. matplotlib 中将图直接从buffer中变为PIL 再到numpy
  4. 今天开始学习shell编程!!!
  5. java servlet 作用_servlet的作用,servlet有什么用?
  6. 2018年4月1日 蓝桥杯 C/C++B组答案 乘积尾零
  7. 2017西安交大ACM小学期 文本查找[AC自动机]
  8. springmvc新建拦截器
  9. 神经网络与深度学习——TensorFlow2.0实战(笔记)(五)(NumPy科学计算库<矩阵和随机数>python)
  10. 深度学习算法_深度学习算法
  11. 二叉树的遍历实验报告C语言,二叉树的建立与遍历实验报告(c语言编写,附源代码)...
  12. vue-select-lang
  13. 重新leetcode第1天——二叉树遍历算法讲解合集
  14. 数据仓库整合各系统码表和参数表
  15. 血脂测试软件,血脂检测,最全解读!
  16. Python爬虫——王者荣耀全皮肤拉取
  17. 详解二叉排序树及其基本操作
  18. 计算机最新行情调研报告,2020年中国笔记本电脑市场调研报告
  19. oracle rowid与rownum的使用
  20. 根据json 动态生成页面——问卷页面

热门文章

  1. 致敬!这些老外的开源技术养活了一票国产软件
  2. 《架构之美》阅读笔记06
  3. No Javascript on this page
  4. 几何画板菜单栏有哪些功能
  5. 浏览器卡死 (但是内存还不到一半)
  6. 爱不释手(Typingfaster)1.82beta ,请试用并反馈,谢谢
  7. 【转载】计算几何题目集锦
  8. Openresty+Nginx+Lua+Nginx_http_upstream_check_module 搭建
  9. vue 自定义组件使用v-model
  10. 未能加载文件或程序集 请移除注册表值 [HKLM/Software/Microsoft/Fusion!EnableLog] 解决方法