决策树

6 minIntermediate2026/6/14

决策树算法原理、ID3/C4.5/CART算法对比、信息增益、剪枝策略。

1. 决策树基本原理

决策树通过递归分裂特征空间,构建树形决策结构,每个内部节点表示一个特征判断,叶节点表示预测结果。

1.1 树结构

              根节点
             /       \
        特征A≤3?    特征A>3
         /    \       /    \
    特征B≤5?  叶:0  特征C≤2? 叶:1
     /  \           /   \
   叶:0  叶:1     叶:1   叶:0
组成说明
根节点包含全部训练样本
内部节点特征测试条件
分支测试结果的路径
叶节点别标签或回归值

1.2 学习过程

决策树学习本质是递归选择最优特征和分裂点

BuildTree(D, features):
    if D中所有样本同类:
        return 叶节点(该类)
    if features为空 or D样本数 < 阈值:
        return 叶节点(多数类)
    选择最优特征 f* 和分裂点 t*
    D_left = {D | f* ≤ t*}
    D_right = {D | f* > t*}
    return Node(f*, t*, BuildTree(D_left), BuildTree(D_right))

2. 特征选择准则

2.1 信息增益(ID3)

信息熵度量数据集的纯度:

H(D)=k=1Kpklog2pkH(D) = -\sum_{k=1}^{K} p_k \log_2 p_k

其中 pkp_k 为第 kk 的比例。熵越大,数据越不纯。

信息增益:按特征 AA 分裂后的熵减少量:

Gain(D,A)=H(D)v=1VDvDH(Dv)\text{Gain}(D, A) = H(D) - \sum_{v=1}^{V} \frac{|D^v|}{|D|} H(D^v)

选择信息增益最大的特征进行分裂。

缺点:偏向选择取值多的特征。

2.2 信息增益率(C4.5)

固有值(Intrinsic Value)

IV(A)=v=1VDvDlog2DvD\text{IV}(A) = -\sum_{v=1}^{V} \frac{|D^v|}{|D|} \log_2 \frac{|D^v|}{|D|}

信息增益率

GainRatio(D,A)=Gain(D,A)IV(A)\text{GainRatio}(D, A) = \frac{\text{Gain}(D, A)}{\text{IV}(A)}

C4.5 选择信息增益率最大的特征,惩罚取值多的特征

2.3 基尼指数(CART)

基尼指数度量数据集的不纯度:

Gini(D)=1k=1Kpk2\text{Gini}(D) = 1 - \sum_{k=1}^{K} p_k^2

按特征 AA 的某个取值 aa 二分后的基尼指数:

Gini(D,A=a)=D1DGini(D1)+D2DGini(D2)\text{Gini}(D, A=a) = \frac{|D_1|}{|D|}\text{Gini}(D_1) + \frac{|D_2|}{|D|}\text{Gini}(D_2)

CART 选择使基尼指数最小的特征和分裂点。

2.4 三种准则对比

准则算法分裂方式偏好
信息增益ID3多路分裂取值多的特征
信息增益率C4.5多路分裂修正偏好
基尼指数CART二叉分裂无明显偏好+回归

基尼指数 vs 熵

Gini(D)12H(D)ln2\text{Gini}(D) \approx \frac{1}{2} H(D) \cdot \ln 2

基尼指数计算不需要对数运算,效率更高。

3. 剪枝策略

3.1 预剪枝

在构建过程中提前停止树的生长:

策略说明
最大深度限制树的深度
最小样本数节点最少样本数
最小信息增益分裂的最小增益阈值
最小叶节点样本数叶节点最少样本数

3.2 后剪枝

先生成完整树,再从底部开始剪枝:

代价复杂度剪枝(CART)

Rα(T)=R(T)+αTR_\alpha(T) = R(T) + \alpha |T|

其中 R(T)R(T) 为训练误差,T|T| 为叶节点数,α\alpha 为复杂度参数。

  • α=0\alpha = 0:不剪枝
  • α\alpha \to \infty:只保留根节点
  • 通过交叉验证选择最优 α\alpha

悲观剪枝(C4.5)

R(T)=R(T)+Te2R'(T) = R(T) + \frac{|T| \cdot e}{2}

使用连续性修正估计泛化误差。

3.3 剪枝对比

维度预剪枝后剪枝
计算效率高(不构建完整树)低(需构建完整树)
模型质量可能欠拟合通常更好
实现难度简单较复杂
推荐度快速原型生产环境

4. CART回归树

CART 回归树使用平方误差最小化准则:

minj,s[minc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2]\min_{j, s} \left[\min_{c_1} \sum_{\mathbf{x}_i \in R_1(j,s)} (y_i - c_1)^2 + \min_{c_2} \sum_{\mathbf{x}_i \in R_2(j,s)} (y_i - c_2)^2\right]

其中 R1R_1R2R_2 为按特征 jj 的分裂点 ss 划分的两个区域。

最优输出为区域内的均值

cm=1RmxiRmyic_m = \frac{1}{|R_m|} \sum_{\mathbf{x}_i \in R_m} y_i

5. 决策树优缺点

5.1 优点

  • 可解释性强:决策逻辑直观可视
  • 无需特征缩放:对量纲不敏感
  • 处理混合类型:数值和别特征
  • 处理缺失值:部分算法内置缺失值处理
  • 训练速度快时间复杂度 O(ndlogn)O(n \cdot d \cdot \log n)

5.2 缺点

  • 过拟合风险高:树太深容易记住噪声
  • 不稳定:数据微小变化可能导致完全不同的树
  • 贪心算法:局部最优不保证全局最优
  • 偏向多值特征:ID3的信息增益偏好
  • XOR问题:线性不可分问题需要很深的树

5.3 改进方向

问题解决方案
过拟合剪枝、随机森林
不稳定Bagging、随机森林
贪心Boosting迭代优化
表达能力有限集成学习