(八)GBDT为什么拟合负梯度(拟合残差?)

GBDT为什么拟合负梯度,拟合残差又是怎么回事,到底是负梯度还是残差

以GBDT求解回归任务为例子,每次迭代,修改y值为损失函数(目标函数)的负梯度(或者叫残差,因为和残差的表达式一样,这是个巧合),问题是为什么要把y值修改为负梯度(残差),也就是为什么拟合负梯度(残差)

在这里插入图片描述

损失函数(目标函数)

GBDT求解回归问题时,常用的时平方个损失函数。即:
l o s s = L ( y , f t ( x ) ) = 1 2 ( y − f t ( x ) ) 2 loss = L(y,f_t(x)) = \frac{1}{2}(y-f_t(x))^2 loss=L(y,ft(x))=21(yft(x))2
GBDT是个加法模型,将所有弱学习器(CART回归树)的输出加起来,这么做是想让模型的输出逐渐的趋近于真实值。数学上当然是通过损失函数来实现的,在加的过程中让损失函数越来越小。

所以研究“为什么是拟合负梯度”的问题,可以转化为“怎么才能使的损失函数loss越来越小,而且是loss下降的最快”,这里有三种思路,一个一个讲:

(1)将loss泰勒展开

一阶泰勒展开式如下
f ( x ) ≈ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) f(x) ≈ f(x_0) + f'(x_0)(x-x_0) f(x)f(x0)+f(x0)(xx0)
把loss按一阶泰勒展开式进行展开
l o s s = L ( y , f t ( x ) ) = L ( y , f t − 1 ( x ) ) + ∂ L ( y , f t − 1 ( x ) ) ∂ f t − 1 ( x ) ( f t ( x ) − f t − 1 ( x ) ) loss = L(y,f_t(x))=L(y,f_{t-1}(x))+\frac{\partial L(y,f_{t-1}(x))}{\partial f_{t-1}(x)}(f_t(x)-f_{t-1}(x)) loss=L(y,ft(x))=L(y,ft1(x))+ft1(x)L(y,ft1(x))(ft(x)ft1(x))
上式中

L ( y , f t − 1 ( x ) ) L(y,f_{t-1}(x)) L(y,ft1(x))是上一颗树(第t-1棵树)的损失值,在这里就是个确定值了,是个常数。

∂ L ( y , f t − 1 ( x ) ) ∂ f t − 1 ( x ) \frac{\partial L(y,f_{t-1}(x))}{\partial f_{t-1}(x)} ft1(x)L(y,ft1(x))也是个确定值,是个常数。

