提升树分类
XGBoost分类
用带正则与二阶梯度的提升树按层生长,把混合特征映射到定类标签,并先核完整个案的类别占用再读 ROC。
这篇能回答什么
XGBoost分类要回答的是「下一张问卷或下一笔订单,更可能落在哪一个已观测标签上」。它不是在估优势比,也不做组间均值检验。算法把损失对当前预测的一阶、二阶导数攒成增益,再长出下一棵树去拟合残差;每棵树按层(level-wise / depth-wise)展开:同一深度的节点先全部尝试分裂,再进入下一层。这样深度被 max_depth 直接管住,叶子不会像按叶生长那样突然扎得很深。
教学页占用的是学生问卷完整个案。合计 N=368。就读年级被记成类别 A / B / C,人数 88、46、234(23.91%、12.5%、63.59%)。C 档已经超过六成,B 档只有 46 人。工作台把这份构成印在「XGBoost分类结果表」里,让你先看见标签(或与标签纠缠的多类分组)有多偏,再去读 ROC。本页复现把学校办学性质当作要预测的二元标签,把就读年级与学生性别放进特征。
什么时候不该用
需要「控制其他变量后,某题项升高一档,公立相对私立的发生比是多少」时,应打开二元逻辑回归,不要用提升树冒充 OR。没有金标准标签、只想把住房或客户切开,用K-Means 聚类。已经有一棵森林、只想拆开预测贡献,用SHAP 模型解释。宽表、行数很大、你更在意训练耗时与按叶生长,应对照LightGBM分类。
如何选择方法
先问自己要的是可发表的发生比还是可部署的预测器。前者走统计模块里的逻辑回归;后者再在树家族里挑生长方式。XGBoost 把同一层节点一起分裂,深度预算更均匀,默认更「方正」。LightGBM 每次只切当前增益最大的那片叶子,同样的 num_leaves 往往长得更瘦、更深。随机森林是并行装袋,不拟合前一棵的残差。梯度下降逻辑回归则坚持线性 logit,没有分裂。
XGBoost分类:二阶增益 + 叶子正则 + 按层生长;输出完整个案占用与 ROC。
LightGBM分类:直方图加速 + 按叶生长,宽表大样本通常更快。
随机森林分类:装袋降方差,没有提升的顺序残差。
二元逻辑回归:两类别、Newton/IRLS、Wald 与 OR,不是树。
输入、输出与限制
输入
工作台只暴露一个角色:分析变量。类型可以是定量、定类、分组定类或二元定类。其中必须能读出一列当作标签(本教学示例用学校办学性质),其余列当作特征(就读年级、学生性别;需要时再加量表分)。疑似发票号、学号的列会被藏起来,不能靠改名硬塞。
分析变量:最少 1 个,最多 20 个。
标签:从分析变量里指定一列定类;二元或三档分组均可。
可选超参:树棵数、最大深度、学习率、叶子 L2;本页按层生长,深度上限对整层生效。
输出
结果表列是项目、类别、统计量、取值。教学占用印的是完整个案里 A / B / C 的频数与占比,以及合计有效样本 N。这张表不给出准确率,也不给出每棵树的增益。旁边的 ROC 以灵敏度为纵轴、1−特异度为横轴,本例曲线下面积约为 0.80。智能解读只应被当成提示,论文数字以占用表与 ROC 为准。
产品限制
目录里「可用」只表示角色能填、类型能对上,不等于问卷数据上提升树就是首选。
全表 500 行经过成表删除后,本方法占用 N=368,不要沿用上传时的行数。
B 档只有 46 人时,过深的按层分裂会在该档上记住噪声。
图是 ROC,不是特征重要性条;完整人数以「XGBoost分类结果表」为准。
案例
研究问题。 学生问卷同时记录了学校办学性质、就读年级与学生性别。研究者想先看:在成表删除之后,三个年级档还剩多少人;再问这些字段能不能把公立 / 私立分开,而不是先写一篇关于「年级导致办学性质」的因果故事。
教学表示例来自学生问卷,工作表为「有效样本数据」。XGBoost 完整个案 368。年级三档 88 / 46 / 234,C 档 63.59%,B 档仅 12.5%。特征里一旦裂开「是不是 B 档」,该侧叶子的估计会明显比 C 档更抖。下载后:分析变量勾选学校办学性质、就读年级、学生性别,把办学性质当作标签运行。
在 StatsX 中操作
步骤 1 · 放入问卷表
进入工作台上传区,投下学生问卷文件。核对该文件当前工作表标题仍是「有效样本数据」。体积限制是 20 MB。
步骤 2 · 核对照片式画像
在列画像里确认学校办学性质为二元、就读年级为分组、学生性别为二元。被标成疑似编号的五列保持隐藏。数学学习兴趣若要加入,应是定量而不是把 1–5 分当无序字母。
步骤 3 · 点选 XGBoost分类
在算法目录键入「XGBoost分类」。本问卷上它常落在「可用」而不是「适合」:类型允许运行,并不表示提升树比逻辑回归更贴这份交叉表。
步骤 4 · 勾选分析变量
右侧角色只看到「分析变量(1–20)」。勾选学校办学性质、就读年级、学生性别三列,与截图一致。不要把办学性质和年级同时当成两个要预测的标签。
步骤 5 · 先读占用再读曲线
结果页先对「XGBoost分类」这一行里的合计 N 与 B 档 46 人。C 档超过六成时,不要先报准确率。再看 ROC 是否明显高于对角线。




