《机器学习》西瓜书习题1.3详细解答 - 假设空间与版本空
西瓜书习题解答 - 假设空间与版本空间
📋 题目
第1章 第3题
给定包含若干橘子样例的橘子数据集,如表1.6所示,请结合教材1.3节对"假设空间"相关概念的介绍,回答以下问题:
- 根据表1.6,计算假设空间的大小
- 根据表1.6,给出相应的版本空间
表1.6 橘子数据集("甜橘"列为标记)
| 编号 | 大小 | 表皮 | 色泽 | 弹性 | 果蒂 | 甜橘 |
|---|---|---|---|---|---|---|
| 1 | 大 | 光滑 | 橙色 | 柔软 | 扁平 | 是 |
| 2 | 大 | 粗糙 | 青绿 | 凸起 | 凸起 | 否 |
| 3 | 大 | 粗糙 | 橙色 | 凸起 | 扁平 | 是 |
| 4 | 小 | 粗糙 | 绿色 | 柔软 | 扁平 | 否 |
| 5 | 大 | 光滑 | 黄色 | 柔软 | 扁平 | 是 |
🎯 题目分析
考察知识点
这道题主要考察以下内容:
- 假设空间(Hypothesis Space)的概念与计算
- 版本空间(Version Space)的定义与构造
- 归纳偏好与假设的一致性
- 机器学习中的概念学习基础
题目意图
这道题通过一个简单的橘子分类问题,让我们理解机器学习中最基础但最重要的两个概念:假设空间和版本空间。假设空间告诉我们"所有可能的假设有多少种",而版本空间告诉我们"哪些假设与训练数据一致"。这是理解机器学习本质的第一步——学习就是在假设空间中搜索与训练数据一致的假设。
📚 必备基础知识
在解题之前,我们需要先理解以下概念:
概念1: 假设(Hypothesis)
定义: 假设是对学习目标的某种猜测或判断,它定义了从输入到输出的映射关系。
通俗理解: 假设就是我们猜测的"判断规则"。比如"如果橘子是大的且光滑,那它就是甜橘"就是一个假设。
表示形式: 在本题中,假设可以表示为属性的合取式,如 [(大小=大) ∧ (表皮=光滑) ∧ (色泽=橙色) → 甜橘]
概念2: 假设空间(Hypothesis Space)
定义: 假设空间是所有可能假设构成的集合,记为 [\mathcal{H}]。
通俗理解: 假设空间就是"所有可能的判断规则的集合"。在开始学习之前,我们需要确定搜索范围有多大。
计算方法: 对于属性合取式表示的假设空间,每个属性可以取:
- 该属性的某个具体值
- 通配符 * (表示任意值)
- 空集 ∅ (表示该假设不存在)
概念3: 版本空间(Version Space)
定义: 版本空间是与训练集一致的所有假设构成的集合,记为 [VS]。
通俗理解: 版本空间是"所有能正确分类训练数据的规则"。它是假设空间的一个子集,包含了所有"看起来正确"的假设。
数学表达: [VS = {h \in \mathcal{H} | h与所有训练样本一致}]
💡 解题思路
解决这道题的整体思路是:
- 第一步: 统计每个属性的可能取值数量
- 第二步: 根据假设表示方法计算假设空间大小
- 第三步: 分析训练数据,找出正例和反例的特征
- 第四步: 枚举并筛选与训练数据一致的假设,构造版本空间
📝 详细解答
问题1: 计算假设空间的大小
步骤一: 统计属性及其取值
要做什么:
首先需要统计数据集中有哪些属性,每个属性有多少种可能的取值。
具体过程:
从表1.6中可以看出,共有5个属性:
- 大小: {大, 小} → 2种取值
- 表皮: {光滑, 粗糙} → 2种取值
- 色泽: {橙色, 青绿, 绿色, 黄色} → 4种取值
- 弹性: {柔软, 凸起} → 2种取值
- 果蒂: {扁平, 凸起} → 2种取值
为什么这样做:
假设空间的大小取决于每个属性的可能取值数量,这是计算的基础。
步骤二: 计算假设空间大小
要做什么:
根据假设的表示方法,计算所有可能的假设数量。
具体过程:
在属性合取式表示中,每个属性可以取:
- 该属性的某个具体值(如"大小=大")
- 通配符 * (表示该属性可以是任意值,即不考虑该属性)
- 注意:还需要考虑"空假设" ∅(表示不存在满足条件的样本)
因此,每个属性的选择数为:
- 大小: 2 + 1 = 3 种选择(大、小、*)
- 表皮: 2 + 1 = 3 种选择(光滑、粗糙、*)
- 色泽: 4 + 1 = 5 种选择(橙色、青绿、绿色、黄色、*)
- 弹性: 2 + 1 = 3 种选择(柔软、凸起、*)
- 果蒂: 2 + 1 = 3 种选择(扁平、凸起、*)
所有可能的属性组合数为:
[3 × 3 × 5 × 3 × 3 = 405]
再加上1个空假设 ∅,总的假设空间大小为:
[|H| = 3 × 3 × 5 × 3 × 3 + 1 = 405 + 1 = 406]
为什么这样做:
这是基于乘法原理的组合计数。每个属性的选择是独立的,所以总数是各属性选择数的乘积。空假设是特殊情况,需要单独加上。
问题2: 给出相应的版本空间
步骤一: 分析训练样本
要做什么:
将训练样本分为正例和反例,分析它们的特征。
具体过程:
正例(甜橘):
- 样本1: (大, 光滑, 橙色, 柔软, 扁平) → 是
- 样本3: (大, 粗糙, 橙色, 凸起, 扁平) → 是
- 样本5: (大, 光滑, 黄色, 柔软, 扁平) → 是
反例(非甜橘):
- 样本2: (大, 粗糙, 青绿, 凸起, 凸起) → 否
- 样本4: (小, 粗糙, 绿色, 柔软, 扁平) → 否
为什么这样做:
版本空间中的假设必须能正确分类所有正例和反例,所以需要先明确训练数据的分布。
步骤二: 寻找正例的共同特征
要做什么:
找出所有正例共有的属性特征,这些是候选假设的基础。
具体过程:
观察三个正例:
- 大小: 都是"大" ✓
- 表皮: 有光滑也有粗糙 ✗
- 色泽: 有橙色也有黄色 ✗
- 弹性: 有柔软也有凸起 ✗
- 果蒂: 都是"扁平" ✓
正例的必要条件(最特殊的一般泛化):
[(大小=大) ∧ (果蒂=扁平)]
为什么这样做:
版本空间中的假设必须覆盖所有正例,所以正例的共同特征是构造假设的关键。
步骤三: 验证并排除反例
要做什么:
检验候选假设是否会错误地将反例分类为正例。
具体过程:
检验假设 [(大小=大) ∧ (果蒂=扁平)]:
- 样本2: (大, 粗糙, 青绿, 凸起, 凸起) → 果蒂≠扁平,不满足假设 ✓
- 样本4: (小, 粗糙, 绿色, 柔软, 扁平) → 大小≠大,不满足假设 ✓
该假设正确排除了所有反例!
为什么这样做:
一个好的假设不仅要覆盖所有正例,还要排除所有反例。这是分类器的基本要求。
步骤四: 枚举版本空间
要做什么:
列举所有与训练数据一致的假设。
具体过程:
版本空间包含以下假设(使用简化表示,*表示任意值):
最特殊假设(最具体):
- [(大, *, *, *, 扁平)] - 只要求大小=大,果蒂=扁平
更特殊的假设(添加更多限制):
2. [(大, 光滑, *, *, 扁平)]
3. [(大, *, 橙色, *, 扁平)]
4. [(大, *, 黄色, *, 扁平)]
5. [(大, *, *, 柔软, 扁平)]
6. [(大, 光滑, 橙色, *, 扁平)]
7. [(大, 光滑, 黄色, *, 扁平)]
8. [(大, 光滑, *, 柔软, 扁平)]
9. [(大, *, 橙色, 柔软, 扁平)]
10. [(大, 光滑, 橙色, 柔软, 扁平)] - 样本1的精确描述
以及其他不与反例冲突的组合…
关键约束:
- 必须包含"大小=大"(否则会接受样本4)
- 必须包含"果蒂=扁平"(否则会接受样本2)
- 不能包含"色泽=青绿"或"色泽=绿色"(这些只出现在反例中)
- 不能同时包含"表皮=粗糙"和"弹性=凸起"(会接受样本2)
为什么这样做:
版本空间是一个集合,包含所有可能的一致假设。从最一般到最特殊的假设都要考虑。
✅ 最终答案
问题1答案:
假设空间的大小为 406
计算过程:
- 每个属性的选择数: 大小(3) × 表皮(3) × 色泽(5) × 弹性(3) × 果蒂(3) = 405
- 加上空假设: 405 + 1 = 406
问题2答案:
版本空间的核心假设:
最一般的边界(G):
[(大小=大) ∧ (果蒂=扁平)]
最特殊的边界(S):
可以是任何包含上述约束且不与训练数据冲突的更具体假设,例如:
- [(大, 光滑, 橙色, 柔软, 扁平)]
- [(大, 粗糙, 橙色, 凸起, 扁平)]
- [(大, 光滑, 黄色, 柔软, 扁平)]
版本空间特征:
- 所有假设都必须包含"大小=大"和"果蒂=扁平"这两个约束
- 其他属性可以是具体值或通配符*
- 不能包含会接受反例的属性组合
🔍 深入理解
直观解释
想象你是一个水果商,要学习如何识别甜橘子。假设空间就是"所有可能的判断标准",有406种。但通过观察5个橘子样本后,你发现只有满足"个头大且果蒂扁平"的橘子才是甜的,这就缩小到了版本空间——那些与你的观察一致的判断标准。
关键洞察
-
假设空间 vs 版本空间: 假设空间是"所有可能性",版本空间是"与数据一致的可能性"。学习的过程就是从假设空间缩小到版本空间。
-
归纳偏好的体现: 不同的学习算法会在版本空间中选择不同的假设。有的偏好简单假设(如只用2个属性),有的偏好复杂假设(用所有5个属性)。
-
数据的价值: 只用5个样本,我们就把406种可能性缩小到了几十种。这展示了数据如何指导学习。
与其他知识点的联系
- 归纳偏好(第1.4节): 版本空间中有多个假设时,如何选择体现了学习算法的归纳偏好
- 奥卡姆剃刀: 倾向于选择版本空间中最简单的假设,如 [(大, *, *, *, 扁平)]
- 决策树(第4章): 决策树学习本质上是在假设空间中搜索的过程
- 过拟合(第2章): 选择过于特殊的假设(如完全记住训练样本)会导致过拟合
💎 关键要点总结
通过这道题,我们学到了:
-
核心概念: 假设空间是所有可能假设的集合,版本空间是与训练数据一致的假设集合。假设空间大小可以通过组合计数得到。
-
解题技巧:
- 计算假设空间:统计每个属性的取值数+1(通配符),相乘后+1(空假设)
- 构造版本空间:找正例共同特征,验证能否排除反例
-
常见陷阱:
- 忘记加通配符*的选择
- 忘记加空假设∅
- 版本空间不是唯一的假设,而是一个假设集合
-
拓展思考:
- 如果训练样本更多,版本空间会如何变化?
- 如何从版本空间中选择"最好"的假设?
- 版本空间为空意味着什么?(训练数据有噪声或假设空间设计不当)
🤔 自我检验
做完这道题后,问问自己:
- ✓ 我能用自己的话解释假设空间和版本空间的区别吗?
- ✓ 我理解为什么要给每个属性加1(通配符)吗?
- ✓ 我能独立找出正例的共同特征吗?
- ✓ 我能解释为什么版本空间是假设空间的子集吗?
- ✓ 如果给我一个新的数据集,我能重复这个过程吗?
📌 相关习题推荐
如果想进一步巩固,可以尝试:
- 第1章 习题1.1-1.2 - 理解西瓜数据集的基本结构,为本题打基础
- 第1章 习题1.4 - 探讨归纳偏好,理解如何从版本空间中选择假设
- 第4章 决策树相关习题 - 看看决策树如何在假设空间中搜索
- 第2章 过拟合相关内容 - 理解假设复杂度与泛化能力的权衡
💬 学习建议
-
动手实践: 尝试用Python实现一个简单的候选消除算法,自动计算版本空间
-
可视化理解: 画出假设空间的层次结构图,从最一般(全是*)到最特殊(全是具体值)
-
对比学习: 将本题与西瓜数据集(表1.1)对比,看看不同数据集如何影响假设空间和版本空间
-
深入阅读: 重点阅读教材1.3节,理解Mitchell的候选消除算法(Candidate Elimination)
-
思考局限: 这种基于属性合取式的假设表示有什么局限?现实中的假设空间可能是什么样的?
📖 参考资料:
- 周志华《机器学习》第1章 1.3节 假设空间
- Mitchell《机器学习》第2章 概念学习与一般到特殊序
更多推荐
所有评论(0)