GBDT原理

GBDT

GBDT,全称Gradient Boosting Decision Tree。

CART

在GBDT中使用的回归树模型为CART。其算法为


[1]对于每个节点处,当前数据集为 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} D={(x1,y1),(x2,y2),...,(xn,yn)},对于每个特征 j j j,寻找最优划分节点 s s s,使得据此可将 D D D划分为 R 1 R_1 R1 R 2 R_2 R2,满足
min ⁡ j , s [ ∑ x i ∈ R 1 ( y i − c 1 ) 2 + ∑ x i ∈ R 2 ( y i − c 2 ) 2 ] \min\limits_{j,s}[\sum\limits_{x_i\in{R_1}}(y_i-c_1)^2+\sum\limits_{x_i\in{R_2}}(y_i-c_2)^2] j,smin[xiR1(yic1)2+xiR2(yic2)2]
其中
c 1 = 1 N 1 ∑ x i ∈ R 1 y i c_1=\frac{1}{N_1}\sum\limits_{x_i\in{R_1}}y_i c1=N11xiR1yi
c 2 = 1 N 2 ∑ x i ∈ R 2 y i c_2=\frac{1}{N_2}\sum\limits_{x_i\in{R_2}}y_i c2=N21xiR2yi

[2]对于每棵划分出来的子树,递归进行操作[1],直到满足停止条件。
[3]返回树T。


另外,若是分类树,则其划分依据为最小基尼指数
G i n i ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i ( D 2 ) Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)
当样本数少于既定阈值或样本Gini指数小于既定基尼指数或没有更多特征时则停止划分。这里不详述。
下面讲述剪枝过程。


[1]设 k = 0 k=0 k=0 T = T 0 T=T_0 T=T0 a = + ∞ a=+\infty a=+
[2]自下而上对内部节点 t t t计算:
g ( t ) = C t − C ( T t ) ∣ T t ∣ − 1 g(t)=\frac{C_t-C(T_t)}{|T_t|-1} g(t)=Tt1CtC(Tt)
a = m i n ( a , g ( t ) ) a=min(a,g(t)) a=min(a,g(t))
[3]自上而下的访问内部节点 t t t,对最小的 g ( t ) = a g(t)=a g(t)=a进行剪枝,并对叶节点 t t t以多数表决形式决定其类别,得到树 T T T
[4] k = k + 1 k=k+1 k=k+1 a k = a a_k=a ak=a T k = T T_k=T Tk=T
[5]如果 T T T为非单节点树,返回[3]
[6]对于产生的子树序列 { T 0 , T 1 , . . . , T n } \{T_0,T_1,...,T_n\} {T0,T1,...,Tn}分别计算损失,得到最优子树 T ∗ T^* T并返回。


梯度提升

GBDT作为boosting类模型中的一种,采用迭代的方式对学习器进行优化。假设前一轮迭代得到强学习器 f t − 1 ( x ) f_{t-1}(x) ft1(x),损失函数为 L ( y , f t − 1 ( x ) ) L(y,f_{t-1}(x)) L(y,ft1(x)),则本轮迭代目标为寻找CART回归树模型的弱学习器 h t ( x ) h_t(x) ht(x),使得本轮损失 L ( y , f t ( x ) = f t − 1 ( x ) + h t ( x ) ) L(y,f_t(x)=f_{t-1}(x)+h_t(x)) L(y,ft(x)=ft1(x)+ht(x))最小。

算法流程

[1]初始化弱学习器
f 0 ( x ) = a r g m i n γ ∑ i = 1 N L ( y i , γ ) f_0(x)=argmin_\gamma\sum\limits_{i=1}\limits^{N}L(y_i,\gamma) f0(x)=argminγi=1NL(yi,γ)
[2]对每个样本i=1,2,…,N,计算负梯度,即残差
r i m = − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 r_{im}=-[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}} rim=[f(xi)L(yi,f(xi))]f(x)=fm1
[3]将上一步得到的残差作为样本新的真实值,并将数据 ( x i , r i m ) ( i = 1 , 2 , . . . , N ) (x_i,r_{im})(i=1,2,...,N) (xi,rim)(i=1,2,...,N)作为下一棵树的训练数据,得到新的回归树 f m ( x ) f_m(x) fm(x),其对应叶子节点区域为 R j m , j = 1 , 2 , . . . , J R_{jm},j=1,2,...,J Rjm,j=1,2,...,J。其中 J J J为回归树的叶子节点的个数。
[4]对于叶子区域 j = 1 , 2 , . . . , J j=1,2,...,J j=1,2,...,J计算最佳拟合值
r j m = a r g m i n ∑ x i ∈ R j m L ( y i , f m − 1 ( x i ) + γ ) r_{jm}=argmin\sum\limits_{x_i\in{R_{jm}}}L(y_i,f_{m-1}(x_i)+\gamma) rjm=argminxiRjmL(yi,fm1(xi)+γ)
[5]更新学习器
f m ( x ) = f m − 1 ( x ) + ∑ j = 1 J γ j m I ( x ∈ R j m ) f_m(x)=f_{m-1}(x)+\sum\limits_{j=1}\limits^{J}\gamma _{jm}I(x \in R_{jm}) fm(x)=fm1(x)+j=1JγjmI(xRjm)
[6]从步骤[2]重复重复进行,直至满足迭代终止条件
[7]得到强学习器
f ( x ) = f M ( x ) = f 0 ( x ) + ∑ m = 1 M ∑ j = 1 J γ j m I ( x ∈ R j m ) f(x)=f_M(x)=f_0(x)+\sum\limits_{m=1}\limits^{M}\sum\limits_{j=1}\limits^{J}\gamma _{jm}I(x \in R_{jm}) f(x)=fM(x)=f0(x)+m=1Mj=1JγjmI(xRjm)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值