恰逢最近在学习提升树(boosting tree)算法,参考了李航统计学习方法(第二版),但仍觉有一些疑惑,遂上网看了很多资料但仍感觉有些细节不清楚,主要原因是网上的公式符号使用自成一体,且一些结论缺少具体推理,于是以李航统计学习书上的公式表达为基础,记录一些思考。
一:采用平方误差损失函数时损失函数的负梯度就是提升树的残差
首先在书8.4节,167页,当损失函数为负梯度时:
其中
分别代表真实值与第m-1个模型预测值的残差,以及第m课我们想要学习的树。
从损失函数(1)中可以看出,第m棵树学习的是如何逼近残差r。当学习了第m个树T以后,由加法模型第m个模型为:
因为这里损失函数为平方误差损失函数,所以对于学到的第(m-1)个模型fm-1(x) 有
可以看出(3)对fm-1(x) 导数的负值(负梯度)就是残差r,所以为什么采用平方误差损失函数时损失函数的负梯度就是提升树的残差。
网上还有人用二阶泰勒展开来解释上面的结论。
这里提供一个详细推到版:由式(2)(4),将第m个模型的损失函数写为
将g和h带入得(6)
我们希望学习 一个树T(x; θ m \theta~m~ θ m )来使得损失函数(6)最小化,很明显(6)是关于T(x; θ m \theta~m~ θ m )的二元二次凹函数(fm-1(x)为上一步学习的模型),其极小点在“-b/2a”处取得(牛顿法)所以
每一次树学习的(叶子节点的值)都是第上一个模型结果与真实标签的残差。
二:当采用一般损失函数时,第m棵树学习的是损失函数对第m-1个模型的负梯度
梯度下降算法:对于损失函数L( θ \theta θ),我们希望通过迭代 θ \theta θ来最小化损失函数以求得最优的 θ \theta θ即:
而对于梯度提升算法的损失函数L(y,fm(x)),同样我们也可以通过迭代f(x)获得一个使损失函数最小的模型fm(x).
比较(2)和(8)可得
所以对于一般损失函数,每个决策树拟合的都是负梯度。<