残差=真值-预测值,明明可以直接计算。
为什么要引入麻烦的梯度?有什么用吗?
实际上这是因果倒置,GBDT想要计算的是负梯度。参考https://www.zhihu.com/question/63560633
1、我们知道,函数中下降最快的方向是导数方向,同理:GBDT中,损失函数减小最快的方向也是本身的导数方向。
2、如上图所示:GBDT中,损失函数的导数L(f(x))是关于拟合函数f(x)的复合函数。所以每棵树拟合时,拟合损失函数的导数方向,就是拟合损失函数减小最快的方向,即:损失函数的负梯度方向。
3、再次强调:在gbdt模型中,我们需要拟合的是损失函数的负梯度,与残差没有一点关系。
4、巧合的是,当损失函数为均方误差时,损失函数的负梯度跟残差一模一样。这使得模型看起来就像在拟合残差一样,也就是所谓的残差代替了负梯度。实际上我们拟合的还是损失函数的负梯度,只是这个负梯度的表达式跟残差意外一样了而已。
作者:ADVANCE ALGO
链接:https://www.zhihu.com/question/63560633/answer/1684606783
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。