如何阅读输出
下表是教学占用,不是混淆矩阵。项目列全部写「XGBoost分类」。类别 A / B / C 的频数是 88、46、234,占比 23.91%、12.5%、63.59%,合计有效样本 N=368。12.5% 的 B 档是最薄的一层:按层生长时,这一层每个分裂用到的二阶统计量都更少。C 档 63.59% 会把「全体判成多数」的准确率抬到六成以上,所以本页用 ROC 而不是正确率当主图。
| 项目 | 类别 | 统计量 | 取值 |
|---|---|---|---|
| XGBoost分类 | 类别 A | 频数 | 88 |
| XGBoost分类 | 类别 B | 频数 | 46 |
| XGBoost分类 | 类别 C | 频数 | 234 |
| XGBoost分类 | 合计 | 有效样本 N | 368 |
| XGBoost分类 | 类别 A | 占比(%) | 23.91 |
| XGBoost分类 | 类别 B | 占比(%) | 12.5 |
| XGBoost分类 | 类别 C | 占比(%) | 63.59 |
左右滑动可查看完整表格
教学示例表在 StatsX 工作台中的计算结果口径。


读图顺序:先承认 368 不是 500,再承认 B 档 46 人,最后看曲线有没有离开虚线。AUC 0.80 表示办学性质在当前三列上可以被分开一截,但离「部署到招生决策」还远。增益最大的分裂若总是「是不是 C 档」,只说明多数年级好切,不说明年级改变学校类型。
若你改把就读年级本身当作三分类标签,占用表就变成标签分布,ROC 应改为一对多(通常盯住 C 对 A∪B)。无论哪一种,都不要把 63.59% 写成模型准确率——那是 C 档的样本份额。
理论与公式
第 t 轮在已有预测 ŷ^{(t−1)} 上加一棵树 f_t。XGBoost 对训练损失做二阶展开,并给叶子加正则:
g_i、h_i 是损失对 ŷ 的一阶、二阶导数。某候选分裂把样本分到左右两叶时,增益为
按层生长意味着:深度 d 上所有当前叶子都评估一遍 Gain,再一起进入 d+1。这与 LightGBM 的「只切当前最优叶」不同。B 档仅 46 人时,该档所在节点的 H 更小,Gain 更容易被噪声抬起来,所以要把 max_depth 与最小叶子样本量一起收紧。缺失值走默认方向,不必先插补。ROC 的 AUC 是阈值扫过时灵敏度对假阳性率的积分,和上式的 Gain 不是同一个数字。
注意事项
完整个案 368 必须写进方法节,不能沿用全表 500。
B 档 46 人(12.5%)上的叶子不要用很深的 max_depth 去「挖干净」。
C 档份额不是准确率;主指标用 AUC、宏平均 F1 或按档召回。
按层生长不等于不会过拟合:树太多、学习率太大同样会记住问卷噪声。
办学性质被预测准了,也不能写成年级改变了学校体制。
特征增益高只说明树爱用它分裂,不是偏回归系数,更不是 OR。
常见问题
参考文献
Chen, T., Guestrin, C. XGBoost: A scalable tree boosting system[C]//KDD. 2016.
Friedman, J. H. Greedy function approximation: a gradient boosting machine[J]. Annals of Statistics, 2001.
周志华. 机器学习[M]. 北京: 清华大学出版社, 2016.