GBDT的基本原理

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

   

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

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

   

  1. 分类树

   

分裂的时候选取使得偏差降低最多的分裂框架

计算的技巧机器学习

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

  1. GBDT 二分类

GBDT在实现中能够彻底复用上面的计算方法框架,只是咱们的优化的目标函数不一样。post

这里使用的是 指数偏差函数,无论是预测正确仍是错误 偏差值都存在,可是正确的预测 会使得偏差值小于错误的预测 参考学习

AdaBoost and the Super Bowl of Classifiers优化

A Tutorial Introduction to Adaptive Boostingspa

关于经常使用偏差函数 参考 http://www.cnblogs.com/rocketfan/p/4083821.html设计

   

参考 Greedy Functon Approximation:A Gradient Boosting Machine

4.4节关于二分类状况偏差函数的设计

这里其实和上面给出的同样,只是增长了 log(1 +, 另外多了一个2,2yF), 参考前面的LossFunction http://www.cnblogs.com/rocketfan/p/4083821.html

的推导,其实这个应该算做LogLoss或者说是logistic regression, cross entropy error,也就是从probablity出发的logloss推导到output F(x)的表示就是上面的

式子,而它看上去恰好就是一个指数偏差函数。

严格意义上说是LogLoss不是指数偏差 不过LogLoss和指数偏差看上去比较类似。

   

这个F值其实就是逻辑回归的思路,相似 语音语言处理一书27页解释,线性加权的值(output)用来预测 p(true)和p(false)的比例的log值(回归值是实数范围取值不适合预测0-1,作了一个转换),越是接近true,那么F(x)越接近+无穷(对应最大可能性判断true), p(false)越大 那么越接近-无穷(对应最大可能性判断false)

   

F(X) 对应 feature X 当前的回归预测值也就是多棵树通过决策到达叶子节点的输出值output(x)的累加值。N个样本则F(x)N个维度,当开始没有分裂的时候全部样本在一个节点则全部F(x)对应一个相同的值,分裂一次后两个叶子节点则F(X)对应可能到不一样的叶子节点从而可能有两个不一样的值。

对偏差函数计算关于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)沿着梯度的方向的累加,目标是使得咱们的

偏差函数达到最小。

相关文章
相关标签/搜索