码迷,mamicode.com
首页 > 其他好文 > 详细

GBDT的基本原理

时间:2015-03-08 15:29:50      阅读:543      评论:0      收藏:0      [点我收藏+]

标签:

这里以二元分类为例子,给出最基本原理的解释

? ?

GBDT 是多棵树的输出预测值的累加

GBDT的树都是 回归树 而不是分类树

? ?

  1. 分类树

技术分享

? ?

分裂的时候选取使得误差下降最多的分裂

技术分享

计算的技巧

技术分享

最终分裂收益按照下面的方式计算,注意圆圈内的部分是固定值

技术分享

  1. GBDT 二分类

GBDT在实现中可以完全复用上面的计算方法框架,只是我们的优化的目标函数不同。

这里使用的是 指数误差函数,不管是预测正确还是错误 误差值都存在,但是正确的预测 会使得误差值小于错误的预测 参考

AdaBoost and the Super Bowl of Classi?ers

A Tutorial Introduction to Adaptive Boosting

技术分享

关于常用误差函数 参考 http://www.cnblogs.com/rocketfan/p/4083821.html

? ?

参考 Greedy Functon Approximation:A Gradient Boosting Machine

4.4节关于二分类情况误差函数的设计

技术分享

这里其实和上面给出的一样,只是增加了 log(1 +, 另外多了一个2,2yF)

技术分享

? ?

这个F值其实就是逻辑回归的思路,类似 语言语言处理一书27页解释,线性加权的值用来预测 p(true) p(false)的比例,越是接近true,那么F(x)越接近1 p(false)越大 那么越接近0

技术分享

? ?

对误差函数计算关于F的梯度,误差函数是

技术分享

变量是F(x)

技术分享

? ?

考虑learning_rate之后是 (@TODO)

技术分享

F(X) 对应 叶子节点中一个样本对应它的feature X 当前的预测值

参考 机器学习概率角度 一书的16

技术分享

? ?

? ?

我们的分裂目标从上面回归树基本算法中的希望逼近y 变成了 逼近梯度值 r_im

也就是说当前树是预测负梯度值的。

F_m(x) = F_m-1(x) + learning_rate*(当前树的预测值(也就是预测负梯度..)) //@TODO check

? ?

再对比下ng课件最简单的梯度下降 针对regression的例子

技术分享

? ?

技术分享

? ?

我们采用的每颗树更新策略是针对F(x)的,而F(x)沿着梯度的方向的累加,目标是使得我们的

技术分享

误差函数达到最小。

GBDT的基本原理

标签:

原文地址:http://www.cnblogs.com/rocketfan/p/4321673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!