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

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

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

在这里插入图片描述

损失函数(目标函数)

GBDT求解回归问题时,常用的时平方个损失函数。即:
loss=L(y,ft(x))=12(y−ft(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(x0)+f′(x0)(x−x0) f(x) ≈ f(x_0) + f'(x_0)(x-x_0) f(x)f(x0)+f(x0)(xx0)
把loss按一阶泰勒展开式进行展开
loss=L(y,ft(x))=L(y,ft−1(x))+∂L(y,ft−1(x))∂ft−1(x)(ft(x)−ft−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,ft−1(x))L(y,f_{t-1}(x))L(y,ft1(x))是上一颗树(第t-1棵树)的损失值,在这里就是个确定值了,是个常数。

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

要让loss变小,负梯度方向是下降最快的方向。所以在优化loss时,要把参数ft(x)f_t(x)ft(x)沿着负梯度的方向优化,即:
ft(x)=ft−1(x)−η∂L(y,ft(x))∂ft(x)=ft−1(x)−η(∂L(y,ft−1(x))∂ft(x)+∂(∂L(y,ft−1(x))∂ft−1(x)(ft(x)−ft−1(x)))∂ft(x)=ft−1(x)−η∂L(y,ft−1(x))∂ft−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=ft(x)−ft−1(x)=−η∂L(y,ft−1(x))∂ft−1(x)=−η (y−ft−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−η[∂Loss(θ)∂θ]θ=θt−1 \theta_t = \theta_{t-1} -η \bigg[\frac{\partial Loss(\theta)}{\partial \theta}\bigg]_{θ=θ_{t-1}} θt=θt1η[θLoss(θ)]θ=θt1
类比到GBDT模型中,首先思考第一个问题,GBDT模型的参数时什么。

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

ft(x)=ft−1(x)−η[∂Loss(f(x))∂f(x)]f(x)=ft−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)
ft(x)f_t(x)ft(x)表示到第t颗树为止模型的输出,显然第t颗树要拟合的值为:
γ=ft(x)−ft−1(x)=−η [∂Loss(f(x))∂f(x)]f(x)=ft−1(x)=−η ∂L(y,ft−1(x))∂ft−1(x)=−η (y−ft−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)直接求解

损失函数如下
loss=L(y,ft(x))=L(y,ft−1(x)+γt)=12(y−(ft−1(x)+γt))2=12((y−ft−1(x))−γt))2=12(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−ft−1(x) r = y-f_{t-1}(x) r=yft1(x)
数学上可以证明,当导函数为0的点,loss取得极值,导函数为零的γtγ_tγt计算如下:
γt=∂L(y,ft(x))∂γt=∂∂γt12(r−γt)2=r=y−ft−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时,负梯度和残差才相等。所以残差只是特例,说拟合负梯度才更加具有普适价值,才能更加泛化,当损失函数不再是平方和损失函数时,只能称为拟合负梯度不能才称为拟合残差!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值