教程 ·

决策树分析怎么做?CART 分类/回归树用 AI 一句话完成 — 基尼/信息增益/剪枝/APA 报告全攻略

决策树分析完整教程:CART与CHAID算法对比,基尼系数与信息增益选择,预剪枝/后剪枝策略,准确率/Kappa/AUC评估,与Logistic回归比较,以及可直接套进论文的APA 7th报告句式。

因变量是类别型还是连续型?样本关系复杂、非线性?决策树(Decision Tree)是处理这类问题最直观的方法之一——结果是一棵可以"读出来"的树,每个节点都能解释。这篇教程从 CART/CHAID 算法原理讲到 APA 格式报告,用 AI 一句话跑完全套。


为什么选决策树而不是回归?

在医学、教育、管理、社会科学研究里,很多问题天生适合决策树建模:

  • 因变量是多类别(如轻度/中度/重度抑郁分组、学生通过/不通过/优秀三类)
  • 自变量之间存在复杂交互:年龄与性别的交互对结局的影响难以用线性项捕捉
  • 结果需要给非统计专业的受众解释:一张树形图比一列回归系数直观得多
  • 假设条件更宽松:决策树不要求正态分布、线性关系、方差齐性

决策树的局限同样存在:容易过拟合(尤其是深树)、对连续型因变量预测精度不如线性模型、预测稳定性低于集成方法(随机森林、XGBoost)。但作为探索性分析和可解释性建模的首选工具,决策树在学术论文中占有重要地位。


算法核心:CART vs CHAID

CART(Classification and Regression Trees)

CART 是最常用的决策树算法,由 Breiman 等人(1984)提出。两个关键特征:

  1. 二叉树(Binary Split):每个节点只分成两个子节点,穷举所有可能的切分点,选最优
  2. 分类树用基尼系数,回归树用均方误差(MSE)

基尼系数(Gini Impurity)

Gini(t) = 1 - sum_k [p(k|t)^2]
  • p(k|t) 是节点 t 中第 k 类样本的比例
  • Gini = 0:节点完全纯净(只有一类)
  • Gini 越大:节点越不纯(各类混杂)
  • 分裂增益 = 父节点 Gini - 加权子节点 Gini,选增益最大的切分

信息增益(Information Gain,ID3/C4.5 使用)

Gain(D, A) = Entropy(D) - sum_v [|Dv|/|D| * Entropy(Dv)]
Entropy(D) = -sum_k [p_k * log2(p_k)]

CART 与 ID3/C4.5 的主要区别:

特征CARTID3 / C4.5
分裂方式二叉多叉(C4.5 也支持二叉)
分类准则基尼系数信息增益 / 增益率
连续变量处理自动寻找最优切点C4.5 支持;ID3 不支持
缺失值处理代理分裂(Surrogate Split)C4.5 概率处理
支持回归是(MSE 最小化)
常用软件SPSS、R(rpart)、StataR(party/C50 包)

CHAID(Chi-squared Automatic Interaction Detection)

CHAID 基于卡方检验(或 F 检验)选择分裂变量:

  • 因变量为名义/有序分类时,用 Pearson chi-squaredLikelihood Ratio chi-squared
  • 因变量为连续型时,用 F 检验
  • 支持多叉分裂(子节点数 >= 2),更适合类别型自变量
  • 直接控制 I 类错误(Bonferroni 校正),统计解释性强
  • 常见于市场研究、客户细分、临床风险分层

选哪种算法?

场景推荐
因变量二分类或多分类、自变量含连续型CART(SPSS/R rpart)
因变量分类、自变量多为名义/有序分类CHAID(SPSS)
因变量连续(如预测分数、金额)CART 回归树
需要多叉分裂提高可读性CHAID
后续要做随机森林/BoostingCART(统一框架)

剪枝:控制树的复杂度防止过拟合

未剪枝的决策树会"记住"训练数据的每个细节,在新数据上泛化很差——这就是过拟合(Overfitting)。剪枝(Pruning)是控制模型复杂度的核心策略。

预剪枝(Pre-Pruning / Early Stopping)

在生长过程中提前停止:

参数含义SPSS 对应设置
max_depth最大树深(层数)最大树深
min_samples_split节点继续分裂所需最小样本数父节点最小个案数
min_samples_leaf叶节点最小样本数子节点最小个案数
min_impurity_decrease分裂增益低于阈值则停止最小变化量

