Fork me on GitHub

机器学习算法之Gradient Boost Decision Tree

0. Gradient Boost


在梯度下降方法中,每一次迭代分两步:第一步先找一个好的梯度方向,第二步决定在这个方向上走多远。而在Gradient Boosting中,同样是经过N次迭代,每次先找一个好的函数方向,然后决定在这个函数方向上走多远,如下图中$h(x_n)$即要找的函数方向,$\eta$决定在这个方向上走多远。

gb

1. 推导


假设我们要用GradientBoost做回归,去L2为error measure:

regression

我们先看黄色部分的优化问题,经过泰勒展开一番推导:

reduction

我们得到了一个问题,求一个$h$使得上式后面那项越小越好。如果我们不对$h$的大小做限制,那么最终$h$会走向无穷大或无穷小:$h(x_n) = -\propto·(S_n-y_n)$。为了避免这样的情况我们给$h(x_n)$加一个限制:

reg

所以最终这个问题就演变成了:通过对余数(residuals)($y_n-s_n$)进行回归找到一个$g_t = h$。这其实是一个简单的回归问题。

找到一个好的$g_t = h$之后,下一步就是要决定在这个方向上走多远:

reg3

这实际上是一个单变量的线性回归问题。

3. Gradient Boosted Decision Tree (GBDT)


将决策树作为base estimator,把以上所有东西放在一起,就得到了GBDT

GBDT

转载请注明出处:BackNode

My zhiFuBao

Buy me a cup of coffee

blogroll

social