第4章:决策树 — 西瓜书学习笔记
本文是周志华《机器学习》(西瓜书)第4章 决策树(Decision Trees)的学习笔记,涵盖本章所有核心知识点,配有通俗类比与公式推导。
1基本流程
决策树是一棵用于分类的树形结构:内部节点对应属性测试,分支对应该属性的可能取值,叶子节点给出分类结果。
算法:TreeGenerate(D)
- 生成节点 node
- if D 中样本全属于同一类别 C:
将 node 标记为 C 类叶节点;return - if A = ∅ OR D 中样本在 A 上取值相同:
将 node 标记为 D 中样本数最多的类;return - 从 A 中选最优划分属性 a*
- for a* 的每个取值 a_v:
为 node 生成一个分支;令 D_v 为在 a* 上取值为 a_v 的样本子集
if D_v = ∅:将分支节点标记为 D 中样本数最多的类
else:以 TreeGenerate(D_v, A \ {a*}) 为分支节点
🍉 通俗类比
决策树就像你玩**”是谁杀了小明”**的推理游戏。每个问题(节点)都是一个关于嫌疑人的属性测试:ta是男是女?有没有不在场证明?案发时在不在现场?每答一个问题就排除一批人,最后剩下唯一嫌疑人(叶子节点)。
💡 技巧提示
核心问题:第4步中如何选择”最优划分属性”? —— 这就引出了信息增益、增益率、基尼指数三种度量。
2划分选择
2.1 信息增益(ID3)
信息熵度量样本集合的纯度,熵越小纯度越高:
📐 公式
属性 对 划分的信息增益:
📐 公式
选择最大化 的属性。ID3 算法完全基于信息增益。
⚠️ 注意事项
信息增益的偏好问题:信息增益对可取值数目较多的属性有偏好(如”编号”这个属性,每个样本取值都不同,信息增益最大但不具备泛化能力)。
2.2 增益率(C4.5)
引入**固有值(IV)**来惩罚取值过多的属性:
📐 公式
C4.5 的启发式策略:先从候选属性中找 信息增益高于平均水平 的属性,再从中选增益率最高的。
2.3 基尼指数(CART)
基尼值度量从 中随机抽两个样本属于不同类的概率(越小越纯):
📐 公式
属性 的基尼指数(加权和):
📐 公式
选基尼指数最小的属性。CART 只生成二叉树。
| 算法 | 划分准则 | 树结构 | 能否回归 |
|---|---|---|---|
| ID3 | 信息增益 | 多叉树 | 否 |
| C4.5 | 增益率(启发式) | 多叉树 | 否 |
| CART | 基尼指数 / 平方误差 | 二叉树 | 是 |
3剪枝处理
决策树容易过拟合——树枝太多,把训练集的噪声也学到了。剪枝是对抗过拟合的核心武器。
| 类型 | 时机 | 做法 | 特点 |
|---|---|---|---|
| 预剪枝 | 生成过程中 | 划分前评估划分能否提升验证集精度,不能则停止 | 省时间,但可能欠拟合(贪心,当前不提升不代表孩子不提升) |
| 后剪枝 | 生成完整树后 | 自底向上,若剪掉子树(替换为叶节点)能提升验证集精度,则剪 | 泛化更好,但训练开销大 |
🍉 通俗类比
预剪枝 = 小孩学走路时,父母觉得走两步要摔了就说”别走了”。后剪枝 = 先让他自由走,等都走完了,再回头把那些摔倒的动作裁剪掉。后剪枝保留的可能性更大,泛化也更好。
💡 技巧提示
实际中后剪枝比预剪枝更常用。C4.5 使用 PEP(悲观错误剪枝),CART 使用 CCP(代价复杂度剪枝)。
4连续与缺失值
4.1 连续值处理
基本思路:二分法(bi-partition)。将连续属性 的所有取值排序,取相邻值的中点作为候选划分点:
📐 公式
对每个候选划分点,像离散属性一样计算信息增益,选最好的。注意:连续属性在后代节点中仍可继续使用(不像离散属性被移除)。
4.2 缺失值处理
C4.5 方案(两阶段):
- 划分选择时:按无缺失样本的比例给信息增益加权
- 样本划分时:缺失值样本以权重形式同时进入所有分支,权重为该分支无缺失样本的比例
🍉 通俗类比
连续值二分法就像切西瓜——一刀下去(某个阈值),左边是甜的,右边是淡的。CART 用二叉树天然适配这个思路,所以 CART 处理连续值特别自然。
5多变量决策树
标准决策树的分类边界是**轴平行(axis-parallel)**的——每个划分只用单个属性,导致边界像楼梯一样锯齿状。
多变量决策树(斜决策树):每个非叶节点用一个属性的线性组合 来测试,边界变成一条斜线。表达能力更强,但训练也更复杂。
6本章总结
📝 考试高频考点
- 信息增益 vs 增益率 vs 基尼指数的核心公式与偏好差异
- 为什么信息增益偏好取值多的属性,增益率偏好取值少的属性
- 预剪枝 vs 后剪枝的优劣对比(时间 vs 泛化)
- 连续值二分法的处理流程(排序 + 取中点 + 选最优)
- 缺失值处理的权重方案(每个分支按权重同时进入)
- CART 为什么是二叉树(二分递归分割)
📌 核心定义
一句话总结:决策树 = 最优属性递归划分 + 剪枝防过拟合。可解释性最强、对数据预处理要求最低的模型,同时也是随机森林和 GBDT 等集成方法的基石。