后剪枝(Post-Pruning)

先生长完整树,再从叶节点向上剪枝:

  • 代价复杂性剪枝(Cost-Complexity Pruning,CCP):CART 默认后剪枝方法,通过 alpha 参数控制;alpha 越大树越小
  • SPSS 中的 Stopping Rules:相当于预剪枝与 chi-squared 剪枝的组合

实践建议:先用预剪枝设置初始约束,再通过交叉验证选最优 alpha(R rpartcp 参数)。


案例数据:糖尿病风险分类预测

研究背景

某社区卫生研究评估影响 2 型糖尿病患病的风险因素,共纳入 520 名 30-70 岁成年人,采用 CART 分类树识别高风险特征组合。

diabetes        糖尿病诊断(0 = 无,1 = 有)    -- 因变量
age             年龄(岁)
bmi             体质指数
fasting_glucose 空腹血糖(mmol/L)
hba1c           糖化血红蛋白(%)
family_hist     家族史(0 = 无,1 = 有)
exercise_freq   每周运动次数
hypertension    高血压史(0 = 无,1 = 有)

研究问题:哪些因素组合能最准确识别高风险个体?决策规则是什么?


用 AI 一句话完成决策树分析

chatsrs.com 上传数据后输入:

"以 diabetes 为因变量,age、bmi、fasting_glucose、hba1c、family_hist、exercise_freq、hypertension 为自变量,做 CART 分类决策树分析。 请输出:

  1. 各变量描述统计(患病组 vs 非患病组对比)
  2. CART 决策树(最大深度 5,叶节点最小 15 个样本),输出树形图和分裂规则
  3. 变量重要性排序(基尼增益)
  4. 混淆矩阵 + 准确率、敏感度、特异度、Kappa 系数
  5. ROC 曲线 + AUC(含 95% CI)
  6. 与二元 Logistic 回归对比(同样的自变量,比较 AUC 和准确率)
  7. APA 格式中文文字描述"

输出结果怎么读

输出 1:决策树分裂规则

ChatSRS 输出的树形图(文字版示意):

根节点(N = 520,患病率 = 36.2%)
|
|-- [规则 1] hba1c < 6.5%
|   |-- [规则 1.1] fasting_glucose < 6.1 mmol/L
|   |   |-- 叶节点 A:患病率 = 8.3%(N = 108,低风险)
|   |   |-- [规则 1.2] fasting_glucose >= 6.1 mmol/L
|   |       |-- family_hist = 0
|   |       |   |-- 叶节点 B:患病率 = 28.6%(N = 63,中风险)
|   |       |-- family_hist = 1
|   |           |-- 叶节点 C:患病率 = 51.4%(N = 37,高风险)
|
|-- [规则 2] hba1c >= 6.5%
    |-- bmi < 28.0
    |   |-- 叶节点 D:患病率 = 72.3%(N = 94,高风险)
    |-- bmi >= 28.0
        |-- 叶节点 E:患病率 = 89.1%(N = 128,极高风险)

决策规则解读

  • 叶节点 A(低风险):HbA1c < 6.5% 且空腹血糖 < 6.1 mmol/L,患病率仅 8.3%
  • 叶节点 E(极高风险):HbA1c >= 6.5% 且 BMI >= 28.0,患病率达 89.1%
  • 家族史在 HbA1c 正常但血糖偏高的中间人群中起到二次分层作用

输出 2:变量重要性

表 1  CART 分类树变量重要性(基于基尼增益,N = 520)

变量              重要性得分    排序
hba1c             0.342         1
fasting_glucose   0.287         2
bmi               0.168         3
family_hist       0.089         4
age               0.062         5
hypertension      0.031         6
exercise_freq     0.021         7

注:重要性得分为该变量在所有分裂中贡献的基尼增益总和,标准化至 0-1。

输出 3:模型评估指标

表 2  CART 决策树分类性能(N = 520,10 折交叉验证)

指标                  训练集      交叉验证
总体准确率            87.5%       83.3%
敏感度(灵敏度)      84.0%       79.3%
特异度                89.8%       85.5%
阳性预测值(PPV)     83.5%       79.2%
阴性预测值(NPV)     90.1%       86.1%
Kappa 系数            0.740       0.649
AUC                   0.912       0.876

