当损失函数为误差平方函数时,gbdt拟合的是残差,从认知上也很好理解,我们希望每一次迭代在原来预测值的基础上逐渐逼近真实值,因此不断地去拟合残差。
但是当推广的一般函数时,如绝对值损失函数和Huber损失函数时,Freidman提出了梯度提升算法:利用最速下降的近似方法,即利用损失函数的负梯度在当前模型的值,作为回归问题中提升树算法的残差的近似值,拟合一个回归树。如何理解?在这第k轮迭代时,这时的目标函数应该就是损失函数,这时候的变量是什么?不变量是什么?负梯度是对谁求的梯度?看了大量博文,还是难以理解。
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)$,即“当前模型的值”,也是对它求负梯度。
在这里看到了熟人 哈哈
-
dzzxjl
2018-10-17 10:40