跳到主要内容

梯度提升

梯度提升树(GBDT)回归

平方损失下每棵新树拟合当前残差(负梯度),叶上加的是残差均值,学习率控制步长。

更新日期 2026-08-29 机器学习

这篇能回答什么

梯度提升回归把预测写成可加模型:从全体总价的常数均值出发,每一棵新的浅树去拟合当前平方损失的负梯度,也就是残差本身。叶子上加进模型的是该叶残差均值,再乘学习率 ν。本页占用表取一棵典型浅树(深度被卡住后合并为三片叶)的人数,用来检查有没有一片叶子吞掉大半样本——浅树本应接近均分。

适合:结构化表上的连续预测,你接受黑盒,但希望用学习率和早停踩刹车。教学完整个案 201(进入列或缺失模式与森林教学例不必相同)。三片浅叶 61 / 66 / 74(30.35% / 32.84% / 36.82%),几乎各占三分之一。这和单棵深 CART「一片巨叶 + 两片薄边」不同:GBDT 靠很多小步,不靠一棵深树。

什么时候不该用

Y 是盗刷/流失标签时改用GBDT 分类,那里常用对数损失,叶上加的是概率校准后的增量,不是残差均值。必须报告单位斜率与标准误时,回线性回归。只要平行平均、不想像残差那样串行前进,用随机森林回归。类别特征很多、想少做编码时对照CatBoost 回归。

如何选择方法

连续结局里:GBDT 沿梯度走,AdaBoost 改权重,森林做袋装平均,OLS 写一条直线。要早停与学习率 → GBDT。要追打大残差、轮数少 → AdaBoost.R2。要稳、少调参 → 森林。要 B → OLS。分类 GBDT 的 log-loss 不能解释本页的万元残差。

  • GBDT 回归:F_m=F_{m-1}+ν h_m,h_m 拟合残差;浅叶占用应大致均匀。

  • AdaBoost 回归:加权难点,不显式走负梯度。

  • 随机森林回归:自助平均叶均值,没有学习率这条旋钮。

  • 线性回归:推断与单位效应;写不出逐步残差路径。

输入、输出与限制

输入

一个定量 Y 与若干特征。默认平方损失;工作台若提供 Huber,只在总价极端值很多时再改。缺失成表删除。

  • 因变量:1 个定量列,本例总价(万元)。

  • 特征:1–40 个;本练习面积(平米)、楼层、总楼层、建筑年份。

输出

占用表是典型浅树的三片叶:A 61、B 66、C 74,合计 201。另有 RMSE、MAE、R²,以及随树数变化的损失曲线。特征重要性来自分裂对损失的累计改进,单位不是万元,也不是 Beta。

产品限制

  • 有效行少于 40 拒绝。

  • 默认 100 棵、学习率 0.1、深度 3;训练损失还在降不等于该继续加树,应看验证集或早停。

  • 平方损失对天价房源敏感;未改 Huber 时,先检查 Y 的极端百分位。

  • 曲线可截断展示,叶占用与最终误差以表为准。

案例

研究问题。 要用可早停的提升树预测总价,并先确认浅树有没有塌成「一片叶子装下大半房源」。若三片叶接近均分,说明深度限制在起作用,后续比的是验证 RMSE,而不是谁的训练曲线更低。

完整个案 201。浅叶占用 A 61(30.35%)、B 66(32.84%)、C 74(36.82%),极差只有 13 条。下载综合评价表:Y=总价(万元),特征=面积、楼层、总楼层、建筑年份。预留一部分行做早停时,不要把验证误差写成「全市房价规律」。

下载教学示例表(综合评价)

在 StatsX 中操作

  1. 步骤 1 · 载入评价表并锁定 Sheet1

    工作台读入综合评价 xlsx。总价与单价只留一个当 Y,另一个不要同时进特征,以免泄漏。

  2. 步骤 2 · 限制特征集

    只用面积、楼层、总楼层、建筑年份。挂牌日期是时间戳,本练习不当成数值特征乱切。

  3. 步骤 3 · 打开梯度提升树回归

    同名分类项用于标签与对数损失。总价必须走回归,否则叶增量的含义会从「残差万元」变成「对数几率」。

  4. 步骤 4 · 保持浅树与小学习率

    因变量:总价(万元)。特征同上。先用深度 3、学习率 0.1、100 棵;有验证划分时打开早停。

  5. 步骤 5 · 先看叶是否均分

    三片叶应接近 61/66/74。若某一片突然瘦到个位数,说明深度或叶最小样本被改大/改小了,先改回去再谈 RMSE。

