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 ...
随机推荐
- 如何正确的把 Java 数组 Array 转为列表 List
最近想把 java 数组转成 List,网上普遍的答案都是 Arrays.asList: String[] a = new String[] {"hello", "wor ...
- [py]python自省工具
参考 在日常生活中,自省(introspection)是一种自我检查行为.自省是指对某人自身思想.情绪.动机和行为的检查.伟大的哲学家苏格拉底将生命中的大部分时间用于自我检查,并鼓励他的雅典朋友们也这 ...
- Andrew Ng-ML-第九&十章-神经网络
1.神经网络模型1 图1 这是一个神经网络的模型,通常设置一个x0,作为偏执单元或者偏置(bias)神经元. 图2 这里最后一句话,说的是系数矩阵θ,神经网络模型中,如果当前在j层有s_j个单元,在j ...
- RMAN中%d %t %s %u,%p,%c 等代替变量的意义
backup incremental level 0 database format='LEV0_%d_%t_%U_%s_%p' format=string 文件路径和名称的格式串,其中可包含宏变量: ...
- 2018-2019-2 网络对抗技术 20165324 Exp3:免杀原理与实践
2018-2019-2 网络对抗技术 20165324 Exp3:免杀原理与实践 免杀原理及基础问题回答 免杀 1. 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...
- Redis缓存穿透问题及解决方案
上周在工作中遇到了一个问题场景,即查询商品的配件信息时(商品:配件为1:N的关系),如若商品并未配置配件信息,则查数据库为空,且不会加入缓存,这就会导致,下次在查询同样商品的配件时,由于缓存未命中,则 ...
- LeetCode-MinimumDepthOfBinaryTree
题目: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the ...
- FastDFS+nginx+keepalived集群搭建
安装环境 nginx-1.6.2 libfastcommon-master.zip FastDFS_v5.05.tar.gz(http://sourceforge.net/projects/fastd ...
- Functional Programming 资料收集
书籍: Functional Programming for Java Developers SICP(Structure and Interpretation of Computer Program ...
- python中的对象(三)
一.python对象 python使用对象模型来存储数据.构造任何类型的值都是一个对象. 所有python对象都拥有三个特性:身份.类型.值 身份:每个对象都有一个唯一的身份标识自己,任何对象的身份可 ...