如何理解GBDT里面“损失函数的负梯度在当前模型的值,可以作为残差的估计”?

  统计/机器学习 监督式学习 损失函数    浏览次数: 936
2

当损失函数为误差平方函数时,gbdt拟合的是残差,从认知上也很好理解,我们希望每一次迭代在原来预测值的基础上逐渐逼近真实值,因此不断地去拟合残差。

但是当推广的一般函数时,如绝对值损失函数和Huber损失函数时,Freidman提出了梯度提升算法:利用最速下降的近似方法,即利用损失函数的负梯度在当前模型的值,作为回归问题中提升树算法的残差的近似值,拟合一个回归树。如何理解?在这第k轮迭代时,这时的目标函数应该就是损失函数,这时候的变量是什么?不变量是什么?负梯度是对谁求的梯度?看了大量博文,还是难以理解。

 

dzzxjl   2018-03-12 16:08



   1个回答 
1

你的疑问应该在于:“如何理解?在这第k轮迭代时,这时的目标函数应该就是损失函数,这时候的变量是什么?”。

首先,GBDT 的基分类器可以是回归树或者是分类树,在回归任务下,GBDT 在每一轮的迭代时对每个样本都会有一个预测值,此时的损失函数为均方差损失函数,

$$\large L(y_i,F(x_i))=\left(\frac{1}{2}\right)*(y_i-F(x_i))^2$$

那此时的负梯度是这样计算的

$$\large -\left[\frac{\partial L(y_i,F(\mathbf{x}_i))}{\partial F(\mathbf{x}_i)}\right]=(y_i-F(x_i))$$

所以,当损失函数选用均方损失函数是时,每一次拟合的值就是(真实值-当前模型的值),即残差。

此时的变量是$F(\mathbf{x}_i)$,即“当前模型的值”,也是对它求负梯度。


libinx   2018-10-15 01:07

在这里看到了熟人 哈哈 - dzzxjl   2018-10-17 10:40


  相关主题

Hamming Loss汉明损失的计算公式是什么?   1回答

logloss的取值范围是多少?一般好的分类器能达到多少?   5回答

二元分类为什么不能用MSE做为损失函数?   6回答

cross entropy是什么意思?   1回答

怎么理解surrogate loss function代理损失函数?   2回答

python求logloss   1回答

hinge loss的公式是什么?   1回答

Gini指数、Gini系数、Gini不纯是一回事吗?   2回答

LR中若标签为+1和-1,损失函数如何推导,求大佬解答   3回答

用SGD计算逻辑回归时的迭代公式是什么?   2回答

逻辑回归的损失函数是怎么来的   2回答

如何计算加权最小二乘法的样本权重?   2回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!