决策树算法全景解析:从 ID3、C4.5 到 CART
1. 为什么决策树依旧值得学?
在深度学习满天飞的今天,决策树(Decision Tree)依旧是工业界面试、风控、医疗诊断场景的常客:
可解释性强——“如果年龄 > 30 且收入 < 10k,则拒绝贷款”一句话就能说清;
对数据分布无假设——不像朴素贝叶斯要求条件独立;
天然支持混合类型特征——数值、类别、缺失值都能吃;
训练快——线性复杂度,单机秒级出模型。
2. 三大经典算法横向对比
算法 | 划分准则 | 偏好 | 缺失值 | 连续值 | 剪枝 |
---|---|---|---|---|---|
ID3 | 信息增益 | 可取值多的属性 | × | × | 无 |
C4.5 | 信息增益率 | 惩罚多取值 | √ | √ | 后剪枝 |
CART | 基尼指数 | 二叉切分 | √ | √ | 前/后剪枝 |
一句话总结
面试问“信息增益缺点”——答“偏向多取值属性,易过拟合”;
问“C4.5 怎么改进”——答“除以自身熵得到信息增益率,加惩罚项”;
问“CART 与 C4.5 区别”——答“二叉切分 + 基尼指数 + 支持回归”。
3. 公式 30 秒速记
熵
Ent(D)=−k=1∑∣Y∣pklog2pk信息增益
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)信息增益率
Gain_ratio(D,a)=IV(a)Gain(D,a),IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣基尼指数
Gini(D)=1−k=1∑∣Y∣pk2
4. 连续值 & 缺失值处理
连续值
C4.5/CART 会枚举候选切分点(通常取相邻两样本均值),选信息增益/基尼最大的那个。缺失值
按非缺失样本计算划分准则;
将缺失样本按概率分到子节点(C4.5 的“权重法”)。
5. 剪枝:预剪枝 VS 后剪枝
策略 | 时机 | 实现方法 | 优缺点 | ||
---|---|---|---|---|---|
预剪枝 | 训练时 | 限制深度、叶子节点数、最小样本数、最小信息增益 | 省时,但可能欠拟合 | ||
后剪枝 | 训练完 | 定义损失函数:$C(T) = \sum_{t∈leaf} N_t \cdot Gini(t) + α | leaf | $ | 更准确,但耗时 |
调参口诀:
数据量大 → 预剪枝(max_depth=10~20);
数据量小 → 后剪枝(调大 α)。
带压缩包示例!!!