AdaBoost算法侧重于重新加权数据点,以使得后续模型更关注先前分类错误的那些点。梯度提升采取了一种不同且更直接的方法来修正错误。它将提升问题重新定义为优化任务,目标是使指定的损失函数最小化。这种优化的机制是梯度下降,但有所不同。不是更新单个复杂模型的参数,而是按顺序添加简单的模型(弱学习器),使我们的总预测朝着正确的方向发展。“正确方向”很重要。在优化中,达到最小值的最陡峭、最直接的路径是负梯度的方向。梯度提升通过训练每个新的弱学习器来预测损失函数的负梯度来应用这一原则,该负梯度是根据现有集成模型的预测计算的。梯度与残差的关系这听起来可能有点抽象,所以让我们通过回归中最常见的损失函数——均方误差(MSE)来阐明。单个观测的MSE损失定义为:$$ L(y, \hat{y}) = \frac{1}{2}(y - \hat{y})^2 $$这里,$y$ 是真实值,$\hat{y}$ 是我们当前模型的预测。在梯度提升的背景下,$\hat{y}$ 是当前树集成模型产生的预测。为了改进我们的模型,我们需要知道如何调整预测 $\hat{y}$ 以减少损失。我们通过计算损失函数关于预测 $\hat{y}$ 的梯度(在这种单变量情况下,即导数)来找到这个方向:$$ \frac{\partial L}{\partial \hat{y}} = \frac{\partial}{\partial \hat{y}} \left( \frac{1}{2}(y - \hat{y})^2 \right) = -(y - \hat{y}) $$梯度告诉我们最陡峭的上升方向。为了最小化损失,我们必须朝相反的方向移动,也就是负梯度:$$\left( \frac{\partial L}{\partial \hat{y}} \right) = - \left( -(y - \hat{y}) \right) = y - \hat{y} $$这个结果非常简单直观。MSE损失函数的负梯度仅仅是残差,即真实值与当前预测之间的差值。这意味着对于使用MSE的回归问题,每个新的树模型都被训练来预测所有前序树模型所犯的错误。该算法实际上是在追踪自己的错误,在每一步都用一个模型来拟合剩余的错误。digraph G { rankdir=TB; node [shape=box, style="rounded,filled", fontname="sans-serif", margin="0.2,0.1"]; edge [fontname="sans-serif"]; subgraph cluster_0 { label = "第一次迭代"; style=filled; color="#e9ecef"; y [label="真实值 (y)", shape=cylinder, style=filled, fillcolor="#ced4da"]; F0 [label="初始预测\n(例如,y的均值)", fillcolor="#a5d8ff"]; r1 [label="计算残差\nr1 = y - F0", fillcolor="#b2f2bb"]; h1 [label="拟合弱学习器 (h1)\n到残差 (r1)", fillcolor="#96f2d7"]; F1 [label="更新集成模型\nF1 = F0 + α * h1", fillcolor="#bac8ff"]; y -> r1 [style=invis]; F0 -> r1; r1 -> h1; h1 -> F1; } subgraph cluster_1 { label = "第二次迭代"; style=filled; color="#e9ecef"; r2 [label="计算新残差\nr2 = y - F1", fillcolor="#b2f2bb"]; h2 [label="拟合弱学习器 (h2)\n到残差 (r2)", fillcolor="#96f2d7"]; F2 [label="更新集成模型\nF2 = F1 + α * h2", fillcolor="#bac8ff"]; r2 -> h2; h2 -> F2; } F1 -> r2; F2 -> "..." [arrowhead=none]; }梯度提升在MSE回归问题中的迭代过程。每个新的学习器 (h) 都根据前一个集成模型预测 (F) 的残差 (r) 进行训练,并且集成模型得到更新。使用伪残差进行推广梯度提升真正的优势在于,这个过程适用于任何可微分的损失函数,而不仅仅是MSE。对于其他损失函数,负梯度可能不是简单的 $y - \hat{y}$ 残差,但其作用完全相同。它表示每个数据点错误的M方向和大小,是下一个树模型应该尝试修正的目标。因此,我们在每一步计算的目标(即负梯度)通常被称为伪残差。举几个例子:平均绝对误差 (MAE): 梯度就是误差的符号,sign(y - ŷ)。伪残差将是 +1 或 -1,指导下一个模型增加或减少其预测。对数损失(用于分类): 计算更复杂,但原理保持不变。伪残差指导下一个树模型调整预测概率,以减少分类错误。通过将问题定义为通过梯度下降最小化损失函数,梯度提升成为一个高度灵活的框架。你可以选择一个能准确反映你特定问题目标的损失函数,而算法机制保持不变。每次迭代的核心任务始终是计算伪残差(负梯度)并用一个新的弱学习器来拟合它们。这种推广使得梯度提升从一个巧妙的回归技巧,成为一个多功能的机器学习强大工具。