注:交叉验证准确率用于评估泛化能力,训练集准确率仅供参考。
   Kappa .61-.80 为良好一致性(Substantial),> 0.80 为极好一致性(Landis & Koch, 1977)。
   AUC 95% CI(交叉验证): [0.844, 0.908]

输出 4:混淆矩阵

表 3  混淆矩阵(截断概率 = 0.5,10 折交叉验证)

               预测:无糖尿病    预测:有糖尿病    行合计
实际:无糖尿病    284(TN)         48(FP)         332
实际:有糖尿病     39(FN)        149(TP)         188
列合计            323               197              520

注:TN = 真阴性,TP = 真阳性,FN = 假阴性,FP = 假阳性。
   敏感度 = TP/(TP+FN) = 149/188 = 79.3%;特异度 = TN/(TN+FP) = 284/332 = 85.5%。

与 Logistic 回归对比

决策树和 Logistic 回归是分类问题中最常被比较的两种方法,了解差异有助于方法选择和论文写作。

对比维度CART 决策树二元 Logistic 回归
结果形式树形规则(if-then 条件判断)回归方程 + OR 值
假设条件无需正态、线性、方差齐假设较多(线性关系、无多重共线性等)
交互效应自动捕获(通过分裂节点体现)需手动加入交互项
变量重要性直接输出(基尼增益)间接(Wald 统计量)
过拟合风险高(需剪枝)相对较低(正则化天然约束)
可解释性极高(规则直观)中等(OR 值有统计含义)
APA 报告报告准确率/Kappa/AUC/树深报告 OR/95% CI/伪 R^2
大样本性能与集成方法差距大稳定
适用场景探索性分析、风险分层、临床路径确认性分析、因果推断、医学流行病

本例对比结果

表 4  CART 决策树与 Logistic 回归性能对比(N = 520,10 折交叉验证)

方法                  AUC     准确率    Kappa    敏感度    特异度
CART 决策树           0.876   83.3%     0.649    79.3%     85.5%
二元 Logistic 回归    0.891   84.7%     0.673    81.4%     86.9%

注:两种方法 AUC 差异通过 DeLong 检验评估:z = 1.24, p = .214,无统计学差异。
   Logistic 回归略优于 CART,差异无统计学意义。

结论:当二者 AUC 无显著差异时,CART 的可解释性优势(清晰的分裂规则)使其在临床决策支持场景中更受偏好;Logistic 回归在报告 OR 值(病因学解释)时更具优势。


论文里怎么报告(APA 7th 格式)

决策树 APA 报告没有如 Logistic 回归那样成熟的统一规范,但学界已形成若干约定俗成的要求。

方法节(前提说明)

采用 CART(Classification and Regression Trees)算法构建分类决策树,以探索糖尿病患病的风险特征组合。以 diabetes 为因变量,纳入 7 个潜在预测变量。模型参数设置:最大树深 = 5,叶节点最小样本数 = 15,采用代价复杂性后剪枝(alpha 通过 10 折交叉验证确定)。以混淆矩阵、总体准确率、Kappa 系数和 ROC 曲线下面积(AUC)评价模型性能。为评估泛化能力,所有性能指标均基于 10 折交叉验证结果报告。统计分析以 R 4.4(rpart 包)实施,检验水准 alpha = .05(双尾)。

结果节(完整句式)

CART 分类决策树共生成 5 个叶节点(树深 = 3),糖化血红蛋白(HbA1c)为根节点分裂变量(基尼增益 = 0.342),其次为空腹血糖(增益 = 0.287)和 BMI(增益 = 0.168)(见图 1 决策树图)。

模型在 10 折交叉验证下的总体准确率为 83.3%,Cohen's kappa = .649,95% CI [.581, .717],提示模型具有良好的分类一致性(Substantial;Landis & Koch, 1977)。ROC 曲线下面积 AUC = .876,95% CI [.844, .908](p < .001),表明模型对糖尿病的区分能力良好。敏感度为 79.3%,特异度为 85.5%,阳性预测值为 79.2%,阴性预测值为 86.1%(见表 2)。

与同数据集上拟合的二元 Logistic 回归相比(AUC = .891),CART 决策树 AUC 无显著差异,z = 1.24, p = .214(DeLong 检验)。

APA 报告格式汇总

