本文主要介绍GBDT(Gradient Boosting Decision Tree)的实现原理。
算法
其中, F 0 F_0 F0表示决策回归树的初始值。
损失函数为:
ψ ( y , F ( x ) ) = − y l o g e ( p ) − ( 1 − y ) l o g e ( 1 − p ) \psi(y,F(x)) = -ylog_e(p) - (1-y)log_e(1-p) ψ(y,F(x))=−yloge(p)−(1−y)loge(1−p),其中 p = 1 1 + e x p ( − F ( x ) ) p = \frac{1}{1 + exp(-F(x))} p=1+exp(−F(x))1
推导过程
- 损失函数处理
首先进行化简:
ψ ( y , F ( x ) ) = y l n ( 1 + e x p ( − F ( x ) ) ) − ( 1 − y ) l n ( e x p ( − F ( x ) ) 1 + e x p ( − F ( x ) ) ) = y l n ( 1 + e x p ( − F ( x ) ) ) − ( 1 − y ) ( − F ( x ) − l n ( 1 + e x p ( − F ( x ) ) ) ) = ( 1 − y ) F ( x ) + y l n ( 1 + e x p ( − F ( x ) ) ) + ( 1 − y ) l n ( 1 + e x p ( − F ( x ) ) ) = ( 1 − y ) F ( x ) + l n ( 1 + e x p ( − F ( x ) ) ) = − y F ( x ) + F ( x ) + l n ( 1 + e x p ( − F ( x ) ) ) = − y F ( x ) + l n ( e x p ( F ( x ) ) ) + l n ( 1 + e x p ( − F ( x ) ) ) = − y F ( x ) + l n ( e x p ( F ( x ) ) ∗ ( 1 + e x p ( − F ( x ) ) ) = − y F ( x ) + l n ( 1 + e x p ( F ( x ) ) ) = − ( y F ( x ) − l n ( 1 + e x p ( F ( x ) ) ) ) \psi(y,F(x)) = yln(1 + exp(-F(x))) - (1-y)ln(\frac{exp(-F(x))}{1 + exp(-F(x))}) \\ = yln(1 + exp(-F(x))) - (1 - y)(-F(x) - ln(1 + exp(-F(x)))) \\ = (1 -y)F(x) + yln(1 + exp(-F(x))) + (1 - y)ln(1 + exp(-F(x))) \\ = (1 - y)F(x) + ln(1 + exp(-F(x))) \\ = -yF(x) + F(x) + ln(1 + exp(-F(x))) \\ = -yF(x) + ln(exp(F(x))) + ln(1 + exp(-F(x))) \\ = -yF(x) + ln(exp(F(x))*(1 + exp(-F(x))) \\ = -yF(x) + ln(1 + exp(F(x))) \\ = -(yF(x) - ln(1 + exp(F(x)))) ψ(y,F(x))=yln(1+exp(−F(x)))−(1−y)ln(1+exp(−F(x))exp(−F(x)))=yln(1+exp(−F(x)))−(1−y)(−F(x)−ln(1+exp(−F(x))))=(1−y)F(x)+yln(1+exp(−F(x)))+(1−y)ln(1+exp(−F(x)))=(1−y)F(x)+ln(1+exp(−F(x)))=−yF(x)+F(x)+ln(1+exp(−F(x)))=−yF(x)+ln(exp(F(x)))+ln(1+exp(−F(x)))=−yF(x)+ln(exp(F(x))∗(1+exp(−F(x)))=−yF(x)+ln(1+exp(F(x)))=−(yF(x)−ln(1+exp(F(x))))
接着进行求导:
ψ ′ ( y , F ( x ) ) = − y + σ ( F ( x ) ) \psi'(y,F(x)) = -y + \sigma(F(x)) ψ′(y,F(x))=−y+σ(F(x)),其中 σ ( F ( x ) ) = 1 1 + e x p ( − F ( x ) ) \sigma(F(x)) = \frac{1}{1 + exp(-F(x))} σ(F(x))=1+exp(−F(x))1
ψ ′ ′ ( y , F ( x ) ) = σ ( F ( x ) ) ( 1 − σ ( F ( x ) ) ) \psi''(y,F(x)) = \sigma(F(x))(1 - \sigma(F(x))) ψ′′(y,F(x))=σ(F(x))(1−σ(F(x)))
- 决策回归树初始值计算
F 0 ( x ) = ρ F_0(x) = \rho F0(x)=ρ
F 0 ( x ) = a r g m i n ρ ∑ i = 1 N ψ ( y i , ρ ) = a r g m i n ρ H ( ρ ) = − ∑ i = 1 N ( y i ρ − l o g ( 1 + e x p ( ρ ) ) ) F_0(x) = {argmin}_{\rho}\sum\limits_{i = 1}^N\psi(y_i,\rho) \\ = argmin_{\rho}H(\rho) \\ = -\sum\limits_{i=1}^N(y_i\rho -log(1 + exp(\rho))) F<