前向分布算法
- 加法模型
Adaboost:每个基本模型的加权和: f ( x ) = ∑ m = 1 M β m ( x ; γ m ) f(x)=\sum_{m=1}^{M}\beta_m(x;\gamma _m) f(x)=∑m=1Mβm(x;γm)
简单来说就是每一步只需优化:
m i n ∑ i = 1 N L ( y i . β b ( x i ; γ ) ) min\sum_{i=1}^{N}L(y_i.\beta b(x_i;\gamma)) mini=1∑NL(yi.βb(xi;γ)) - 前向分布算法
对于数据集给定一损失函数 L ( y , f ( x ) ) L(y,f(x)) L(y,f(x)),基函数集合 { b ( x ; γ ) } \{b(x;\gamma)\} {b(x;γ)},那么前向分布算法就是在更新 f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) f_m(x)=f_{m-1}(x)+\beta_mb(x;\gamma_m) fm(x)=fm−1(x)+βmb(x;γm) - 二者关系
Adaboost为前向分布算法的特例。
梯度提升决策树(GBDT)
- 基于残差学习的提升书算法
对于数据集,计算每个样本残差 r m i = y i − f m − 1 ( x i ) , i = 1 , 2 , ⋯ , N r_{mi}=y_i-f_{m-1}(x_i),\qquad i=1,2,\cdots,N rmi=yi−fm−1(xi),i=1,2,⋯,N,拟合残差学习一棵回归树,得到 T ( x ; Θ m ) T(x;\Theta_m) T(x;Θm),更新 f m ( x ) = f m − 1 ( x ) + T ( x ; Θ m ) f_m(x)=f_{m-1}(x)+T(x;\Theta_m) fm(x)=fm−1(x)+T(x;Θm) - 基于梯度提升决策树算法(GBDT)
当损失函数是平方损失和指数损失时,每一步优化是相当简单的,但对于损失函数而言,往往每一步的优化不是那么容易。此时计算残差 r m i = − [ ∂ L ( y i , f ( x i ) ∂ f ( x i ) ] r_{mi}=-[\frac{\partial L(y_i,f(x_i)}{\partial f(x_i)}] rmi=−[∂f(xi)∂L(yi,f(xi)],计算 c m j = a r g m i n c ∑ x i ∈ R m j L ( y i , f m − 1 ( x i ) + c c_{mj}=argmin_c\sum_{x_i \in R_{mj} }L(y_i,f_{m-1}(x_i)+c cmj=argminc∑xi∈RmjL(yi,fm−1(xi)+c,更新 f m ( x ) = f m − 1 ( x ) + ∑ j = 1 J c m j I ( x ∈ R m j ) f_m(x)=f_{m-1}(x)+\sum_{j=1}^Jc_{mj}I(x\in R_{mj}) fm(x)=fm−1(x)+∑j=1JcmjI(x∈Rmj)