gradient boosting

优化目标:m个模型叠加起来最小化损失函数 {βm,αm}m=1M=argminL(y,m=1Mβmh(x,αm)){\{\beta_m,\alpha_m\}}_{m=1}^M = \arg \min L(y, \sum_{m=1}^M \beta_m h(x,\alpha_m)) , 设Fm(x)=Fm1(x)+βmh(x,αm)=i=1mβmh(x,αm)F_m(x) = F_{m-1}(x) + \beta_m h(x,\alpha_m) = \sum_{i=1}^m \beta_m h(x,\alpha_m) , 则βm,αm=argminL(y,Fm1(x)+βmh(x,αm))\beta_m,\alpha_m = \arg \min L(y, F_{m-1}(x) + \beta_m h(x,\alpha_m))

每一步新建的模型使得损失函数下降为当前步的负梯度方向。 gm(x)=[L(y,Fm(x))Fm(x)]Fm(x)g_m(x) = - [\frac {\partial L(y,F_m(x))}{\partial F_m(x)} ]_{F_m(x)},

为了使当前模型能够与负梯度方向一致,故优化该式子 βm,αm=argmin(gm(x)βmh(x,αm))2\beta_m ,\alpha_m = \arg \min (g_m(x) - \beta_m h(x,\alpha_m) )^2 最后叠加到全部模型Fm(x)=Fm1(x)+βmh(x,αm)F_m(x) = F_{m-1}(x) + \beta_m h(x,\alpha_m)

Gradient Boosting

台湾大学的讲义:

GBDT(Gradient Boosting Decision Tree)

在gradient boosting框架下,每个基模型都是决策树。 GBDT

每添加一个模型,朝着误差的负梯度方向下降,不能朝着牛顿方向下降吗?

泰勒展开

f(x)=f(x0)0!+f(x0)1!(xx0)+f(x0)2!(xx0)2++f(n)(x0)n!(xx0)n+Rn(x)f ( x ) = \frac { f \left( x _ { 0 } \right) } { 0 ! } + \frac { f ^ { \prime } \left( x _ { 0 } \right) } { 1 ! } \left( x - x _ { 0 } \right) + \frac { f ^ { \prime \prime } \left( x _ { 0 } \right) } { 2 ! } \left( x - x _ { 0 } \right) ^ { 2 } + \ldots + \frac { f ^ { ( n ) } \left( x _ { 0 } \right) } { n ! } \left( x - x _ { 0 } \right) ^ { n } + R _ { n } ( x )

常用的

ex=1+11!x+12!x2+13!x3+o(x3)ln(1+x)=x12x2+13!x3+o(x3)sinx=x13!x3+15!x5+(x5)arcsinx=x+12×x33+1×32×4×x55+1×3×52×4×6×x77+(x7)cosx=112!x2+14!x4+o(x4)11x=1+x+x2+a(a1)2!x2+a(a1)(a2)3!x3+o(x3)\begin{array} { l } { e ^ { x } = 1 + \frac { 1 } { 1 ! } x + \frac { 1 } { 2 ! } x ^ { 2 } + \frac { 1 } { 3 ! } x ^ { 3 } + o \left( x ^ { 3 } \right) } \\ { \ln ( 1 + x ) = x - \frac { 1 } { 2 } x ^ { 2 } + \frac { 1 } { 3 ! } x ^ { 3 } + o \left( x ^ { 3 } \right) } \\ { \sin x = x - \frac { 1 } { 3 ! } x ^ { 3 } + \frac { 1 } { 5 ! } x ^ { 5 } + \circ \left( x ^ { 5 } \right) } \\ { \arcsin x = x + \frac { 1 } { 2 } \times \frac { x ^ { 3 } } { 3 } + \frac { 1 \times 3 } { 2 \times 4 } \times \frac { x ^ { 5 } } { 5 } + \frac { 1 \times 3 \times 5 } { 2 \times 4 \times 6 } \times \frac { x ^ { 7 } } { 7 } + \circ \left( x ^ { 7 } \right) } \\ { \cos x = 1 - \frac { 1 } { 2 ! } x ^ { 2 } + \frac { 1 } { 4 ! } x ^ { 4 } + o \left( x ^ { 4 } \right) } \\ { \frac { 1 } { 1 - x } = 1 + x + x ^ { 2 } + \frac { a ( a - 1 ) } { 2 ! } x ^ { 2 } + \frac { a ( a - 1 ) ( a - 2 ) } { 3 ! } x ^ { 3 } + o \left( x ^ { 3 } \right) } \end{array}

LambdaMART

在排序中,大神直接定义了每步优化的梯度!!!然后套用了gradient boosting框架,就有了LambdaMART。

参考佳文

Gradient Boosting GBDT(Gradient Boosting Decision Tree) 没有实现只有原理 台湾大学林轩田老师的讲课很清晰容易理解。

GBM之GBRT总结

GBDT 一个Python代码的解释

梯度提升算法

Last updated

Was this helpful?