梯度提升树/GBDT(Gradient Descent Decision Tree)

作者 : 开心源码 本文共537个字,预计阅读时间需要2分钟 发布时间: 2022-05-12 共100人阅读

梯度提升树被认为是统计学习算法中性能最好的算法之一

算法释义

梯度提升树是以 CART 作为基函数,采使用加法模型和前向分步算法的一种梯度提升方法。


梯度提升树(GBDT)

GBDT 采使用前向分步算法,初始提升树 f0(x) = 0,第 t 步的模型:
f_t(x) = f_{t-1}(x) + T(x;γ_t)

利使用损失函数最小化求解,即:
γ_t = arg\min_{γ_t} \sum_{i=1}^N L(y_i, f_{t-1}(x_i) + T(x_i;γ_t))

当基函数是二叉回归树时,损失函数用平方损失函数,即:
\begin{align} & γ_t = arg\min_{γ_t} \sum_{i=1}^N (y_i - f_{t-1}(x_i) - T(x_i;γ_t))^2\\ & 令残差\, r_{t,i} = y_i - f_{t-1}(x_i)\\ & 则\, γ_t = arg\min_{γ_t} \sum_{i=1}^N (r_{t,i} - T(x_i;γ_t))^2\\ \end{align}

这就相当于对当前模拟数据的残差训练一个回归树 T(x; γt),显然这样的子问题比较简单。

梯度提升回归树算法步骤

输入:训练集 D
输出:回归提升树 fT(x)
(1) 初始化提升树:f0(x) = 0
(2) 迭代训练:t = 1,2,…,T
a. 计算当前模拟数据的残差:
r_{t,i} = y_i - f_{t-1}(x_i), i =1,2,...,N

b. 对当前残差训练一个回归树:
γ_t = arg\min_{γ_t} \sum_{i=1}^N (r_{t,i} - T(x_i;γ_t))^2

c. 升级提升树:
f_t(x) = f_{t-1}(x) + T(x;γ_t)

(3) 返回最终提升树:fT(x)

梯度提升

梯度提升树采使用前向分步算法,当损失函数是平方损失函数或者指数损失函数时,每一步优化相对简单,但对一般损失函数而言,优化过程可能变得比较困难,针对这一问题,Freidman 提出了梯度提升(Gradient Boosting)算法,该方法相似权重学习中的梯度下降方法,其关键是利使用损失函数在当前模型下的负梯度作为回归问题提升树中的残差的近似值,拟合一个回归树:
r_{t,i} = - \nabla_{f_{t-1}(x_i)} L(y_i, f_{t-1}(x_i))


参考资料

《机器学习技法》,林轩田
《统计学习方法》,李航

上一篇 目录 下一篇

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 梯度提升树/GBDT(Gradient Descent Decision Tree)

发表回复