CHAID决策树
这个方法是做什么的
用卡方检验驱动分裂的分类树。每到一个节点,它先把每个自变量的类别两两比较、反复合并“最不显著的一对”,直到没有一对还能合并(合并显著性阈值 0.05,与 SPSS 的默认口径一致);再对合并后的分组算列联表 Pearson χ²,套上 Kass(1980) 的 Bonferroni 乘子校正“合并方案本身也是一次多重比较”,最后选校正 p 最小的那个自变量做多叉分裂——一次可以分出三支、四支,不像 C&RT 只能二分。校正 p ≥ 显著性阈值时就停止生长,所以树的大小是被检验管住的。目标变量必须是定类(2~20 类)。
报告共六张卡。CHAID 特有的读法集中在卡⑤ 表9:它比 C&RT 多出“分裂统计量”“分裂 p”“进入本节点的条件”三列,条件写成区间的并(如“(13.09, 15.3] / (15.3, 16.94] / (16.94, 18.7]”),因为有序自变量只允许合并相邻档;表10 给每个叶节点的提升度 Lift(叶节点纯度 ÷ 该类在全样本中的占比),演示数据里最高的一片 Lift = 2.000、把 24 个样本圈成 23∶1。定量自变量不是原样进入检验的:唯一取值超过 10 个时先按分位切成至多 10 个区间,卡① 表1 表注会写明这件事。
需要准备什么数据
- 放入[定类]目标变量Y:定类变量(分组/标签)
- 放入自变量X:至少 1 个
数据要求
- 数据表至少 20 行。
- 单列缺失率不超过 30%。
- 不接受取值全都一样的列(零方差列没有可分析的变异)。
- 「放入[定类]目标变量Y」的类别数需在 2~20 之间。
- 「放入[定类]目标变量Y」的每一组至少 2 个样本。
以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。
什么时候用它
- 目标是定类结果(买 / 不买、达标 / 未达标、三档客户分层),且你想要按类别自然分组的多叉规则
- 自变量里有天然的类别(科室、渠道、城市等级),希望模型自己把作用相近的类别并起来
- 需要向业务或审稿人交代“这一分裂强不强”,希望每个节点带一个统计量与 p
- 想让树的大小由显著性而不是由深度硬截来控制
- 做客户分群、风险分层这类要把规则落到人身上的场景,卡⑤ 的提升度可以直接排序
前提:目标变量 2~20 个类别、每类至少 2 条记录(否则做不了分层交叉验证),至少 20 条完整记录,禁止常数列,目标变量不得同时出现在自变量里。所选变量上有缺失的整行会被剔除。样本量最好达到自变量个数的 10 倍以上,卡① 表4 会给出实测比值。类别很多的定类自变量会被砍:原始水平数 ≥ 9 时只保留出现频次最高的 7 个,其余全部归并成“其他”。
什么时候不要用它
- 目标变量是连续数值:拖进去会直接报“当前算法要求目标变量为定类变量”。回归树用「C&RT决策树」,要连续因变量的系数与显著性用「线性回归 (最小二乘法)」。
- 需要精确阈值:定量自变量被切成至多 10 个区间后,箱内的差别 CHAID 完全看不见,给不出“6.24 万元”这种切点。要精确阈值用「C&RT决策树」或「QUEST决策树」。
- 贪心合并让你不放心:反复并“最不显著的一对”只是局部最优;把候选划分枚举到底再选的是「Exhaustive CHAID决策树」。
- 想要一个可检验的效应量而不是一棵树:单个二维列联表的关联强度请用「Pearson卡方检验」,需要控制分层因素时用「分层卡方分析」,要每个自变量的 OR 与置信区间用「逻辑回归」。
- 只关心预测准不准:单棵树对数据扰动很敏感,换用「随机森林分类」或「GBDT梯度提升分类」。
容易误读的地方
- 树图上用到的变量,置换重要性可能正好是 0.00000。 演示数据里“门店面积”在节点10 被选为分裂变量,但它切出的两个子节点(节点11 纯度 0.5312、节点12 纯度 0.8765)预测类别都是 1——硬标签一个都没变,所以打乱这一列 Macro-F1 一分不掉,卡④ 判定写“该变量未被模型用到”。这正是卡③ 图注提醒“不能据根节点断言谁最重要”的具体形态:分裂改变的是纯度,重要性问的是预测会不会变,两者可以完全脱钩。
- 表9 的 p 不能当作“该变量显著影响目标”。 表注逐字说明:Kass Bonferroni 只校正了类别合并/枚举那一层,“另外两层多重比较仍未校正”——每个节点都在全部自变量上择优、并且逐层重复检验,实际第一类错误率高于名义 α。它只能用来横比同一节点上各候选分裂的强弱。
- 调大“最小叶节点样本数”不是砍掉小分支,而是把它并进别的分支,而 p 不跟着变。 把它从 5 调到 30,演示数据的叶节点从 7 个降到 4 个,表9 会多出一条归并说明,指名哪个区间被并进了哪一支,并在末尾逐字写着:“归并只影响树上的分支条件,分裂统计量与 p 值仍对应归并前的 χ² 分组。”也就是说你看到的分支和那一行的 χ²/p 不是同一套分组,别拿 p 去解释归并后的分支。
- 定类自变量里的“其他”不是一个业务类别。 原始水平 ≥ 9 时只留频次前 7 名,剩下的全部塞进“其他”。落到叶节点上就会出现“若渠道属于其他 → 预测 1”这样的规则,它把一批互不相干的稀有水平混在一起,不能照字面解读,也不能拿去做投放。水平多的变量建议先按业务含义人工归并再拖进来。
- 准确率高于无信息率只是及格线,不是结论。 卡① 表2 会给出多数类基线(演示数据 0.5208),卡② 的准确率 0.7292 高于它才有意义;但表2 表注写的是“低于或接近该值说明模型没有学到有效信息”,判断要连折间 SD(本次 0.0642)与卡④ 的 ROC-AUC 一起看,而不是看到“高于无信息率”几个字就收工。
报告里有什么
- 输出结果一:数据概览与前提检验
- 输出结果二:交叉验证性能主结果表
- 输出结果三:树结构图与折外预测诊断图
- 输出结果四:判别效能与变量重要性
- 输出结果五:节点明细与叶节点决策规则
- 输出结果六:结论与学术表述
树图自左向右展开:每个节点标注编号、本节点采用的分裂变量、落入该节点的样本数与预测类别;叶节点没有分裂变量。可用右上角切换器切到「表格」查看同一棵树的节点清单。
混淆矩阵基于交叉验证的折外预测:行是真实类别、列是预测类别,对角线为预测正确的样本数。
ROC 曲线以「1」为正类,基于折外预测概率绘制;对角虚线为随机猜测参考线,曲线越靠左上判别力越强。