跳到主要内容

机器学习分类

梯度提升树(GBDT)分类

把多分类写成可微的交叉熵,每棵新树只拟合当前概率相对金标准的负梯度,再用学习率把修补缩小后累加进去。

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

这篇能回答什么

GBDT 分类把「这套房属于哪一价位档」写成优化问题:当前模型给出三档概率,交叉熵量出它和金标准差多远,下一棵浅树去拟合这个损失对 logit 的负梯度(残差)。它既不像 CART 一次长出整棵规则树,也不像森林那样平行投票,更不像 AdaBoost 用指数损失改样本权重——它改的是函数空间里的概率。学习率 ν 把每棵树的修补缩小,防止一轮就把多数类先验钉死。

综合评价教学运行把总价切成三档占用(表中 A/B/C)当金标准,特征用面积、楼层、总楼层、建筑年份、单价。完整个案 305。C 档约六成,是交叉熵的起点:第一棵树几乎一定会先学会「多数房子偏贵档」,真正的工作在后续残差里——那些面积不大却被先验拉向 C 的行。

什么时候不该用

你要打印签字规则,回决策树分类。标签很脏、只求钝一点的票箱,用随机森林分类。需要「单价每贵 1000 元、控制面积后落入高档的 OR」以及标准误,用多项逻辑回归——GBDT 与它最小化同一家族的对数损失,但没有 β 的置信区间。要类别特征泄漏更少的工业实现,再看 CatBoost / XGBoost 页,而不是把本页数字当成它们的复现。

如何选择方法

四条轴线分开选。CART:一棵可读的矩形切割。袋装森林:降方差、平等投票。AdaBoost:指数损失追难例。GBDT:可微损失 + 收缩,适合要概率、要精细残差的表格。逻辑回归是 GBDT 的线性特例——同样交叉熵,但假设 logit=βx,没有树的交互台阶。

  • GBDT 分类:浅树拟合负梯度,学习率收缩,输出 softmax 概率。

  • AdaBoost:改权重而非残差,SAMME 投票分未校准。

  • 随机森林:并行袋装,无学习率。

  • 多项逻辑回归:同一对数损失,线性可加,带标准误。

输入、输出与限制

输入

金标准为定类价位档(教学为三档)。特征以定量住房属性为主;定类城市、装修可进入,内部会编码。房源 ID 拒绝。学习率与树数是超参数,不是数据列。

  • 特征变量:最少 2 个,最多 60 个。

  • 标签变量:正好 1 个定类,水平 2–8。

  • 学习率 ν:默认 0.1,范围 0.01–0.5。

输出

教学表是价位档占用:项目写「梯度提升树(GBDT)分类」,三类频数与占比。完整运行另有对数损失曲线、softmax 概率与增益重要性。取值列没有 AUC,182 也不是残差平方和。

产品限制

  • 默认 80 棵树,单棵深度 3,行子采样 0.8。

  • 损失为多项交叉熵(softmax),不是 AdaBoost 的指数损失。

  • 有效行至少 40;最多拟合 20000 行。

  • 验证损失连续抬头时,应在抬头轮停,而不是加满树数。

  • 与 XGBoost / LightGBM 的直方图、正则、缺失处理不同,特征排序不必相同。

案例

研究问题。 定价组要把挂牌房分进低 / 中 / 高三档(教学记号 A/B/C),并且希望输出可以拿去画校准的概率,而不是森林式的硬投票。他们接受「说不清第一刀」,但不接受学习率 0.5、三百棵深树把训练损失刷到零。

完整个案 305。占用:A 75(24.59%)、B 48(15.74%)、C 182(59.67%)。交叉熵的朴素模型是「每套都报 59.67% 给 C」,对数损失已经不差。GBDT 的工作是找出面积小、年份旧却被这套先验错拉进 C 的残差。下载综合评价表,自行按总价三分位生成三档标签,特征勾面积、楼层、总楼层、建筑年份、单价。

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

