GBDT算法梳理

GBDT有很多简称,有GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree),其实都是指的同一种算法。

加法模型

一、前向分布算法

f(x)=\sum_{m=1}^{M}{\beta_{m}b(x;\gamma_{m})}

其中, b(x;\gamma_{m}) 为基函数, \gamma_{m} 为基函数的参数, \beta_{m} 为基函数的系数。

在给定训练数据及损失函数 L(y,f(x)) 的条件下,学习加法模型成为损失函数极小化问题:

min_{\beta_{m},\gamma_{m}}\sum_{i=1}^{N}{L(y_{i},\sum_{m=1}^{M}{\beta_{m}b(x_{i};\gamma_{m})})} ,同时求解这么多参数会很复杂。

前向分步算法求解这一优化问题的思路:因为学习的是加法模型,如果能够从前向后,每一步只学习一个基函数及其系数,逐步去逼近上述的目标函数式,就可简化优化的复杂度,每一步只需优化如下损失函数:

min_{\beta,\gamma}\sum_{i=1}^{N}{L(y_{i},\beta}b(x;\gamma))(每步学习一个基函数和系数)

前向分步算法流程:

输入:训练数据集T=({ (x_{1},y_{1}),(x_{2},y_{2}),...(x_{N},y_{N}) });损失函数L(y,f(x));基函数集{ b(x;\gamma) };

输出:加法模型f(x)

(1) 初始化 f_{0}(x)=0

(2) 对m=1,2,...,M

(a) 极小化损失函数

(\beta_{m},\gamma_{m})=arg min_{\beta,\gamma}\sum_{i=1}^{N}{L(y_{i},f_{m-1}(x_{i})+\beta}b(x_{i};\gamma))

得到参数 \beta_{m},\gamma_{m}

(b)更新

f_{m}(x)=f_{m-1}(x)+\beta_{m}b(x;\gamma_{m})

(3)得到加法模型

f(x)=f_{M}(x)=\sum_{m=1}^{M}{\beta_{m}}b(x;\beta_{m})

二、负梯度拟合

提升树用加法模型与前向分布算法实现学习的优化过程。当损失函数为平方损失和指数损失函数时,每一步优化是很简单的。但对于一般损失函数而言,往往每一步都不那么容易。对于这问题,Freidman提出了梯度提升算法。这是利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值:

-[\frac{\partial L(y,f(x_{i}))}{\partial f(x_{i})}]_{f(x)=f_{m-1}(x)}

作为回归问题在当前模型的残差的近似值,拟合一个回归树。

为什么要拟合负梯度呢?这就涉及到泰勒公式和梯度下降法了。

泰勒公式的形式是这样的:

  • 定义:泰勒公式是一个用函数在某点的信息描述其附近取值的公式。
  • 基本形式: f(x)=\sum_{n=0}^{\infty}{\frac{f^{(n)}(x_{0})}{n!}}(x-x_{0})^{n}
  • 一阶泰勒展开: f(x)\approx f(x_{0})+f^{'}(x_{0})(x-x_{0})

梯度下降法

在机器学习任务中,需要最小化损失函数

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值