要素格式示例
Kappa 系数Cohen's kappa = .649, 95% CI [.581, .717]
AUCAUC = .876, 95% CI [.844, .908], p < .001
准确率总体准确率 = 83.3%(交叉验证)
敏感度/特异度敏感度 = 79.3%,特异度 = 85.5%
变量重要性HbA1c(基尼增益 = 0.342)
算法参数最大深度 = 5,叶节点最小样本数 = 15
软件声明R 4.4 rpart 包 / SPSS 28 决策树模块

效应量参考(Landis & Koch, 1977 Kappa 解读标准): kappa < .20 = 极差;.21-.40 = 一般;.41-.60 = 中等;.61-.80 = 良好;> .80 = 极好


常见问题 FAQ

Q1:基尼系数和信息增益哪个更好?选哪个?

A:两者在多数情况下给出相似的分裂结果,差异主要在处理多类别变量时:信息增益对具有更多类别值的变量有偏好(容易选类别数多的变量作为分裂点),C4.5 的"增益率"(Gain Ratio)通过惩罚项修正了这一偏差;基尼系数计算更快,对二分类问题与信息增益几乎等价。实践中:SPSS 和 R rpart 默认使用基尼系数,可直接沿用;若审稿人要求说明,在方法节注明"以基尼系数作为节点分裂准则"即可。

Q2:决策树的"变量重要性"可以当作因果推断的依据吗?

A:不能直接用于因果推断。决策树的变量重要性反映的是预测贡献(该变量在多少个分裂点上、贡献了多少基尼增益),而非因果效应。与 Logistic 回归的 OR 值不同,重要性得分没有"控制其他变量"的含义——某变量重要性高,可能是因为它是真正的原因变量,也可能因为它与真正的原因变量高度相关。论文中的因果推断应依赖回归分析、倾向评分匹配(PSM)或工具变量法,决策树适合用于探索性预测建模和风险分层

Q3:样本量需要多大?CART 有 EPV 类似的要求吗?

A:CART 没有像 Logistic 回归那样严格的 EPV(Events Per Variable)规则,但实践经验建议:每个叶节点最少 20-30 个样本,训练集总样本量建议在 200 以上。样本量太小会导致过拟合严重,即便剪枝也难以改善泛化性能。ChatSRS 在样本量不足时会自动警告并建议调整参数或改用更简单的模型。若数据量非常有限(n < 100),建议直接使用 Logistic 回归。

Q4:分类树和回归树有什么本质区别?

A:核心区别在于因变量类型和分裂准则。分类树:因变量为类别型,使用基尼系数或信息增益选择最优分裂,叶节点输出为多数类别;回归树:因变量为连续型,使用均方误差(MSE)或均值绝对误差(MAE)选择最优分裂,叶节点输出为该区域样本均值。两者在算法框架上统一,CART(Classification And Regression Trees)名字中的"R"正指回归树。在 ChatSRS 中,上传数据后指定"做回归决策树,预测因变量 Y"即可自动切换到回归树模式,输出 MSE、RMSE、R^2 及变量重要性。

Q5:决策树对异常值敏感吗?需要标准化吗?

A:决策树对异常值不敏感——因为分裂依据的是样本的排序(连续变量的切点),不依赖均值和方差。极端值不会像线性回归那样扭曲整个回归面。同样,决策树不需要对变量做标准化或中心化处理,变量尺度不影响分裂结果(这与 SVM、逻辑回归不同)。但存在严重录入错误的离群值(如年龄 = 999)仍需在数据清洗阶段处理,否则会形成孤立的单样本节点。


小结

决策树分析(尤其是 CART)是兼具预测性能和可解释性的强大工具。论文中正确使用决策树,核心要点有三:

  1. 报告剪枝策略和参数设置:最大深度、叶节点最小样本数、交叉验证方式,让读者能重现你的树
  2. 用交叉验证指标评估性能:训练集准确率不代表泛化能力,必须报告交叉验证的准确率/Kappa/AUC
  3. APA 格式报告 Kappa + AUC + 混淆矩阵关键值:比单报"准确率"更符合期刊规范

chatsrs.com 一句话指令,即可获得:树形图 + 分裂规则 + 变量重要性 + 混淆矩阵 + ROC/AUC + 与 Logistic 对比 + 可直接粘贴进论文的 APA 7th 格式文字。


相关阅读


本文首发于 ChatSRS 官方博客。如有问题或反馈,欢迎在 ChatSRS 站内 [用户中心 -> 帮助与反馈] 联系我们。