假设空间与版本空间 ------ 机器学习是 "猜规律" 的过程
快速导读
- 难度:入门
- 位置:第 3 篇
- 建议先读:第 2 篇《机器学习基本术语大拆解 ------ 用西瓜数据集逐个对应》
- 读完可接:第 4 篇《归纳偏好 ------ 机器学习的 "择偶标准"》
读法建议:先把这篇当成上一节的延伸来看,遇到公式不顺时回头翻《机器学习基本术语大拆解 ------ 用西瓜数据集逐个对应》对应小节;读完直接接《归纳偏好 ------ 机器学习的 "择偶标准"》,会更连贯。

文章目录
- [假设空间与版本空间 ------ 机器学习是 "猜规律" 的过程](#假设空间与版本空间 —— 机器学习是 “猜规律” 的过程)
-
- 快速导读
- [一、先理解 "假设"------ 模型猜的 "规律" 是什么?](#一、先理解 “假设”—— 模型猜的 “规律” 是什么?)
- [二、假设空间 ------ 所有可能的 "规律集合"](#二、假设空间 —— 所有可能的 “规律集合”)
-
- [1. 定义:所有假设的总称](#1. 定义:所有假设的总称)
- [2. 西瓜假设空间的计算 ------ 到底有多少种可能?](#2. 西瓜假设空间的计算 —— 到底有多少种可能?)
- [3. 假设空间的直观表示(西瓜示例)](#3. 假设空间的直观表示(西瓜示例))
- [三、版本空间 ------ 筛选后 "靠谱的规律集合"](#三、版本空间 —— 筛选后 “靠谱的规律集合”)
-
- [1. 定义:符合训练数据的假设集合](#1. 定义:符合训练数据的假设集合)
- [2. 用西瓜训练集筛选版本空间(实战演示)](#2. 用西瓜训练集筛选版本空间(实战演示))
-
- [筛选步骤 1:排除与正例矛盾的假设](#筛选步骤 1:排除与正例矛盾的假设)
- [筛选步骤 2:排除与反例矛盾的假设](#筛选步骤 2:排除与反例矛盾的假设)
- 最终版本空间(留下的靠谱假设)
- 四、关键疑问:为什么版本空间不是唯一的?
- [五、易混点对比:假设空间 vs 版本空间](#五、易混点对比:假设空间 vs 版本空间)
- 六、小练习:自己动手筛选版本空间
- [七、小结:学习的本质是 "筛选假设"](#七、小结:学习的本质是 “筛选假设”)
一、先理解 "假设"------ 模型猜的 "规律" 是什么?
在机器学习里,"假设" 就是模型对 "属性→标记" 关系的猜测。比如:
- 假设 1:色泽 = 青绿 ∧ 根蒂 = 蜷缩 ∧ 敲声 = 浊响 → 好瓜;
- 假设 2:色泽 =* ∧ 根蒂 = 蜷缩 ∧ 敲声 = 浊响 → 好瓜;(* 表示 "任意取值",意思是不管色泽是什么,只要根蒂蜷缩、敲声浊响就是好瓜)
- 假设 3:好瓜不存在;(极端情况,所有西瓜都是坏瓜)
这些都是模型可能提出的 "假设"------ 每一个假设,都是一条候选规律。而模型的任务,就是从这些假设中找到 "最靠谱" 的那一个(或多个)。
二、假设空间 ------ 所有可能的 "规律集合"
1. 定义:所有假设的总称
"假设空间" 就是所有可能的 "属性→标记" 关系的集合 ------ 相当于模型的 "脑洞大全",包含了它能想到的所有规律。
比如我们用西瓜的 3 个离散属性(色泽、根蒂、敲声)来判断是否为好瓜,每个属性的可能取值如下:
- 色泽:青绿、乌黑、浅白、*(任意);
- 根蒂:蜷缩、硬挺、*(任意);
- 敲声:浊响、清脆、*(任意);
- 额外假设:没有好瓜(用∅表示)。
2. 西瓜假设空间的计算 ------ 到底有多少种可能?
我们可以用 "组合计算" 算出假设空间的大小:
- 色泽有 4 种选择(3 个具体值 +*);
- 根蒂有 3 种选择(2 个具体值 +*);
- 敲声有 3 种选择(2 个具体值 +*);
- 再加上 "没有好瓜" 的极端假设;
总假设数 = 4×3×3 + 1 = 37 种。
也就是说,模型在学习前,脑子里已经有了 37 种 "挑瓜规律" 的候选 ------ 它的学习过程,就是从这 37 种假设中,删掉不符合训练数据的,留下符合的。
3. 假设空间的直观表示(西瓜示例)
我们可以用 "树形结构" 直观看到假设空间的一部分:
plaintext
plaintext
(根节点:好瓜?)
├─ 色泽=青绿
│ ├─ 根蒂=蜷缩
│ │ ├─ 敲声=浊响 → 好瓜(假设1)
│ │ ├─ 敲声=清脆 → 好瓜(假设2)
│ │ └─ 敲声=* → 好瓜(假设3:色泽青绿+根蒂蜷缩,敲声任意)
│ ├─ 根蒂=硬挺
│ │ ├─ 敲声=浊响 → 好瓜(假设4)
│ │ └─ 敲声=* → 好瓜(假设5)
│ └─ 根蒂=*
│ ├─ 敲声=浊响 → 好瓜(假设6:色泽青绿,根蒂任意+敲声浊响)
│ └─ 敲声=* → 好瓜(假设7:色泽青绿,根蒂和敲声任意)
├─ 色泽=乌黑(结构同上,共7种假设)
├─ 色泽=浅白(结构同上,共7种假设)
├─ 色泽=*
│ ├─ 根蒂=蜷缩(结构同上,共3种假设)
│ ├─ 根蒂=硬挺(结构同上,共2种假设)
│ └─ 根蒂=*(结构同上,共1种假设)
└─ 好瓜不存在(假设37)
这棵树的每一个 "叶子节点",就是一个假设 ------37 个叶子节点,对应 37 种可能的规律。
三、版本空间 ------ 筛选后 "靠谱的规律集合"
1. 定义:符合训练数据的假设集合
模型不会一直抱着 37 种假设不放,它会用训练数据 "验证" 每个假设:符合所有训练样本的假设留下,不符合的删掉。最后剩下的假设集合,就是 "版本空间"。
简单说:假设空间 = 所有可能的规律,版本空间 = 经过数据验证的靠谱规律。
2. 用西瓜训练集筛选版本空间(实战演示)
我们用一组简化的西瓜训练集(3 个正例 + 2 个反例)来演示筛选过程:
| 样本编号 | 色泽 | 根蒂 | 敲声 | 好瓜(标记) |
|---|---|---|---|---|
| 1 | 青绿 | 蜷缩 | 浊响 | 是(正例) |
| 2 | 乌黑 | 蜷缩 | 浊响 | 是(正例) |
| 3 | 青绿 | 蜷缩 | 清脆 | 是(正例) |
| 4 | 浅白 | 硬挺 | 清脆 | 否(反例) |
| 5 | 乌黑 | 硬挺 | 浊响 | 否(反例) |
筛选步骤 1:排除与正例矛盾的假设
正例要求 "假设必须能让样本被判定为好瓜"。比如:
- 假设 "色泽 = 青绿 ∧ 根蒂 = 蜷缩 ∧ 敲声 = 浊响 → 好瓜":符合样本 1,保留;
- 假设 "色泽 = 青绿 ∧ 根蒂 = 硬挺 ∧ 敲声 = 浊响 → 好瓜":样本 1 的根蒂是蜷缩,这个假设无法覆盖样本 1(会把样本 1 判定为坏瓜),删掉;
- 假设 "色泽 = 浅白 ∧ 根蒂 = 蜷缩 ∧ 敲声 = 浊响 → 好瓜":样本 1 的色泽是青绿,无法覆盖样本 1,删掉;
筛选步骤 2:排除与反例矛盾的假设
反例要求 "假设必须能让样本被判定为坏瓜"。比如:
- 假设 "色泽 =* ∧ 根蒂 = 蜷缩 ∧ 敲声 =* → 好瓜":样本 4 的根蒂是硬挺,这个假设不会把它判定为好瓜(符合反例 4);样本 5 的根蒂是硬挺,也符合反例 5,保留;
- 假设 "色泽 =* ∧ 根蒂 =* ∧ 敲声 = 浊响 → 好瓜":样本 5 的敲声是浊响、根蒂是硬挺,这个假设会把样本 5 判定为好瓜(与反例 5 矛盾),删掉;
最终版本空间(留下的靠谱假设)
经过筛选,剩下 3 个核心假设:
- 假设 A:色泽 =* ∧ 根蒂 = 蜷缩 ∧ 敲声 =* → 好瓜;(不管色泽和敲声,只要根蒂蜷缩就是好瓜)
- 假设 B:色泽 =* ∧ 根蒂 = 蜷缩 ∧ 敲声 = 浊响 ∨ 清脆 → 好瓜;(根蒂蜷缩 + 敲声是浊响或清脆)
- 假设 C:色泽 = 青绿∨乌黑 ∧ 根蒂 = 蜷缩 ∧ 敲声 =* → 好瓜;(根蒂蜷缩 + 色泽是青绿或乌黑)
这 3 个假设都能完美符合训练集的所有样本 ------ 模型的学习结果,就是这 3 个假设组成的版本空间。
四、关键疑问:为什么版本空间不是唯一的?
你可能会问:为什么不是只留下一个 "最优假设"?因为有限的训练数据无法唯一确定规律。
比如上面的版本空间中,假设 A(根蒂蜷缩即好瓜)和假设 C(根蒂蜷缩 + 青绿 / 乌黑即好瓜)都符合训练数据,但它们对新样本的判断可能不同:
- 新样本:色泽 = 浅白、根蒂 = 蜷缩、敲声 = 浊响;
- 假设 A 判定为 "好瓜",假设 C 判定为 "坏瓜";
这就是机器学习的核心矛盾之一 ------ 有限数据无法确定唯一规律,后续的 "归纳偏好" 就是用来解决这个矛盾的(下一篇详细讲)。
五、易混点对比:假设空间 vs 版本空间
| 对比维度 | 假设空间 | 版本空间 |
|---|---|---|
| 核心含义 | 所有可能的规律集合 | 符合训练数据的规律集合 |
| 大小关系 | 范围大(37 种假设) | 范围小(筛选后剩余) |
| 形成过程 | 先天存在(模型预设) | 后天筛选(数据验证) |
| 作用 | 提供 "猜规律" 的候选池 | 提供 "靠谱规律" 的候选池 |
六、小练习:自己动手筛选版本空间
给你一组新的西瓜训练集,试着筛选出版本空间(仅用 "色泽、根蒂" 两个属性):
| 样本编号 | 色泽 | 根蒂 | 好瓜 |
|---|---|---|---|
| 1 | 青绿 | 蜷缩 | 是 |
| 2 | 乌黑 | 稍蜷 | 是 |
| 3 | 浅白 | 蜷缩 | 否 |
| 4 | 青绿 | 硬挺 | 否 |
提示:
- 先列出假设空间(色泽:青绿 / 乌黑 / 浅白 /;根蒂:蜷缩 / 稍蜷 / 硬挺 /;+ 无好瓜假设);
- 排除与正例矛盾的假设(比如 "色泽 = 青绿 ∧ 根蒂 = 硬挺 → 好瓜" 无法覆盖样本 1);
- 排除与反例矛盾的假设(比如 "色泽 =* ∧ 根蒂 = 蜷缩 → 好瓜" 会把样本 3 判定为好瓜,与反例矛盾);
- 最后剩下的就是版本空间。
七、小结:学习的本质是 "筛选假设"
机器学习的学习过程,本质就是 "从假设空间中筛选版本空间":
- 模型先预设所有可能的规律(假设空间);
- 用训练数据验证每个假设,删掉矛盾的;
- 剩下的版本空间,就是模型认为 "靠谱的规律集合";
- 后续需要通过 "归纳偏好" 从版本空间中选择最终要使用的规律。
搞懂假设空间和版本空间,你就理解了机器学习的核心逻辑 ------ 它不是 "凭空创造规律",而是 "从所有可能中筛选靠谱的"。这就像我们挑瓜时,先有各种挑瓜思路(假设空间),再通过买瓜经验淘汰不靠谱的(筛选出版本空间),最后固定一种最信任的思路(归纳偏好)。
下一篇,我们就来聊 "归纳偏好"------ 模型是如何从版本空间的多个假设中,选择 "它认为最优" 的那一个规律的。
如果在练习中遇到筛选困难,或者想分享你的版本空间结果,欢迎在评论区留言讨论~