优化目标:m个模型叠加起来最小化损失函数 {βm,αm}m=1M=argminL(y,∑m=1Mβmh(x,αm)) ,
设Fm(x)=Fm−1(x)+βmh(x,αm)=∑i=1mβmh(x,αm) ,
则βm,αm=argminL(y,Fm−1(x)+βmh(x,αm))
每一步新建的模型使得损失函数下降为当前步的负梯度方向。
gm(x)=−[∂Fm(x)∂L(y,Fm(x))]Fm(x),
为了使当前模型能够与负梯度方向一致,故优化该式子
βm,αm=argmin(gm(x)−βmh(x,αm))2
最后叠加到全部模型Fm(x)=Fm−1(x)+βmh(x,αm)
GBDT(Gradient Boosting Decision Tree)
每添加一个模型,朝着误差的负梯度方向下降,不能朝着牛顿方向下降吗?
泰勒展开
f(x)=0!f(x0)+1!f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+…+n!f(n)(x0)(x−x0)n+Rn(x)
常用的
ex=1+1!1x+2!1x2+3!1x3+o(x3)ln(1+x)=x−21x2+3!1x3+o(x3)sinx=x−3!1x3+5!1x5+∘(x5)arcsinx=x+21×3x3+2×41×3×5x5+2×4×61×3×5×7x7+∘(x7)cosx=1−2!1x2+4!1x4+o(x4)1−x1=1+x+x2+2!a(a−1)x2+3!a(a−1)(a−2)x3+o(x3)
LambdaMART
在排序中,大神直接定义了每步优化的梯度!!!然后套用了gradient boosting框架,就有了LambdaMART。
参考佳文
Gradient Boosting
GBDT(Gradient Boosting Decision Tree) 没有实现只有原理
台湾大学林轩田老师的讲课很清晰容易理解。
GBM之GBRT总结
GBDT 一个Python代码的解释
梯度提升算法