在 StatsX 中操作

  1. 步骤 1 · 上传住房表并造好三档 Y

    综合评价 xlsx 本身的总价是连续的。先按研究计划切成三档标签列,或使用你已经离散化的价位字段。不要把连续总价既当特征又当标签。

  2. 步骤 2 · 点选梯度提升树分类

    目录同时有 GBDT 回归。本页 Y 是档位。XGBoost / LightGBM / CatBoost 是不同实现,不要用它们的默认去对这 305 行的占用。

  3. 步骤 3 · 特征墙与学习率先用默认

    特征:面积、楼层、总楼层、建筑年份、单价。ν=0.1、树数 80、深度 3。想更猛再往上加树,不要先把学习率拧到 0.5。

  4. 步骤 4 · 对照残差曲线,不是对照柱高

    占用 75+48+182=305 只说明先验。看验证交叉熵是否在某轮抬头。C 柱最高不表示提升成功。

上传综合评价表做 GBDT 分类
导入住房表,随后准备三档价位标签。
列画像区分总价与价位档
总价是定量;标签必须是你切好的定类档。
目录中选择梯度提升树分类
选定「梯度提升树(GBDT)分类」。
为 GBDT 指定价位档与住房特征
标签挂三档价位,特征挂面积与单价后运行。

如何阅读输出

占用行给出交叉熵的起点:C 档 182 / 305 ≈ 60%,A 75、B 48。第一轮残差,大部分来自「不该落在 C 却被先验拉向 C」的房子,以及少数高档被低估的行。取值列没有对数损失,也没有 AUC。项目列重复方法全名,避免和 AdaBoost 那张 189 人的年级表搞混。

梯度提升树(GBDT)分类结果表
项目类别统计量取值
梯度提升树(GBDT)分类类别 A频数75
梯度提升树(GBDT)分类类别 B频数48
梯度提升树(GBDT)分类类别 C频数182
梯度提升树(GBDT)分类合计有效样本 N305
梯度提升树(GBDT)分类类别 A占比(%)24.59
梯度提升树(GBDT)分类类别 B占比(%)15.74
梯度提升树(GBDT)分类类别 C占比(%)59.67

左右滑动可查看完整表格

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

GBDT 价位档占用表
工作台 75 / 48 / 182 应与上表同一口径。
三档价位占用构成图
柱高是金标准先验;残差拟合是否有效要看损失曲线,不看谁最高。

分类语言里的基线是「永远报 C」的 59.67%,以及它所隐含的交叉熵。GBDT 只有在验证损失低于这条基线、并且 B 档(48 套、15.74%)的概率没有被压成接近 0 时,才算学到了中档结构。学习率太大切树太多,训练损失会继续降,验证损失抬头——那是过拟合,不是「模型更强」。与逻辑回归对同一张表,概率可以对着看趋势,不必逐格相等:一个是分段常数,一个是线性 logit。

理论与公式

记第 m 轮、第 k 类的加性得分为 F_{m,k}(x),概率由 softmax 给出。多项交叉熵对第 i 行是 -∑_k 1(y_i=k) log p_{i,k}。新树拟合该损失对 F 的负梯度:

更新带收缩。ν 小则需要更多树,但每一步更不敢把六成先验一次性改写。这与 AdaBoost「整轮改权重」不同,也与袋装「再画一棵独立的树」不同。

逻辑回归把 F_k 限制为 β_k^⊤x。GBDT 允许 F_k 成为分段常数,因此能吃面积×楼层的台阶交互,代价是没有标准误,且 ν 与树数耦合:ν=0.2 配 50 棵,和 ν=0.05 配 200 棵,训练损失可以接近,验证曲线往往后者更平。过拟合=训练交叉熵仍降、验证交叉熵已升。类别不平衡时,早期梯度被 C 档主导;可用类权重或对 B 档过采样,而不是指望深度 3 的八十棵树自动补偿 15.74% 的中档。

注意事项

  • 第一棵树偏向 C 是先验,不是算法坏了。看的是后面残差有没有把中档拉回来。

  • 学习率与树数必须成对调。只加树、不降 ν,等于加大步长。

  • 与多项逻辑回归同损失不同假设,概率不必逐套相等。

  • 增益重要性受分裂次数影响,共线的面积与单价会抢刀。

  • 子采样 0.8 引入额外随机,重复运行应用固定种子。

  • SPSS 无 GBDT。和 sklearn GradientBoostingClassifier 对齐 loss、learning_rate、n_estimators、max_depth。

常见问题

参考文献

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

  • Friedman, J. H. Stochastic gradient boosting[J]. Computational Statistics & Data Analysis, 2002, 38(4): 367–378.

  • Hastie, T., Tibshirani, R., Friedman, J. The Elements of Statistical Learning[M]. 2nd ed. Springer, 2009.