跳到主要内容

机器学习分类

决策树分类

用一棵 CART 树把定量或定类特征切成轴平行区域,每个叶子用该区域内的多数类作为预测,并给出可以念出来的分裂路径。

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

这篇能回答什么

CART 分类树回答两句可以写进结果节的话:这套房(或这个人)被判成哪一档;沿着根节点往下,是哪几条「面积是否大于某阈值、楼层是否低于某层」的轴平行规则把它送进那片叶子。叶子里不再估计对数几率,只数该区域内金标准的多数类。StatsX 本页先甩出一张三档占用表,逼你承认先验,再谈树有没有把纯度做得比「全猜最大类」更高。

综合评价教学表把房源的户型信息压成三个教学档位(表中的类别 A / B / C),特征用面积(平米)、楼层、总楼层、建筑年份。完整个案 375。C 档独占约三分之二,这是分类问题的先验占用,不是模型分数。

什么时候不该用

你要的是「面积每多 10 平米,落入高档的发生比变多少」这类带标准误的边际效应,应改用多项逻辑回归或二元逻辑回归。没有金标准、只想把房子切开看画像,用K-Means 聚类分析。单棵树方差大、换一批房源规则就跳,若目标是稳住预测而不是打印规则,应换随机森林分类。编号列、房源 ID 不能当特征。

如何选择方法

先问自己:交付物是一张能念给业务听的规则清单,还是一个更稳的黑盒预测器,还是一组带置信区间的优势比。只有第一项,才值得停在 CART。规则会随样本抖动时,集成比加深这一棵树更合理;关系近似线性、又要写「控制其他变量之后」时,逻辑回归更干净。

  • 决策树分类(CART):1 个定类标签 + 若干特征;输出占用、可解释分裂与叶内多数类。

  • 随机森林 / AdaBoost / GBDT:多棵树,牺牲可读路径,换方差或偏差。

  • 多项 / 二元逻辑回归:线性 logit,报告 OR,不做矩形切割。

  • 线性判别:假设组内协方差相近,找分离超平面,不是递归二分。

输入、输出与限制

输入

标签必须是定类,至少两个互斥水平;教学运行把户型压成三档。特征可以是面积这类定量,也可以是装修、城市这类定类(内部会编码)。房源 ID、小区名这类准标识符会被拒绝。

  • 特征变量:最少 1 个,最多 40 个。

  • 标签变量:正好 1 个定类字段,水平数 2–12。

输出

教学表四列:项目、类别、统计量、取值。统计量只有频数、占比(%)与合计 N,用来读标签占用。完整工作台还会展开树路径与叶内多数类;本页取值列没有准确率、没有 F1、没有 AUC,248 不能写成「答对了 248 套」。

产品限制

  • 分裂准则固定为 CART 基尼,不是 C4.5 的信息增益比,也不是 SPSS 默认有时出现的 CHAID。

  • 默认最大深度 8,叶节点至少 5 条;深度开到「纯叶子」会在少数类上过拟合。

  • 有效行至少 20;拟合最多使用 20000 行。

  • 类别超过 12 个会拒绝,避免把准连续编号当成标签。

  • 这些上限是 StatsX 实现,不要拿 SPSS 决策树「生长 / 修剪」对话框的默认最小个案去逐格对。

案例

研究问题。 中介想用面积、楼层、总楼层、建筑年份,事先判断一套挂牌房更像哪一种户型档,并且希望把规则打印出来给新人背,而不是只给一个黑盒分数。

教学运行在完整个案 375 上清点金标准占用:A 档 75 套(20.0%),B 档 52 套(13.87%),C 档 248 套(66.13%)。C 是主导档。一棵永远预测 C 的树桩,命中率已经等于 66.13%,任何「看起来很高」的训练准确率都要先减去这个数。下载综合评价表,标签用房屋类型(或你事先合并好的三档),特征勾选面积、楼层、总楼层、建筑年份。

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

