机器学习分类
梯度提升树(GBDT)分类
把多分类写成可微的交叉熵,每棵新树只拟合当前概率相对金标准的负梯度,再用学习率把修补缩小后累加进去。
这篇能回答什么
GBDT 分类把「这套房属于哪一价位档」写成优化问题:当前模型给出三档概率,交叉熵量出它和金标准差多远,下一棵浅树去拟合这个损失对 logit 的负梯度(残差)。它既不像 CART 一次长出整棵规则树,也不像森林那样平行投票,更不像 AdaBoost 用指数损失改样本权重——它改的是函数空间里的概率。学习率 ν 把每棵树的修补缩小,防止一轮就把多数类先验钉死。
综合评价教学运行把总价切成三档占用(表中 A/B/C)当金标准,特征用面积、楼层、总楼层、建筑年份、单价。完整个案 305。C 档约六成,是交叉熵的起点:第一棵树几乎一定会先学会「多数房子偏贵档」,真正的工作在后续残差里——那些面积不大却被先验拉向 C 的行。
如何选择方法
四条轴线分开选。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 · 上传住房表并造好三档 Y
综合评价 xlsx 本身的总价是连续的。先按研究计划切成三档标签列,或使用你已经离散化的价位字段。不要把连续总价既当特征又当标签。
步骤 2 · 点选梯度提升树分类
目录同时有 GBDT 回归。本页 Y 是档位。XGBoost / LightGBM / CatBoost 是不同实现,不要用它们的默认去对这 305 行的占用。
步骤 3 · 特征墙与学习率先用默认
特征:面积、楼层、总楼层、建筑年份、单价。ν=0.1、树数 80、深度 3。想更猛再往上加树,不要先把学习率拧到 0.5。
步骤 4 · 对照残差曲线,不是对照柱高
占用 75+48+182=305 只说明先验。看验证交叉熵是否在某轮抬头。C 柱最高不表示提升成功。




如何阅读输出
占用行给出交叉熵的起点:C 档 182 / 305 ≈ 60%,A 75、B 48。第一轮残差,大部分来自「不该落在 C 却被先验拉向 C」的房子,以及少数高档被低估的行。取值列没有对数损失,也没有 AUC。项目列重复方法全名,避免和 AdaBoost 那张 189 人的年级表搞混。
| 项目 | 类别 | 统计量 | 取值 |
|---|---|---|---|
| 梯度提升树(GBDT)分类 | 类别 A | 频数 | 75 |
| 梯度提升树(GBDT)分类 | 类别 B | 频数 | 48 |
| 梯度提升树(GBDT)分类 | 类别 C | 频数 | 182 |
| 梯度提升树(GBDT)分类 | 合计 | 有效样本 N | 305 |
| 梯度提升树(GBDT)分类 | 类别 A | 占比(%) | 24.59 |
| 梯度提升树(GBDT)分类 | 类别 B | 占比(%) | 15.74 |
| 梯度提升树(GBDT)分类 | 类别 C | 占比(%) | 59.67 |
左右滑动可查看完整表格
教学示例表在 StatsX 工作台中的计算结果口径。


分类语言里的基线是「永远报 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.