← 返回题目列表

GBDT 为什么拟合残差?

高频 中等 第 7 / 25 题 更新于 2026/09/19
集成学习BaggingBoostingXGBoost

简化版

平方损失下 GBDT 每轮拟合当前残差;更一般地,它拟合损失对当前预测的负梯度,再通过叶值和学习率更新加法模型。因此“拟合残差”是回归平方误差的特例。

详细版

  • 初始预测常是使常数损失最小的值,如回归均值。

  • 每轮用伪残差训练一棵弱树。

  • 叶值可进一步做线搜索或牛顿更新。

  • 分类任务拟合的是 logit 空间梯度,不是 0/1 标签减概率的普通回归残差表述。

  • 树深控制单轮可学习的交互阶数。

完整版教学

一、Boosting 是函数空间中的梯度下降

参数梯度下降沿参数负梯度移动,GBDT 则在函数空间寻找一棵树近似负梯度方向。

新树是允许的基函数。

平方损失的负梯度恰好是 y-F(x),所以教材常称拟合残差;换成 logistic 等损失后应说伪残差。

二、底层机制与公式

r_im = -dL(y_i,F(x_i))/dF(x_i)
F_m=F_(m-1)+eta*h_m
for 0.5(y-F)^2: r=y-F

三、带数字的推演

标签 [3,5],初始均值 F0=4,残差 [-1,+1]

若新树完美拟合残差且 η=0.1,新预测变 [3.9,4.1],残差缩为 [-0.9,+0.9]

四、方案对比

方案/对象核心特点代价或边界
平方损失负梯度等于残差对异常值敏感
绝对损失方向近似符号更稳健但不光滑
Logistic拟合分类伪残差输出在 logit 空间累加

五、执行流程

初始化常数 F0 -> 计算每样本负梯度 -> 树拟合伪残差
-> 求叶更新值 -> 乘 eta 加到 F -> 重复至早停

六、边界条件与工程代价

若树把伪残差拟合得过强,单轮就可能追随噪声;浅树、shrinkage 和 subsampling 共同控制路径。

XGBoost/LightGBM 常结合二阶梯度,叶值由 G/H 和正则求得,不应只用“直接取残差均值”解释所有实现。

记忆钩子:先说通式“拟合负梯度”,再说平方损失才退化为残差。

七、常见误区与追问

  • 误区:所有 GBDT 都拟合 y-pred。 这只严格对应平方损失。

  • 追问:为什么叫函数梯度下降? 每轮添加一个函数近似负梯度方向。

  • 误区:分类树直接拟合错分标签。 它通常拟合损失对 margin 的伪残差。

  • 追问:学习率在哪里作用? 缩放每棵新树加入总模型的贡献。

  • 追问:二阶方法多用了什么? 利用 Hessian 估计曲率并求正则化叶值。

八、加强记忆

先说通式“拟合负梯度”,再说平方损失才退化为残差。

按初始化、算伪残差、拟合树、缩放累加四步回答最稳。