GBDT 为什么拟合残差?
简化版
平方损失下 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 估计曲率并求正则化叶值。
八、加强记忆
先说通式“拟合负梯度”,再说平方损失才退化为残差。
按初始化、算伪残差、拟合树、缩放累加四步回答最稳。