GBDT 全称 Gradient Boosting Decision Tree,梯度提升决策树。

梯度增强决策树的思想来源于两个地方,首先是增强算法(Boosting),然后是梯度增强(Gradient Boosting)的想法。

增强算法是一种试图用弱学习器提升为强学习器的算法。这种算法中比较成熟、有代表性的是 AdaBoost 算法。增强算法的工作机制比较类似,先从初始训练集学习出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使前面做错的训练样本后续得到更多关注,再从调整后的训练样本上训练下一个基学习器。如此重复进行,直到基学习器的数目达到事先指定的值,最终将所有基学习器进行加权结合。

AdaBoost 提出后不久,机器学习和统计学家 Friedman 从统计视角解释 AdaBoost 实际上是基于加性模型以类似牛顿迭代法来优化指数损失函数,受此启发,杰米姆提出了梯度增强的想法。

梯度增强也是希望用一系列的弱学习器来达到一个强学习器的效果,从而逼近目标变量的值。根据加性模型的假设,这种逼近效果是这些弱学习器的加权平均。

如何构造这些弱学习器和加权平均的权重呢?

梯度增强采用了优化理论的视角,使得构造这些部分变得更加直观。

首先这是个迭代算法,每一轮迭代,把当前所有学习器的加权平均结果作为这一轮的函数值,然后求得针对某一个损失函数对于当前所有学习器的参数的一个梯度,然后利用某个弱学习器算法来拟合这个梯度,这个弱学习器算法可以是线性回归模型,逻辑斯特回归模型等。最后,利用线查找的方式找到权重。说白了,就是利用简单模型拟合不同迭代轮数的梯度。

梯度增强可跟梯度下降对比,梯度下降的最终预测式也可写成加和的形式,每一轮梯度的值和学习率共同叠加形成最终结果。这和构造弱学习器的加权平均联系起来看,每个梯度的值可以认为是个弱学习器,学习速率就是权重。

理解了梯度增强,梯度增强决策树就容易理解了,就是用决策树来当作弱学习器,去拟合梯度增强过程中的梯度。然后融合到整个梯度增强的过程中。

最终,梯度增强决策树就是每一轮迭代都拟合一个新的决策树,来表达当前的梯度,然后跟前面所有的决策树进行叠加。在这个过程中,决策树的形状,如多少层、总共有多少节点等,都是超参数。总共有多少决策树,也就是有多少轮迭代,是重要的调节参数,也是防止过拟合的重要手段。

参考资料

  • 洪亮劼,机器学习排序算法经典模型:GBDT

GBDT 简述的更多相关文章

  1. 提升学习算法简述:AdaBoost, GBDT和XGBoost

    1. 历史及演进 提升学习算法,又常常被称为Boosting,其主要思想是集成多个弱分类器,然后线性组合成为强分类器.为什么弱分类算法可以通过线性组合形成强分类算法?其实这是有一定的理论基础的.198 ...

  2. GBDT算法简述

    提升决策树GBDT 梯度提升决策树算法是近年来被提及较多的一个算法,这主要得益于其算法的性能,以及该算法在各类数据挖掘以及机器学习比赛中的卓越表现,有很多人对GBDT算法进行了开源代码的开发,比较火的 ...

  3. GBDT 梯度提升决策树简述

    首先明确一点,gbdt 无论用于分类还是回归一直都是使用的CART 回归树.不会因为我们所选择的任务是分类任务就选用分类树,这里面的核心是因为gbdt 每轮的训练是在上一轮的训练的残差基础之上进行训练 ...

  4. 随机森林(Random Forest),决策树,bagging, boosting(Adaptive Boosting,GBDT)

    http://www.cnblogs.com/maybe2030/p/4585705.html 阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 ...

  5. 机器学习(七)—Adaboost 和 梯度提升树GBDT

    1.Adaboost算法原理,优缺点: 理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络.对于决策树,Adaboost分类用了CART分类 ...

  6. 简述 OAuth 2.0 的运作流程

    本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...

  7. JavaScript单线程和浏览器事件循环简述

    JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...

  8. scikit-learn 梯度提升树(GBDT)调参小结

    在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...

  9. 梯度提升树(GBDT)原理小结

    在集成学习之Adaboost算法原理小结中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting De ...

随机推荐

  1. vs2015 相关

    VS2015一共有3个版本,Visual Studio Community(社区版).Visual Studio Professional(专业版).Visual Studio Enterprise( ...

  2. springmvc学习笔记一框架的理解

    SpringMVC现在在很多公司都很流行,所以这个框架对我们来说,是很重要的. 首先我们对比mvc来分析springmvc这个框架是怎么设计,以及它的工作的流程. 首先来看mvc: 1.  用户发起r ...

  3. 新浪微博 SAE

    一.云平台中云是指互联网,网络的一种比喻说法,顾名思义,这种平台允许开发者们或是将写好的程序放在“云”里运行,或是使用“云”里提供的服务,或二者皆是. 二.开发类云平台比较: 1.鼻祖 GOOGLE ...

  4. JSP—中文乱码

    中文乱码问题? --------------------------------------- 不乱码的条件: 1.JSP页面本身的编码 pageEncoding UTF-8 (把jsp页面翻译成ja ...

  5. strus2 框架介绍

    strus2 执行过程: ActionMapper会去找ActionMapping查找URL请求的映射 1:ActionMapping这个类用name+namespace确定请求的映射, (但是仍然不 ...

  6. Verilog篇(四)时序模型

    时序模型:仿真器的时间推进模型,它反映了推进仿真时间和调度事件的方式. 1)门级时序模型:适用于分析所有的连续赋值语句,过程连续赋值语句,门级原语,用户自定义原语. 特点:任意时刻,任意输入变化都将重 ...

  7. BabelMap 12.0.0.1 汉化版(2019年3月11日更新)

    软件简介 BabelMap 是一个免费的字体映射表工具,可辅助使用<汉字速查>程序. 该软件可使用系统上安装的所有字体浏览 Unicode 中的十万个字符,还带有拼音及部首检字法,适合文献 ...

  8. 持续集成之二:搭建SVN服务器(subversion)

    安装环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) jdk1.7.0_80 subversion-1.10.3.tar.gz apr-1. ...

  9. 【转】编程思想之多线程与多进程(3)——Java中的多线程

    <编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程>一文详细讲述了线程.进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础.本文将接着讲一下Java中多线程程序的 ...

  10. linux查看是否有某个运行的进程命令

    linux查看是否有某个运行的进程命令:例如,查询是否包含 “my_post” 关键字的进程 ps aux | grep my_post ps aux | grep  my_post | grep - ...