Skip to content

算法Algorithm

Gradient Boosting

施工中 · 内容逐步修订

Gradient boosting · 梯度提升

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

形式陈述 ​

给定 n≥1 个训练样本、实值基学习器类 H、初始实值预测器 F0 与整数轮数上限 M≥0。Gradient Boosting 在样本预测向量 FS=(F(x1),…,F(xn)) 上使用标准欧氏内积,以经验损失的负梯度指导逐阶段函数拟合,构造加法预测器

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

其中 0<ν≤1 是 shrinkage 学习率,hm∈H,常见选择是浅回归树。给定对预测值连续可微的损失 L(y,F(x)),目标是降低经验风险

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

每轮先在 Rn 中计算各训练预测值的下降方向,再用一个可求值的基函数逼近这组数。函数在未见输入上的延伸由基学习器决定;样本上的梯度本身并未指定这些延伸。

负梯度伪残差 ​

第 m 轮在当前预测 Fm−1 处计算

rim=−∂L(yi,f)∂f|f=Fm−1(xi).

这些 rim 称为伪残差。理想的精确拟合步骤为

hm∈arg⁡minh∈H∑i=1n(rim−h(xi))2,

再通过一维线搜索选择

ρm∈arg⁡minρ∑i=1nL(yi,Fm−1(xi)+ρhm(xi)).

最后更新 Fm=Fm−1+νρmhm。这里的两个 argmin 只有在极小值取得时才指定有限解;实现必须提供会终止的拟合与步长子程序。若只能近似求解,应明确返回的误差或接受规则;若没有有限线搜索解,则改用有限步长,或停止并返回已有组合。

基学习器给出的是残差向量的最小二乘逼近。只有可达预测向量组成线性子空间时,它才是通常的正交投影;回归树类一般不是线性子空间。对当前伪残差 r 和方向 hS,风险沿正步长的一阶变化为 −⟨r,hS⟩,所以正相关才给出局部下降方向。

执行成本取决于所选拟合与线搜索子程序。缓存当前 n 个训练预测后,第 m 轮需 n 次损失导数求值、一次弱学习器拟合、该学习器在 n 个样本上的求值,以及实际线搜索调用的损失求值;在这些成本之外,残差与累计预测更新需 O(n) 标量算术工作。线搜索的尝试次数与拟合成本分别计入,不能仅由轮数推出统一训练时间。除训练数据和子程序工作空间外,当前预测、残差和新方向可用 O(n) 个标量槽复用;输出模型须保存 F0、各轮规则及系数。样本外查询逐项计算 F0(x) 和所有保留的 hm(x),再作每轮常数次加乘,因此查询成本是这些求值成本之和加 O(M)。

直觉
Gradient Boosting 的残差修正

对

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

有

−∂L∂f=y−f.

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

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

例子与边界

树作为基学习器 ​

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

γjm∈arg⁡minγ∑xi∈RjmL(yi,Fm−1(xi)+γ),

再更新

Fm(x)=Fm−1(x)+ν∑jγjm1{x∈Rjm}.

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

一个具体过程 ​

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

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

线搜索与 shrinkage 的下降条件 ​

精确线搜索若有有限最优解,因 ρ=0 是候选,未缩放的整步不会增大经验风险。若每个 L(yi,⋅) 凸,沿线目标 q(ρ) 也凸,故

q(νρm)≤(1−ν)q(0)+νq(ρm)≤q(0).

这才说明 0<ν≤1 的缩步仍不增大风险。非凸目标需要直接检验最终实际步长;可在有限次尝试内缩短步长,若仍不被接受,就取零步或停止。

一个光滑、非负的反例是 q(z)=(z−2)2(z2+0.1)。从 z=0 出发有 q(0)=0.4、q′(0)=−0.4,正方向确实下降,整条线上唯一全局最小点是 z=2。但取半步到 z=1,损失变成 1.1。因此“先求最佳整步,再任意缩短”对非凸损失并非下降证明。

极小值是否取得也是独立问题。若一条方向严格正确分类所有样本,logistic 线目标可随正步长趋于无穷而下降到零,却没有有限最小者。有限步长搜索或正则化可给出可执行更新,不能直接返回不存在的 argmin。

正则化与停止 ​

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

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

与 AdaBoost 的边界 ​

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

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

推论与应用

平方损失得到普通残差拟合,logistic 等分类代理损失则产生与当前概率误差相关的伪残差。损失选择决定负梯度语义,基学习器决定能逼近哪些样本方向,并如何把修正延伸到未见输入。

回归树版本广泛用于表格数据,但总体表现还依赖 shrinkage、深度、采样与独立验证的停止规则。训练风险单调下降不是泛化证书;污染标签和分布漂移需要从损失与评估协议处理。

参考资料
  • Jerome H. Friedman, “Greedy Function Approximation: A Gradient Boosting Machine,” Annals of Statistics, 2001;可读的1999 年作者预印本,§3、Algorithm 1 与 §5、式 (33) 的 shrinkage 更新。本文另用凸性直接核验缩步的下降条件。
  • Trevor Hastie, Robert Tibshirani, and Jerome Friedman, The Elements of Statistical Learning, 2nd ed., Springer, 2009, boosting chapter.
  • Robert E. Schapire and Yoav Freund, Boosting: Foundations and Algorithms, 2012.
关系图谱8 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组