要让loss变小,负梯度方向是下降最快的方向。所以在优化loss时,要把参数 f t ( x ) f_t(x) ft(x)沿着负梯度的方向优化,即:
f t ( x ) = f t − 1 ( x ) − η ∂ L ( y , f t ( x ) ) ∂ f t ( x ) = f t − 1 ( x ) − η ( ∂ L ( y , f t − 1 ( x ) ) ∂ f t ( x ) + ∂ ( ∂ L ( y , f t − 1 ( x ) ) ∂ f t − 1 ( x ) ( f t ( x ) − f t − 1 ( x ) ) ) ∂ f t ( x ) = f t − 1 ( x ) − η ∂ L ( y , f t − 1 ( x ) ) ∂ f t − 1 ( x ) \begin{align} f_t(x) &= f_{t-1}(x) - η\frac{\partial L(y,f_t(x))}{\partial f_t(x)}\\ & \\ & = f_{t-1}(x) - η (\frac{\partial L(y,f_{t-1}(x))}{\partial f_t(x)}+\frac{\partial (\frac{\partial L(y,f_{t-1}(x))}{\partial f_{t-1}(x)}(f_t(x)-f_{t-1}(x)))}{\partial f_t(x)}\\ & \\ & = f_{t-1}(x) - η\frac{\partial L(y,f_{t-1}(x))}{\partial f_{t-1}(x)}\\ \end{align} ft(x)=ft1(x)ηft(x)L(y,ft(x))=ft1(x)η(ft(x)L(y,ft1(x))+ft(x)(ft1(x)L(y,ft1(x))(ft(x)ft1(x)))=ft1(x)ηft1(x)L(y,ft1(x))
实际上第t颗树需要拟合的值 γ t γ_t γt就是:
γ t = f t ( x ) − f t − 1 ( x ) = − η ∂ L ( y , f t − 1 ( x ) ) ∂ f t − 1 ( x ) = − η   ( y − f t − 1 ( x ) ) \begin{align} γ_t & = f_t(x)-f_{t-1}(x) \\ & \\ & = - η\frac{\partial L(y,f_{t-1}(x))}{\partial f_{t-1}(x)} \\ & \\ & = - η \ (y-f_{t-1}(x)) \end{align} γt=ft(x)ft1(x)=ηft1(x)L(y,ft1(x))=η (yft1(x))

至此,GBDT需要拟合的是负梯度的第一种解释完毕

(2)类比线性回归中的梯度下降算法

线性回归问题的参数是 θ \theta θ,求解时常用的时梯度下降算法。即:
θ t = θ t − 1 − η [ ∂ L o s s ( θ ) ∂ θ ] θ = θ t − 1 \theta_t = \theta_{t-1} -η \bigg[\frac{\partial Loss(\theta)}{\partial \theta}\bigg]_{θ=θ_{t-1}} θt=θt1η[θLoss(θ)]θ=θt1
类比到GBDT模型中,首先思考第一个问题,GBDT模型的参数时什么。

好的,我猜你已经抽象出来了,GBDT的方程如下:

f t ( x ) = f t − 1 ( x ) − η [ ∂ L o s s ( f ( x ) ) ∂ f ( x ) ] f ( x ) = f t − 1 ( x ) f_t(x) = f_{t-1}(x) -η \bigg[\frac{\partial Loss(f(x))}{\partial f(x)}\bigg]_{f(x)=f_{t-1}(x)} ft(x)=ft1(x)η[f(x)Loss(f(x))]f(x)=ft1(x)
f t ( x ) f_t(x) ft(x)表示到第t颗树为止模型的输出,显然第t颗树要拟合的值为:
γ = f t ( x ) − f t − 1 ( x ) = − η   [ ∂ L o s s ( f ( x ) ) ∂ f ( x ) ] f ( x ) = f t − 1 ( x ) = − η   ∂ L ( y , f t − 1 ( x ) ) ∂ f t − 1 ( x ) = − η   ( y − f t − 1 ( x ) ) \begin{align} γ & = f_t(x) - f_{t-1}(x) \\ & \\ & = -η \ \bigg[\frac{\partial Loss(f(x))}{\partial f(x)}\bigg]_{f(x)=f_{t-1}(x)}\\ & \\ & = - η \ \frac{\partial L(y,f_{t-1}(x))}{\partial f_{t-1}(x)}\\ & \\ & = - η \ (y-f_{t-1}(x)) \end{align} γ=ft(x)ft1(x)=η [f(x)Loss(f(x))]f(x)=ft1(x)=η ft1(x)L(y,ft1(x))=η (yft1(x))

(3)直接求解

损失函数如下
l o s s = L ( y , f t ( x ) ) = L ( y , f t − 1 ( x ) + γ t ) = 1 2 ( y − ( f t − 1 ( x ) + γ t ) ) 2 = 1 2 ( ( y − f t − 1 ( x ) ) − γ t ) ) 2 = 1 2 ( r − γ t ) ) 2 \begin{align} loss &= L(y,f_t(x))\\ &= L(y,f_{t-1}(x)+γ_t)\\ &= \frac{1}{2}(y-(f_{t-1}(x)+γ_t))^2\\ &= \frac{1}{2}((y-f_{t-1}(x))-γ_t))^2\\ &= \frac{1}{2}(r-γ_t))^2\\ \end{align} loss=L(y,ft(x))=L(y,ft1(x)+γt)=21(y(ft1(x)+γt))2=21((yft1(x))γt))2=21(rγt))2
上式中,r就是残差,即:
r = y − f t − 1 ( x ) r = y-f_{t-1}(x) r=yft1(x)
数学上可以证明,当导函数为0的点,loss取得极值,导函数为零的 γ t γ_t γt计算如下:
γ t = ∂ L ( y , f t ( x ) ) ∂ γ t = ∂ ∂ γ t 1 2 ( r − γ t ) 2 = r = y − f t − 1 ( x ) γ_t =\frac{\partial L(y,f_t(x))}{\partial γ_t} =\frac{\partial}{\partial γ_t}\frac{1}{2}(r-γ_t)^2 =r =y-f_{t-1}(x) γt=γtL(y,ft(x))=γt21(rγt)2=r=yft1(x)

到底是拟合的负梯度还是残差

通过上面的证明,不难发现,负梯度和残差的结果是一致的。实际上只有当用平方和损失函数作为loss时,负梯度和残差才相等。所以残差只是特例,说拟合负梯度才更加具有普适价值,才能更加泛化,当损失函数不再是平方和损失函数时,只能称为拟合负梯度不能才称为拟合残差!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值