在 StatsX 中操作

  1. 步骤 1 · 装入综合评价表

    把住房 xlsx 拖进工作台,确认工作表能看到房屋类型、面积、楼层。单文件不超过 20 MB。不要把「房源ID」一列留下当特征。

  2. 步骤 2 · 先看标签有几档

    画像里核房屋类型的水平数。若原始有六种户型,教学阅读按三档占用理解:本页 A/B/C 是压扁后的金标准,不是六类原名。

  3. 步骤 3 · 点选决策树分类

    目录搜索「决策树」或 CART,选分类而不是回归树。适合标记只是提示,户型档才是你的 Y。

  4. 步骤 4 · 挂上特征与档位

    标签放房屋类型(或你的三档列);特征放面积(平米)、楼层、总楼层、建筑年份。点运行。

  5. 步骤 5 · 先读占用,再顺着根往叶走

    占用表上的 75 / 52 / 248 必须加总为 375。只有确认 C 档先验之后,才去看第一刀切在面积还是楼层,以及少数类叶子里是不是只剩个位数。

工作台上传综合评价住房表
导入含房屋类型与面积的综合评价表。
列画像核房屋类型水平
画像确认房屋类型为定类,面积、楼层为定量。
目录中点选决策树分类
选定「决策树分类」,不要误点回归树。
为 CART 指定户型档与住房特征
标签挂户型档,特征挂面积与楼层后运行。

如何阅读输出

取值列是分类器的先验台账。A 75、B 52、C 248,加总 375,与合计行一致。占比 20.0% / 13.87% / 66.13% 的分母也是 375。项目列重复「决策树分类」,只表示这张占用属于本次 CART 运行,不是三棵不同的树。C 档 248 套是金标准落在主导户型的房子数,不是这棵树答对了多少套。

决策树分类结果表
项目类别统计量取值
决策树分类类别 A频数75
决策树分类类别 B频数52
决策树分类类别 C频数248
决策树分类合计有效样本 N375
决策树分类类别 A占比(%)20.0
决策树分类类别 B占比(%)13.87
决策树分类类别 C占比(%)66.13

左右滑动可查看完整表格

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

决策树分类的三档占用表
工作台占用表的频数、占比应与上表同一口径。
三档户型占用构成图
柱高对应先验占比。最高柱是多数类基线,不是 CART 的检验统计量。

分类语言里的第一句话应当是:这是一个三分类、先验严重倾斜的任务,多数类基线 = 66.13%。第二句才是树有没有用面积等特征把叶子纯度做到高于这个基线。B 档只有 52 套,深度 8 的树很容易切出「只装得下两三套」的纯叶子——训练纯度为 1,换一批两室房就塌。读图时不要把 C 柱最高写成「模型认为大户型最好」。

理论与公式

对节点 t,记各类占比为 p_k(t)。CART 用基尼不纯度衡量「再随机抽一条,按节点分布去猜会猜错的概率」:

候选分裂把节点切成左右两块,以样本量加权后的基尼下降作为切分分数。本教学先验 p_C≈0.6613 时,根节点基尼已经小于均匀三分类的 2/3,树必须证明切一刀之后两侧更纯,而不是只把多数类再声明一次。

叶子的预测是 arg max_k n_k(leaf),即叶内占用最多的那一档。这与逻辑回归的 softmax 概率不同:CART 给出的是矩形区域上的硬标签,没有「面积每增加一平米」的连续斜率。过拟合的典型机制是:深度不受限时,B 档 52 套会被切成许多近乎单点的纯叶,训练误差趋近 0,结构方差爆炸。

注意事项

  • 占用表不是混淆矩阵。对角线上「判对多少」要另表才有;本页只有金标准直方图。

  • 多数类基线 66.13% 必须写进方法。高于它才谈得上树学到了户型结构。

  • 轴平行切割抓不住「面积与楼层必须同时大」的对角线关系,除非用很深的阶梯去逼近。

  • 换 20% 房源,第一刀阈值常会跳。规则能沟通,不代表规则稳定。

  • 基尼对多数类友善:B 档 13.87% 的分裂增益容易被 C 档淹没,少数类召回不会自动变好。

  • SPSS CRT 的最小个案、先验选项与 StatsX 默认叶大小不同,树形不必长得一样。

常见问题

参考文献

  • Breiman, L., Friedman, J., Olshen, R., Stone, C. Classification and Regression Trees[M]. Wadsworth, 1984.

  • Quinlan, J. R. C4.5: Programs for Machine Learning[M]. Morgan Kaufmann, 1993.

  • 周志华. 机器学习[M]. 北京: 清华大学出版社, 2016.