划水一整天,模型看了仨!不错,虽然现在在打哈欠,还是很想把XGBoost梳理梳理
先从名字开始
XGBoost,eXtreme Gradient Boosting: em。。。。不理解
书上说,XGBoost有很好的性能,在各大比赛中大放异彩,行吧,冲这句,好好看看!
看了几篇,总感觉这个XGBoost不仅仅是对GBDT的改进版,还包含了对CART决策树的改进
- 首先,GBDT是经过泰勒一阶导出来的,XGBoost则是经过泰勒二阶导,越高阶导越接近原函数值
L ( y , f ( x ) ) = L m − 1 ( y , f m − 1 ( x ) ) + ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ [ f ( x ) − f m − 1 ( x ) ] + 1 2 ∗ ə L ( y , f m − 1 ( x ) ) 2 ə f m − 1 ( x ) 2 ∗ ( f ( x ) − f m − 1 ( x ) ) 2 L(y,f(x)) = L_{m-1}(y,f_{m-1}(x))+\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*[f(x)-f_{m-1}(x)]+\frac{1}{2}*\frac{ə^2_{L(y,f_{m-1}(x))}}{ə^2_{f_{m-1}(x)}}*(f(x)-f_{m-1}(x))^2 L(y,f(x))=Lm−1(y,fm−1(x))+əfm−1(x)əL(y,fm−1(x))∗[f(x)−fm−1(x)]+21∗əfm−1(x)2əL(y,fm−1(x))2∗(f(x)−fm−1(x))2
令 g i = ə L ( y i , f m − 1 ( x i ) ) ə f m − 1 ( x i ) g_i = \frac{ə_{L(y_i,f_{m-1}(x_i))}}{ə_{f_{m-1}(x_i)}} gi=əfm−1(xi)əL(yi,fm−1(xi)), h i = ə L ( y , f m − 1 ( x i ) ) 2 ə f m − 1 ( x i ) 2 h_i = \frac{ə^2_{L(y,f_{m-1}(x_i))}}{ə^2_{f_{m-1}(x_i)}} hi=əfm−1(xi)2əL(y,fm−1(xi))2, L ( y , f m − 1 ( x ) ) L(y,f_{m-1}(x)) L(y,fm−1(x))这仨都是前k-1轮的,相当于常数
令 f ( x ) = f m ( x ) f(x)=f_m(x) f(x)=fm(x),则有 T m = f m ( x ) − f m − 1 ( x ) T_m = f_m(x)-f_{m-1}(x) Tm=fm(x)−fm−1(x)
则 L k ( y , f m ( x ) ) = L m − 1 ( y , f m − 1 ( x ) ) + g i ∗ T m ( x i , θ m ) + 1 2 h i ∗ T m 2 ( x i , θ m ) L_k(y,f_m(x)) = L_{m-1}(y,f_{m-1}(x))+g_i*T_m(x_i,θ_m)+\frac{1}{2}h_i*T^2_m(x_i,θ_m) Lk(y,fm(x))=Lm−1(y,fm−1(x))+gi∗Tm(xi,θm)+21hi∗Tm2(xi,θm)
- 其次,XGBoost的优化①:增加正则化项 Ω ( T m ( x ) ) Ω(T_m(x)) Ω(Tm(x))
晕了...明天再说!