提升树与GBDT的详细算法过程(建议收藏版)

GBDT的全称为:梯度提升决策树,英文为:(Gradient Boosting Decison Tree)。

提升树核心思想:拟合残差

怎么拟合残差呢?

首先第一步是使用boosting技术,对残差使用决策树进行拟合,比如我们常用的CART算法。第二步是使用加法模型,将拟合好的决策树相加。

一、提升树算法步骤

输入: D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} D={(x1,y1),(x2,y2),,(xN,yN)}

(1)初始化 f 0 ( x ) = 0 f_0(x)=0 f0(x)=0

(2)对于 m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,M,针对每一个样本 ( x i , y i ) (x_i,y_i) (xi,yi),计算残差:
r m i = y i − f m − 1 ( x i ) , i = 1 , 2 , ⋯   , N r_{mi}=y_i-f_{m-1}(x_i)\quad ,i=1,2,\cdots,N rmi=yifm1(xi),i=1,2,,N

(3)利用 { ( x i , r m i ) } i = 1 , 2 , ⋯   , N \{(x_i,r_{mi})\}_{i=1,2,\cdots,N} {(xi,rmi)}i=1,2,,N训练一个决策树(回归树),得到 T ( x ; Θ m ) T(x;\Theta_m) T(x;Θm)

(4)更新 f m ( x ) = f m − 1 ( x ) + T ( x ; Θ m ) f_m(x)=f_{m-1}(x)+T(x;\Theta_m) fm(x)=fm1(x)+T(x;Θm)

(5)完成以上迭代,得到提升树:
f M ( x ) = ∑ i = 1 M T ( x ; Θ m ) f_M(x)=\sum_{i=1}^MT(x;\Theta_m) fM(x)=i=1MT(x;Θm)

其中, M M M表示决策树个数; R m i R_{mi} Rmi表示残差。

二、GBDT算法步骤

输入:训练数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} D={(x1,y1),(x2,y2),,(xN,yN)};损失函数为: L ( y , f ( x ) ) L(y,f(x)) L(y,f(x))

(1)初始化:
f 0 ( x ) = arg ⁡ min ⁡ c ∑ i = 1 N L ( y i , c ) f_0(x)=\arg\min_{c}\sum_{i=1}^NL(y_i,c) f0(x)=argcmini=1NL(yi,c)

(2)对于 m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,M,针对每一个样本 ( x i , y i ) (x_i,y_i) (xi,yi),计算残差:
r m i = − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x )    , i = 1 , 2 , ⋯   , N r_{mi}=-[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)}\;,i=1,2,\cdots,N rmi=[f(xi)L(yi,f(xi))]f(x)=fm1(x),i=1,2,,N

(3)利用 { ( x i , r m i ) } i = 1 , 2 , ⋯   , N \{(x_i,r_{mi})\}_{i=1,2,\cdots,N} {(xi,rmi)}i=1,2,,N训练出第 m m m棵决策树(回归树) T m T_m Tm,其中叶节点划分的区域为: R m j    , j = 1 , 2 , ⋯   , J R_{mj}\;,j=1,2,\cdots,J Rmj,j=1,2,,J

(4)对于回归树 T m T_m Tm的每一个叶结点,计算其输出值:
c m j = arg ⁡ min ⁡ c ∑ x i ∈ R m j L ( y i , f m − 1 ( x i ) + c )    , j = 1 , 2 , ⋯   , N c_{mj}=\arg\min_{c}\sum_{x_i\in R_{mj}}L(y_i,f_{m-1}(x_i)+c)\;,j=1,2,\cdots,N cmj=argcminxiRmjL(yi,fm1(xi)+c),j=1,2,,N

(5)更新:
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)=fm1(x)+j=1JcmjI(xRmj)

(6)得到最终提升回归树:
f ( x ) ^ = f M ( x ) = ∑ m = 1 M ∑ j = 1 J c m j I ( x ∈ R m j ) \hat{f(x)}=f_M(x)=\sum_{m=1}^M\sum_{j=1}^Jc_{mj}I(x\in R_{mj}) f(x)^=fM(x)=m=1Mj=1JcmjI(xRmj)

输出:提升回归树 f ( x ) ^ \hat{f(x)} f(x)^

三、两者之间的区别

1.梯度提升回归树的残差使用负梯度来代替;

2.梯度提升回归树多了一步在叶子节点loss求最优值的计算,这里应该是为了降低优化误差,优化回归树的结果。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值