Boosting决策树:GBDT
GBDT (Gradient Boosting Decision Tree)属于集成学习中的Boosting流派,迭代地训练基学习器 (base learner),当前基学习器依赖于上一轮基学习器的学习结果。 不同于AdaBoost自适应地调整样本的权值分布,GBDT是通过不断地拟合残差 (residual)来“纠错”基学习器的。
1. Gradient Boosting
Gradient Boosting Machine (GBM) 是由大牛Friedman [1,2] 提出来,基本思想非常简单:基学习器存在着分类/回归错误的情况,在下一轮基学习器学习时努力地纠正这个错误。在回归问题中,这个错误被称为残差。比如,在学习样本\((x, y)\)得到一个模型\(f\),预测值为\(\hat{y} = f(x)\);那么残差则为:
\[
y - \hat{y} = y- f(x)
\]
如果定义损失函数为平方损失\(\frac{1}{2}(y-f(x))^2\),那么其梯度为
\[
\frac{\partial \frac{1}{2}(y-f(x))^2}{\partial f(x)} = f(x) - y
\]
可以发现:残差为负梯度方向。对于平方损失,每一步优化是很简单的;但是,对于其他损失函数呢?Friedman利用负梯度近似残差,将Gradient Boosting推广到一般损失函数\(L(y, x)\)。步骤如下:
- 计算伪残差 (pseudo-residual),
\[
r_{im} = - \left[ \frac{\partial L(y_i, f(x_i))}{\partial f(x_i)} \right]_{f = f_{m-1}}
\]
- 基学习器\(h_m(x)\)拟合样本\(\{ (x_i, r_{im}) \}\);
- 计算最优乘子 (multiplier) \(\gamma_m\),使得
\[
\gamma_m = \mathop{\arg \min} \limits_{\gamma} \sum_{i} L(y_i, f_{m-1}(x) + \gamma h_m(x_i))
\]
- 更新模型
\begin{equation}
f_m(x) = f_{m-1}(x) + \gamma_m h_m(x)
\label{eq:update}
\end{equation}
如此迭代,直至结束或模型收敛;最后一步得到的模型\(f_M(x)\)即为GBM的最终模型。
2. GBDT
如果基学习器为决策树时,GBM则被称为GBDT。决策树本质上是对特征空间的划分\(\{ R_{jm} \}\),因此基学习器\(h_m(x)\)可改写为
\[
h_m(x) = \sum_j b_{jm} I(x \in R_{jm})
\]
其中,\(b_{jm}\)为预测值,\(I(.)\)为指示函数。那么,式子\eqref{eq:update}可以改写为
\[
f_m(x) = f_{m-1}(x) + \sum_j \gamma_{jm} I(x \in R_{jm})
\]
GBDT的算法步骤如下图所示(图片来自于 ESL [3]):

为了减小过拟合,通过Shrinkage的方式:
\[
f_m(x) = f_{m-1}(x) + \upsilon \cdot \gamma_m h_m(x)
\]
其中,\(\upsilon\)称之为学习率 (learning rate)。经验表明,当学习率\(\upsilon < 0.1\)时,泛化能力远远超过没有Shrinkage的模型(即\(\upsilon =1\))。但是,低学习率同时也带来了更多的迭代次数。
3. 参考资料
[1] Friedman, Jerome H. "Greedy function approximation: a gradient boosting machine." Annals of statistics (2001): 1189-1232.
[2] Friedman, Jerome H. "Stochastic gradient boosting." Computational Statistics & Data Analysis 38.4 (2002): 367-378.
[3] Friedman, Jerome, Trevor Hastie, and Robert Tibshirani. The elements of statistical learning. Springer, Berlin: Springer series in statistics, 2009.
[4] Cheng Li, A Gentle Introduction to Gradient Boosting.
Boosting决策树:GBDT的更多相关文章
- 随机森林(Random Forest),决策树,bagging, boosting(Adaptive Boosting,GBDT)
http://www.cnblogs.com/maybe2030/p/4585705.html 阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 ...
- 机器学习之梯度提升决策树GBDT
集成学习总结 简单易学的机器学习算法——梯度提升决策树GBDT GBDT(Gradient Boosting Decision Tree) Boosted Tree:一篇很有见识的文章 https:/ ...
- Ensemble Learning 之 Gradient Boosting 与 GBDT
之前一篇写了关于基于权重的 Boosting 方法 Adaboost,本文主要讲述 Boosting 的另一种形式 Gradient Boosting ,在 Adaboost 中样本权重随着分类正确与 ...
- [机器学习]梯度提升决策树--GBDT
概述 GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由 ...
- Boosting算法总结(ada boosting、GBDT、XGBoost)
把之前学习xgb过程中查找的资料整理分享出来,方便有需要的朋友查看,求大家点赞支持,哈哈哈 作者:tangg, qq:577305810 一.Boosting算法 boosting算法有许多种具体算法 ...
- 梯度提升决策树(GBDT)
1.提升树 以决策树为基函数的提升方法称为提升树.决策树可以分为分类树和回归树.提升树模型可以表示为决策树的加法模型. 针对不同的问题的提升术算法的主要区别就是损失函数的不同,对于回归问题我们选用平方 ...
- Bagging和Boosting 概念及区别
Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法.即将弱分类器组装成强分类器的方法. 首先介绍Boot ...
- Bagging和Boosting的区别
转:http://www.cnblogs.com/liuwu265/p/4690486.html Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的 ...
- Boosting和Bagging的异同
二者都是集成学习算法,都是将多个弱学习器组合成强学习器的方法. 1.Bagging (主要关注降低方差) Bagging即套袋法,其算法过程如下: A)从原始样本集中抽取训练集.每轮从原始样本集中使用 ...
随机推荐
- stick footer布局
需求: 将footer固定到底部.文章内容不足满屏时 footer在底部,超过满屏时footer在内容末尾. 方法一: <div id="wrap"> <div ...
- Java 静态代理与动态代理
代理模式 设想你的项目依赖第三方,但是你需要对其接口做一些数据检验.性能数据记录.异常处理等,合适的方法就是使用设计模式里的代理模式. 代理模式是常用的java设计模式,代理类与委托类有同样的接口,代 ...
- ssh相关命令
ssh命令 ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器. 语法ssh(选项)(参数)选项 -1:强制使用ssh协议版本1: -2:强制使用ssh协 ...
- Unity 学习Json篇
介绍 JSON是一个简单的,但功能强大的序列化数据格式.它定义了简单的类型,如布尔,数(int和float)和字符串,和几个数据结构:list和dictionnary.可以在http://JSON.o ...
- dispatch_group_t 日常使用注意事项
一.背景简介平时在进行多线程处理任务时,有时候希望多个任务之间存在着一种联系,希望在所有的任务执行完后做一些总结性处理.那么就可以将多个任务放在一个任务组中进行统一管理.dispatch提供了相应的A ...
- Python 基础 一
Python 基础 一 一.关于Python的介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum),这一两年在国内很流行,应用很广泛. 二.Python的基础知识(1) 1 ...
- 学好php可以做的事情真多!
学好php能做什么?其实学好php能做的事情很多! 一. 学好php可以就业 1:大中小公司通吃. 现在几乎所有有前途的公司都会在互联网上安家.只要在网上安家,就需要找这些方面的技术人员,而且很多公司 ...
- vue渲染数据后与owlCarousel轮播插件冲突,失效
主要原因:dom解析准备完成后,开始执行$(document).ready(); 而vue是在window.onload(页面加载完后才执行):所以会导致owlCarousel插件失效. 解决方案:数 ...
- hdu1011 Starship Troopers 树形DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 思路:很明显的树形背包 定义dp[root][m]表示以root为根,派m个士兵的最优解,那么d ...
- 精选this关键字的指向规律你记住了吗
1.首先要明确: 谁最终调用函数,this指向谁 this指向的永远只可能是对象!!!!! this指向谁永远不取决于this写在哪,而取 ...