🏠 总目录📚 本教程 04 · 决策树:怎么切一刀 ← →
📑 本页目录(点开跳转)

04 / 决策树 · 一次只看一刀

先看懂树怎么问,
再看懂哪一刀更好。

每次提一个问题,把混在一起的样本分成更容易判断的小群。

你先带走这句就够了

切得更纯,
也要能判断新样本。

训练集上每个人都能被单独记住,但这样的规则不一定有用。

  1. 1提出候选问题

    例如“这个值是否小于某个阈值”。

  2. 2比较切前切后

    子节点里,类别是不是更一致了?

  3. 3给树加刹车

    限制深度与叶子样本数,再用验证集检验。

01 / 从结果理解纯度

20 个样本:10 正、10 负

如果一刀切成下面两群,我们就更容易判断每一群了。

左边

9 正 / 1 负

右边

1 正 / 9 负

两边都以一种类别为主。这比两边仍然各有一半正、一半负更有信息。

02 / 纯度怎样变成数字

先认识基尼系数

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

p 是某类在这一群里的占比。基尼越小,类别越集中。

切前:0.50正、负各占 50%

切后:0.18每群里一类占 90%

点击 Gini、求和符号或 p,查看每一部分的解释。

一个小停靠点

可以停在这里

你已经知道树在比较什么:让子节点更一致,同时防止把训练集背下来。

继续看树的图解与三个判据 →
继续探索

完整推导与细节都在下方。一次读一张卡片,随时可以停。

04 · 决策树:怎么切一刀

⏱ 核心 12 分钟 | 判据进阶约 10 分钟 | ⭐ 树不断提问,选让下一群样本更一致的那一问


🎯 一句话

决策树就是一连串“是/否”问题:每次挑一刀,把混在一起的样本分成更容易判断的小群。 先理解“为什么这一刀好”,就能读懂树为什么不需要标准化、为什么容易过拟合,以及为什么后面的 GBDT 都使用 CART。

特征平面第①刀第②刀x₁ < 3.5 ?是 → Ax₂ < 7 ?是 → B否 → A一棵树 = 一串「切一刀」——而且每刀都必须平行于坐标轴⭐ 所以斜的决策边界,树要用很多刀去逼近成阶梯 —— 这就是它的归纳偏置
左边是被切开的特征平面,右边是对应的树 —— 一一对应。⭐ 注意每刀都必须平行于坐标轴:所以斜的决策边界,树只能用很多刀逼近成阶梯。这就是树的归纳偏置。

🌲 一、先看树在做什么

最差周长 ≤ 106?是否最差凹点 ≤ 0.14?恶性良性恶性每经过一个问题,样本就被分进更小的一群
先用一个特征粗分,再用下一个特征细分;一片叶子里的样本越像,最后的预测越有把握。

哪一刀值得切

树会试遍候选特征与切分点,选让子节点更“纯”的那一个。这里的“纯”不必先背公式:切前混在一起,切后每一边大多是同一类,这一刀就好。

不需要标准化
  • 只问大小关系,例如“周长是否小于 106”
  • 厘米换成毫米,问题的顺序不变
和线性模型不同,尺度不影响切分顺序
能处理非线性与交互
  • 问题可以一层套一层
  • 不同分支可问不同特征
if-else 的嵌套,本身就是特征交互
但极易背答案
  • 一直切到每片叶子只剩一个训练样本
  • 训练集全对,新样本却答不好
这就是树最常见的过拟合

四个刹车,先记用途

旋钮 它阻止什么
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 散度 想严格理解熵的来源

✅ 检查点

  1. 决策树每次切分,真正想让什么变好?
  2. 为什么用户 ID 这类高基数特征会诱骗树?
  3. max_depth 与 min_samples_leaf 各在防什么?
  4. 为什么 GBDT/XGBoost 里的树是 CART 回归树?
👀 答案
  1. 让每个子节点里的样本更一致,最终预测更有把握。
  2. 它能把训练样本切成很多极小分支,训练纯度很高,却没有学到可泛化的规律。
  3. 前者限制问题的层数,后者禁止只有极少样本的叶子;两者都在防背答案。
  4. 每棵新树拟合的是连续的修正量,而 CART 可以做回归。

🛑 可以停在这里

⚡ 走神救援

  • 树就是连续问问题;每一刀都想让下一群样本更一致。
  • 它不用标准化、能表达非线性,但很容易一直切到背答案;用深度与叶子样本数刹车。
  • ID3 会偏爱取值多的特征;C4.5 给“切得太碎”加成本;CART 用二叉结构缓解风险并支持回归。
  • 下一页的提升树,正是让许多棵 CART 回归树轮流补错。

下一节 👉 04a-集成学习与GBDT.md

打卡记录保存在你的浏览器里,首页能看到总进度