GBDT

GBDT,全称Gradient Boosting Decision Tree。

CART

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


[1]对于每个节点处,当前数据集为D={(x1,y1),(x2,y2),...,(xn,yn)}D=\\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\\}D={(x1,y1),(x2,y2),...,(xn,yn)},对于每个特征jjj,寻找最优划分节点sss,使得据此可将DDD划分为R1R_1R1R2R_2R2,满足
minj,s[xiR1(yic1)2+xiR2(yic2)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]
其中
c1=1N1xiR1yic_1=\\frac{1}{N_1}\\sum\\limits_{x_i\\in{R_1}}y_ic1=N11xiR1yi
c2=1N2xiR2yic_2=\\frac{1}{N_2}\\sum\\limits_{x_i\\in{R_2}}y_ic2=N21xiR2yi

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


另外,若是分类树,则其划分依据为最小基尼指数
Gini(D,A)=D1DGini(D1)+D2DGini(D2)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=0k=0k=0T=T0T=T_0T=T0a=+a=+\\inftya=+
[2]自下而上对内部节点ttt计算:
g(t)=CtC(Tt)Tt1g(t)=\\frac{C_t-C(T_t)}{|T_t|-1}g(t)=Tt1CtC(Tt)
a=min(a,g(t))a=min(a,g(t))a=min(a,g(t))
[3]自上而下的访问内部节点ttt,对最小的g(t)=ag(t)=ag(t)=a进行剪枝,并对叶节点ttt以多数表决形式决定其类别,得到树TTT
[4]k=k+1k=k+1k=k+1ak=aa_k=aak=aTk=TT_k=TTk=T
[5]如果TTT为非单节点树,返回[3]
[6]对于产生的子树序列{T0,T1,...,Tn}\\{T_0,T_1,...,T_n\\}{T0,T1,...,Tn}分别计算损失,得到最优子树TT^*T并返回。


梯度提升

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

收藏 打印
您的足迹: