xgboost梯度计算的过程

xgboost梯度计算的过程

之前对xgboost梯度计算过程有误区,这里纠正一下,并mark,提醒自己一下

泰勒公式的二阶展开形式如下:
f ( x + Δ x ) ≈ f ( x ) + f ′ ( x ) Δ x + f ′ ′ ( x ) Δ x 2 f(x+\Delta{x}) \approx f(x)+f^{\prime}(x)\Delta{x}+f^{\prime\prime}(x)\Delta{x}^{2} f(x+Δx)f(x)+f(x)Δx+f(x)Δx2
回到我们的问题上来,f(x)对应我们的损失函数l(),x对应我们的t-1棵树的预测值, Δ x \Delta{x} Δx对应我们正在训练的第t棵树。

首先我们定义损失函数l()关于 y ^ ( t − 1 ) \hat{y}^{(t-1)} y^(t1)的一阶偏导数和二阶偏导数:
g i = ∂ y ^ ( t − 1 ) l ( y i , y ^ ( t − 1 ) ) , h i = ∂ y ^ ( t − 1 ) 2 l ( y i , y ^ ( t − 1 ) ) g_i=\partial_{\hat{y}^{(t-1)}}l(y_i,\hat{y}^{(t-1)}),h_i=\partial^{2}_{\hat{y}^{(t-1)}}l(y_i,\hat{y}^{(t-1)}) gi=y^(t1)l(yi,y^(t1)),hi=y^(t1)2l(yi,y^(t1))
这里插一句,如果就是平方损失(比较常用), l ( y i , y i ^ ) = ( y i − y i ^ ) 2 l(y_i,\hat{y_i})=(y_i-\hat{y_i})^{2} l(yi,yi^)=(yiyi^)2
那么,
g i = ∂ y ^ ( t − 1 ) l ( y i , y ^ ( t − 1 ) ) = 2 ( y i − y i ^ ( t − 1 ) ) , h i = ∂ y ^ ( t − 1 ) 2 l ( y i , y ^ ( t − 1 ) ) = − 2 g_i=\partial_{\hat{y}^{(t-1)}}l(y_i,\hat{y}^{(t-1)})=2(y_i-\hat{y_i}^{(t-1)}),\\ h_i=\partial^{2}_{\hat{y}^{(t-1)}}l(y_i,\hat{y}^{(t-1)})=-2 gi=y^(t1)l(yi,y^(t1))=2(yiyi^(t1)),hi=y^(t1)2l(yi,y^(t1))=2
这样对吗?

(注意xgb梯度计算中用到的是上一次的预测值,
这里就有一个问题,那么对于第一次计算梯度时,根本没有上一次的预测值怎么办?所以才有了一个全局偏置的超参,base_score:初始化预测分数,全局偏置。用于提供第一次梯度的计算。
xgb梯度计算中用到的不是本轮的预测值,而是利用上一轮的预测值来计算一阶导和二阶导的,所以对于分裂点计算前,各样本的一阶导和二阶导都是计算好的)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值