0. Gradient Boost
在梯度下降方法中,每一次迭代分两步:第一步先找一个好的梯度方向,第二步决定在这个方向上走多远。而在Gradient Boosting
中,同样是经过N次迭代,每次先找一个好的函数方向,然后决定在这个函数方向上走多远,如下图中$h(x_n)$即要找的函数方向,$\eta$决定在这个方向上走多远。
1. 推导
假设我们要用GradientBoost
做回归,去L2为error measure:
我们先看黄色部分的优化问题,经过泰勒展开一番推导:
我们得到了一个问题,求一个$h$使得上式后面那项越小越好。如果我们不对$h$的大小做限制,那么最终$h$会走向无穷大或无穷小:$h(x_n) = -\propto·(S_n-y_n)$。为了避免这样的情况我们给$h(x_n)$加一个限制:
所以最终这个问题就演变成了:通过对余数(residuals)($y_n-s_n$)进行回归找到一个$g_t = h$。这其实是一个简单的回归问题。
找到一个好的$g_t = h$之后,下一步就是要决定在这个方向上走多远:
这实际上是一个单变量的线性回归问题。
3. Gradient Boosted Decision Tree (GBDT)
将决策树作为base estimator
,把以上所有东西放在一起,就得到了GBDT
: