GBDT 简述
GBDT 全称 Gradient Boosting Decision Tree,梯度提升决策树。
梯度增强决策树的思想来源于两个地方,首先是增强算法(Boosting),然后是梯度增强(Gradient Boosting)的想法。
增强算法是一种试图用弱学习器提升为强学习器的算法。这种算法中比较成熟、有代表性的是 AdaBoost 算法。增强算法的工作机制比较类似,先从初始训练集学习出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使前面做错的训练样本后续得到更多关注,再从调整后的训练样本上训练下一个基学习器。如此重复进行,直到基学习器的数目达到事先指定的值,最终将所有基学习器进行加权结合。
AdaBoost 提出后不久,机器学习和统计学家 Friedman 从统计视角解释 AdaBoost 实际上是基于加性模型以类似牛顿迭代法来优化指数损失函数,受此启发,杰米姆提出了梯度增强的想法。
梯度增强也是希望用一系列的弱学习器来达到一个强学习器的效果,从而逼近目标变量的值。根据加性模型的假设,这种逼近效果是这些弱学习器的加权平均。
如何构造这些弱学习器和加权平均的权重呢?
梯度增强采用了优化理论的视角,使得构造这些部分变得更加直观。
首先这是个迭代算法,每一轮迭代,把当前所有学习器的加权平均结果作为这一轮的函数值,然后求得针对某一个损失函数对于当前所有学习器的参数的一个梯度,然后利用某个弱学习器算法来拟合这个梯度,这个弱学习器算法可以是线性回归模型,逻辑斯特回归模型等。最后,利用线查找的方式找到权重。说白了,就是利用简单模型拟合不同迭代轮数的梯度。
梯度增强可跟梯度下降对比,梯度下降的最终预测式也可写成加和的形式,每一轮梯度的值和学习率共同叠加形成最终结果。这和构造弱学习器的加权平均联系起来看,每个梯度的值可以认为是个弱学习器,学习速率就是权重。
理解了梯度增强,梯度增强决策树就容易理解了,就是用决策树来当作弱学习器,去拟合梯度增强过程中的梯度。然后融合到整个梯度增强的过程中。
最终,梯度增强决策树就是每一轮迭代都拟合一个新的决策树,来表达当前的梯度,然后跟前面所有的决策树进行叠加。在这个过程中,决策树的形状,如多少层、总共有多少节点等,都是超参数。总共有多少决策树,也就是有多少轮迭代,是重要的调节参数,也是防止过拟合的重要手段。
参考资料
- 洪亮劼,机器学习排序算法经典模型:GBDT
GBDT 简述的更多相关文章
- 提升学习算法简述:AdaBoost, GBDT和XGBoost
1. 历史及演进 提升学习算法,又常常被称为Boosting,其主要思想是集成多个弱分类器,然后线性组合成为强分类器.为什么弱分类算法可以通过线性组合形成强分类算法?其实这是有一定的理论基础的.198 ...
- GBDT算法简述
提升决策树GBDT 梯度提升决策树算法是近年来被提及较多的一个算法,这主要得益于其算法的性能,以及该算法在各类数据挖掘以及机器学习比赛中的卓越表现,有很多人对GBDT算法进行了开源代码的开发,比较火的 ...
- GBDT 梯度提升决策树简述
首先明确一点,gbdt 无论用于分类还是回归一直都是使用的CART 回归树.不会因为我们所选择的任务是分类任务就选用分类树,这里面的核心是因为gbdt 每轮的训练是在上一轮的训练的残差基础之上进行训练 ...
- 随机森林(Random Forest),决策树,bagging, boosting(Adaptive Boosting,GBDT)
http://www.cnblogs.com/maybe2030/p/4585705.html 阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 ...
- 机器学习(七)—Adaboost 和 梯度提升树GBDT
1.Adaboost算法原理,优缺点: 理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络.对于决策树,Adaboost分类用了CART分类 ...
- 简述 OAuth 2.0 的运作流程
本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...
- JavaScript单线程和浏览器事件循环简述
JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...
- scikit-learn 梯度提升树(GBDT)调参小结
在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...
- 梯度提升树(GBDT)原理小结
在集成学习之Adaboost算法原理小结中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting De ...
随机推荐
- U盘安装win10操作系统
https://www.zhihu.com/question/39207359 1:进入微软官方网站,点击立即下载工具,下载完成mediacreationtool,双击打开,接受协议 https ...
- 机器学习理论基础学习14.2---线性动态系统-粒子滤波 particle filter
一.背景 与卡曼滤波不同的是,粒子滤波假设隐变量之间(隐变量与观测变量之间)是非线性的,并且不满足高斯分布,可以是任意的关系. 求解的还是和卡曼滤波一样,但由于分布不明确,所以需要用采样的方法求解. ...
- git客户端msysGit和TortoiseGit使用
windows下使用TortoiseGit代替Git命令行操作(参考http://www.cnblogs.com/candle806/p/4071656.html) 1.配置TortoiseGit与m ...
- unity3d-准备工作
1.软件下载 想进行unity3d游戏开发,首先unity3d官网下载软件:unity3d下载 2.运行游戏界面 3.安装Visual Studio Tools for Unity unity3d自带 ...
- DIV CSS 绘制风车
我得说,CSS和DIV是个有趣的东西. 由于脑袋一无聊,突然想,画个DIV风车怎么样,于是就画了一个. border的风格可以自主选择. 上代码: <style> *{ margin:0p ...
- Python tricks(4) -- with statement
简介 with是从2.5版本引入的一个语法. 这个语法本身是为了解决try..finally繁琐的释放各类资源(文件句柄, Lock等)的问题. 如果想在旧版本中使用这个功能, 直接引入future模 ...
- linux服务器---squid缓存
Squid缓存 代理服务器会在本地硬盘设置缓存,这样可以提高网络效率 1修改squid配置文件“/etc/squid/squid.conf”,参数“cache_dir_ufs”就是设置缓存目录的 [r ...
- Linux基础命令---mkfs
mkfs 在磁盘分区上创建ext2.ext3.ext4.ms-dos.vfat文件系统,默认情况下会创建ext2.mkfs用于在设备上构建Linux文件系统,通常是硬盘分区.文件要么是设备名称(例如/ ...
- java,swift,oc互相转换,html5 web开发跨平台
java,swift,oc互相转换,html5 web开发跨平台 写一个java->swift的程序,这个程序是做跨平台系统的核心部分swift和oc到java也在考虑之列Swift->J ...
- angular Js 回车处理
不说多的,就一个代码: <input type="search" class="am-form-field" placeholder="输入搜索 ...