工作台载入评价表做 GBDT 回归
载入综合评价表并锁定 Sheet1。
画像中确认总价与面积
确认总价为定量,面积与楼层可用作特征。
目录中选定梯度提升树回归
选定「梯度提升树(GBDT)回归」,不要点 GBDT 分类。
为 GBDT 回归指定总价与特征
因变量为总价,特征为四列住房属性。

如何阅读输出

占用表是典型浅树的三片叶,不是客户层级。N=201。A 61(30.35%)、B 66(32.84%)、C 74(36.82%)。和森林代表树「229 对 43」那种一边倒不同,这里没有巨叶。叶上此刻加的是残差均值,不是总价均值本身——总价预测是历次增量累加后再加上初始均值。

梯度提升树(GBDT)回归结果表
项目类别统计量取值
梯度提升树(GBDT)回归类别 A频数61
梯度提升树(GBDT)回归类别 B频数66
梯度提升树(GBDT)回归类别 C频数74
梯度提升树(GBDT)回归合计有效样本 N201
梯度提升树(GBDT)回归类别 A占比(%)30.35
梯度提升树(GBDT)回归类别 B占比(%)32.84
梯度提升树(GBDT)回归类别 C占比(%)36.82

左右滑动可查看完整表格

教学示例表在 StatsX 工作台中的计算结果口径。

GBDT 回归浅叶占用表
三片浅叶人数应接近 61 / 66 / 74。
GBDT 回归损失曲线或预测对照
损失曲线看是否该早停;叶人数以表为准。

阅读顺序:N=201 → 三叶是否接近均分 → 验证/测试 RMSE 是否仍随树数下降 → 训练曲线是否已经弯成过拟合 → 重要性排序(仅供筛变量)。不要把重要性写成「面积的 Beta=…」。

过拟合的典型样子:学习率 0.1 不变,树从 100 加到 800,训练 RMSE 一直降,验证 RMSE 先降后升。早停应停在验证最低处,而不是训练最低处。三片叶均分只说明这一棵弱学习器没有塌,不保证 100 棵加完仍然泛化。

理论与公式

平方损失 L=(y−F)^2/2 的负梯度就是残差。第 m 棵树 h_m 在特征空间里拟合 r_i=y_i−F_{m-1}(x_i),叶 j 的最优增量是该叶残差均值:

学习率 ν∈(0,1] 把这次增量缩小后再加进模型,避免一步走完:

F_0 常取 ȳ。分类 GBDT 把损失换成对数损失,负梯度变成 y−p,叶增量要按 Newton 步修正,不能用本页的 γ=残差均值。教学浅树 n=201,三叶 61/66/74。Huber 损失只在 |r| 超过阈值后改用线性,用来减弱天价点对 γ 的拉力。

注意事项

  • 训练损失单调下降不是停手准则,验证损失才是。

  • 重要性没有万元单位,不能替代线性回归的 B。

  • 平方损失会追天价房源;先看 Y 的极端百分位。

  • 深度加到 8、学习率仍 0.3,弱学习器本身已经太强,提升变成叠过拟合。

  • 浅叶接近 61/66/74 是深度限制的结果,改深以后占用会重新失衡。

  • 单价若同时进入特征,等于把目标的定义零件喂给模型。

常见问题

参考文献

  • Friedman, J. H. Greedy function approximation: A gradient boosting machine[J]. Annals of Statistics, 2001, 29(5): 1189–1232.

  • Hastie, T., Tibshirani, R., & Friedman, J. The Elements of Statistical Learning. Springer.

  • Chen, T., & Guestrin, C. XGBoost: A scalable tree boosting system[C]//KDD. 2016.