📑 本页目录(点开跳转)
04 / 决策树 · 一次只看一刀
先看懂树怎么问,
再看懂哪一刀更好。
每次提一个问题,把混在一起的样本分成更容易判断的小群。
你先带走这句就够了
切得更纯,
也要能判断新样本。
训练集上每个人都能被单独记住,但这样的规则不一定有用。
- 1提出候选问题
例如“这个值是否小于某个阈值”。
- 2比较切前切后
子节点里,类别是不是更一致了?
- 3给树加刹车
限制深度与叶子样本数,再用验证集检验。
01 / 从结果理解纯度
20 个样本:10 正、10 负
如果一刀切成下面两群,我们就更容易判断每一群了。
9 正 / 1 负
1 正 / 9 负
两边都以一种类别为主。这比两边仍然各有一半正、一半负更有信息。
02 / 纯度怎样变成数字
先认识基尼系数
p 是某类在这一群里的占比。基尼越小,类别越集中。
切前:0.50正、负各占 50%
切后:0.18每群里一类占 90%
点击 Gini、求和符号或 p,查看每一部分的解释。
一个小停靠点
可以停在这里
你已经知道树在比较什么:让子节点更一致,同时防止把训练集背下来。
继续看树的图解与三个判据 →完整推导与细节都在下方。一次读一张卡片,随时可以停。
04 · 决策树:怎么切一刀
⏱ 核心 12 分钟 | 判据进阶约 10 分钟 | ⭐ 树不断提问,选让下一群样本更一致的那一问
🎯 一句话
决策树就是一连串“是/否”问题:每次挑一刀,把混在一起的样本分成更容易判断的小群。 先理解“为什么这一刀好”,就能读懂树为什么不需要标准化、为什么容易过拟合,以及为什么后面的 GBDT 都使用 CART。
🌲 一、先看树在做什么
哪一刀值得切
树会试遍候选特征与切分点,选让子节点更“纯”的那一个。这里的“纯”不必先背公式:切前混在一起,切后每一边大多是同一类,这一刀就好。
- 只问大小关系,例如“周长是否小于 106”
- 厘米换成毫米,问题的顺序不变
- 问题可以一层套一层
- 不同分支可问不同特征
- 一直切到每片叶子只剩一个训练样本
- 训练集全对,新样本却答不好
四个刹车,先记用途
| 旋钮 | 它阻止什么 |
|---|---|
max_depth |
问题问得太深、规则过细 |
min_samples_leaf |
叶子只剩极少样本 |
min_samples_split |
很小的一群还继续被切开 |
max_leaf_nodes |
整棵树长出过多叶子 |
🔑 最常先调的是
max_depth。它们共同的目标不是“让树变弱”,而是让规则有机会在新样本上也成立。🛑 可以停在这里。 你已经理解一棵树如何工作、为什么它强、以及为什么它需要刹车。 想立刻进入集成学习,去 04a · 集成学习与 GBDT;想知道“纯度”判据的历史与高基数陷阱,再继续。
🪓 二、进阶:为什么判据从 ID3 走到 CART
三代判据都在奖励“切完更一致”,但都要防止模型把训练样本切得太碎。
ID3:奖励不确定性的下降
$$\text{Gain}(D,a)=H(D)-\sum_v \frac{|D^v|}{|D|}H(D^v)$$
坑在于取值太多的特征。 20 个样本、10 正 10 负时,真正有用的二值特征切完后的信息增益可为 0.531;“每人一个值”的用户 ID 能把每个样本单独分开,拿到 1.000,却是在背答案。
C4.5:给“切得太碎”加成本
$$\text{GainRatio}(D,a)=\frac{\text{Gain}(D,a)}{IV(a)}$$
这里 $IV$ 只衡量样本被分到多少分支、分得有多均匀;它和标签无关。用户 ID 的分母更大,所以增益率会降下来。
带走:分子奖励“分得准”,分母惩罚“分得碎”。它不是完美规则,也会偏爱取值很少的特征。
CART:今天真正会遇到的版本
$$\text{Gini}(D)=1-\sum_{k=1}^{K}p_k^2$$
CART 只长二叉树,也能做回归,所以提升树家族用的是 CART 回归树。基尼和熵都是混杂度指标;实践中常得到相近的切分,默认使用基尼即可。不要把“基尼是熵的一阶近似”当成必须记住的结论。
⚠️ 二叉树只能缓解高基数偏好,不能消灭它:取值多的特征仍有更多候选切分点。实际还要用每叶最少样本、剪枝与验证集来防过拟合。
🔍 三代算法的完整对照(需要时再打开)
| ID3 | C4.5 | CART | |
|---|---|---|---|
| 判据 | 信息增益 | 增益率 | 基尼(分类)/回归误差 |
| 树形 | 多叉 | 多叉 | 二叉 |
| 连续特征 | 原始版本不支持 | 支持 | 支持 |
| 回归 | 不支持 | 不支持 | 支持 |
🔗 接下来去哪
| 去哪 | 为何现在去 |
|---|---|
| ⭐ 04a · 集成学习与 GBDT | 单棵树不稳定;下一步看很多棵树怎样互相补错 |
| 05 · 评估与过拟合 | 想判断“背答案”有没有真的发生 |
| 16 · 特征工程基础 | 想处理高基数类别特征与目标编码 |
| 机器学习的数学原理 01b · KL 散度 | 想严格理解熵的来源 |
✅ 检查点
- 决策树每次切分,真正想让什么变好?
- 为什么用户 ID 这类高基数特征会诱骗树?
max_depth与min_samples_leaf各在防什么?- 为什么 GBDT/XGBoost 里的树是 CART 回归树?
👀 答案
- 让每个子节点里的样本更一致,最终预测更有把握。
- 它能把训练样本切成很多极小分支,训练纯度很高,却没有学到可泛化的规律。
- 前者限制问题的层数,后者禁止只有极少样本的叶子;两者都在防背答案。
- 每棵新树拟合的是连续的修正量,而 CART 可以做回归。
🛑 可以停在这里
⚡ 走神救援
- 树就是连续问问题;每一刀都想让下一群样本更一致。
- 它不用标准化、能表达非线性,但很容易一直切到背答案;用深度与叶子样本数刹车。
- ID3 会偏爱取值多的特征;C4.5 给“切得太碎”加成本;CART 用二叉结构缓解风险并支持回归。
- 下一页的提升树,正是让许多棵 CART 回归树轮流补错。
下一节 👉 04a-集成学习与GBDT.md