Skip to content

Gradient Boosting

Gradient boosting · 梯度提升 · 梯度提升树

在函数空间中逐阶段拟合当前损失的负梯度,以基学习器之和构造回归或分类预测器。

加法模型

Gradient Boosting 构造逐阶段加法预测器

FM(x)=F0(x)+m=1Mρmhm(x),

其中 hm 来自基学习器类 H,常见选择是浅回归树。给定可微损失 L(y,F(x)),目标是降低经验风险

R^(F)=i=1nL(yi,F(xi)).

与在有限维参数上直接求梯度不同,待优化对象是函数 F。每一轮寻找一个基函数,使它在训练样本上的取值尽量贴近风险最陡下降方向。

负梯度伪残差

m 轮在当前预测 Fm1 处计算

rim=L(yi,f)f|f=Fm1(xi).

这些 rim 称为伪残差。随后拟合

hmargminhHi=1n(rimh(xi))2,

再通过一维线搜索选择

ρmargminρi=1nL(yi,Fm1(xi)+ρhm(xi)).

最后更新 Fm=Fm1+νρmhm,其中 0<ν1 是 shrinkage 学习率。

基学习器未必能精确表示负梯度。最小二乘拟合相当于在样本内积下,把梯度方向投影到 H 可提供的方向;若投影相关性很弱,本轮下降也会很小。

平方损失为何给出普通残差

L(y,f)=12(yf)2,

Lf=yf.

因此伪残差就是熟悉的 yiFm1(xi)。每轮回归树拟合尚未解释的残差,再把一部分修正加回预测。这个特例让“提升”看起来像反复修补误差,但一般损失下应以负梯度定义,不能把所有伪残差都解释为观测减预测。

对二分类 logistic 损失,伪残差与当前预测概率和标签之差相关,困难或错分样本获得较大修正。它与 AdaBoost 的指数重加权有相似函数梯度图像,却不是同一更新式。

树作为基学习器

hm 是回归树,树结构先把输入空间分成叶区域 Rjm。实际算法常为每个叶子单独求最佳步长

γjmargminγxiRjmL(yi,Fm1(xi)+γ),

再更新

Fm(x)=Fm1(x)+νjγjm1{xRjm}.

树深控制单轮可表达的交互阶数:树桩只作一次切分,深树能拟合高阶交互,却也更容易追逐样本噪声。

一个具体过程

在房价回归中,初始常数 F0 可取训练标签均值。第一棵浅树发现“面积”解释最大一部分残差;第二轮残差中,面积主效应已减弱,树可能转而捕捉“区域”和“房龄”的系统偏差。后续树不是各自独立预测完整房价,而是针对当前组合仍留下的函数方向作修正。

若某条记录的价格录入错误,平方损失伪残差会极大,许多后续树可能反复围绕它切分。换用稳健损失、限制叶子最小样本数或提前停止,是在目标与函数类层面处理问题;仅把树数增多会让训练风险更低,却不会修复污染。

正则化与停止

shrinkage ν、迭代数 M、树深、叶子最小样本数和行列子采样共同控制有效函数类。较小 ν 通常需要更多轮,但能让路径更细;它不是无需代价的泛化旋钮。最可靠的 M 由独立验证协议选择,测试集不能参与逐轮 early stopping 后仍被当作未见评价。

训练经验损失沿轮次下降只说明优化进展。总体风险还受样本误差、基类复杂度和超参数选择影响。若损失无下界、步长不受控或基学习器拟合方向错误,甚至经验目标也不保证单调下降。

与 AdaBoost 的边界

AdaBoost针对二分类指数损失给出特定样本权重与基分类器系数,并与弱到强学习理论紧密相连。Gradient Boosting 是更广的函数梯度框架,可使用平方、Huber、logistic 等损失和回归树。AdaBoost 可被解释为其中一个特殊方向,但其弱学习等价定理、训练错误指数界不能自动推广到任意梯度提升算法。

同样,“gradient”指经验风险对预测值的导数,不表示算法实现必须对树结构求可微梯度;树通过回归伪残差选择离散切分。

参考资料
  • Jerome H. Friedman, “Greedy Function Approximation: A Gradient Boosting Machine,” Annals of Statistics, 2001.
  • Trevor Hastie, Robert Tibshirani, and Jerome Friedman, The Elements of Statistical Learning, boosting chapter.
  • Robert E. Schapire and Yoav Freund, Boosting: Foundations and Algorithms, 2012.