开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天,点击查看活动详情
本文不一定正确,都是一些个人理解
f_t(x_i) 可能存在下限
个人理解,在 l 为平方误差的时候,ft(x) 是有范围的,我们对上面一阶泰勒展开的式子详细写开
l(Ht−1(xi)+ft(xi))≈l(Ht−1(xi))+∂Ht−1(xi)∂l(Ht−1(xi))×ft(xi)=[yi−Ht−1(xi)]2−2[yi−Ht−1(xi)]×ft(xi)
这里需要注意的是,等式左面是平方损失,本身就是平方项,因此必须要大于等于 0,因此其最小值就为 0
[yi−Ht−1(xi)]2−2[yi−Ht−1(xi)]×ft(xi)ft(xi)ft(xi)=0=21[yi−Ht−1(xi)]=−41gt
当然如果 l 使用其他的计算公式那么这个推导就不适用了
为什么取 f_t(x_i)=-g_t
从迭代的角度说,其实 ft(xi) 也没必要很大,因为此时梯度为 ∂Ht−1(xi)∂l(Ht−1(xi)),但经过更新后,也就是 Ht(x)=Ht−1(x)+ηft(x),梯度的值也会重新变化,也就是损失函数下降最快的方向就会随之变化,因此我们需要不断更新梯度
对于一个凸函数,用泰勒展开并令其等于 0 得到的
ft(xi)=−41gt
即使拟合的数完全符合这个规则,代入
Ht(x)=Ht−1(x)+ft(x)
并不会直接使得损失函数为 0,泰勒展开是约等于,只是使得在当前梯度情况下的损失函数最小值,也就是满足
l(Ht−1(xi))+∂Ht−1(xi)∂l(Ht−1(xi))×ft(xi)=0
但
l(Ht−1(xi)+ft(xi))=0
如果想要
l(Ht−1(xi)+ft(xi))=0
则需要拟合
ft(xi)=−gt
感性的理解一下,也就是需要一步满足、
y=Ht−1(xi)+ft(xi)
这样损失函数就能直接为 0,但此时模型的泛化能力会很弱,整体模型偏差小,方差很大,也就是决策树模型,所以我们要在保证减小损失函数的前提下保证模型的泛化能力,因此就会有 η 以及参数 max_depth 等来限制模型一次性达到损失函数的最小值