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

  统计/机器学习 监督式学习 损失函数    浏览次数: 1092
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)$,即“当前模型的值”,也是对它求负梯度。


SofaSofa数据科学社区 DS面经 问答 实战

libinx   2018-10-15 01:07

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


  相关主题

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

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

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

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

cross entropy是什么意思?   1回答

关于损失函数h(x), J(x), cost的概念问题   1回答

python求logloss   1回答

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

focal loss是什么?   0回答

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

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

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



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

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

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

我们谢绝答非所问。

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

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