
🧠 一、机器是怎样从例子中学习的
机器学习常写成:
y = f(x)
其中,x 是机器看到的东西,y 是希望机器给出的答案,f 是机器学到的判断方法。
例如:
-
x:西瓜的颜色、根蒂和敲击声音。
-
y:它是不是好瓜。
-
f:根据这些特征判断好瓜的规则。
🔄 1. 归纳与演绎

假设我们看到三只会飞的鸟,然后猜测"鸟通常会飞",这就是归纳。它从几个具体例子出发,总结出一般规律。
如果我们已经知道"鸟通常会飞",又知道"小蓝是一只鸟",于是推测"小蓝可能会飞",这就是演绎。它从一般规律出发,判断具体情况。
从训练样本中学习规律,本质上是归纳,所以机器学习也叫"归纳学习"。
| 知识点 | 简单解释 | 方向 |
|---|---|---|
| 归纳 | 看过一些例子后总结规律 | 特殊到一般 |
| 泛化 | 把学到的规律用于没见过的新例子 | 已知样本到新样本 |
| 演绎 | 用已有规律判断一个具体对象 | 一般到特殊 |
| 特化 | 把宽泛规则变得更具体 | 一般到特殊 |
| 归纳学习 | 机器从训练样本中总结规则 | 样本到模型 |
🧩 二、假设空间:机器可以选择的所有规则

假设我们认为,好瓜完全由三个特征决定:
-
色泽
-
根蒂
-
敲声
一条规则可以写成:
(色泽 = ?) AND (根蒂 = ?) AND (敲声 = ?) ↔ 好瓜
问号表示这里可以填写一个具体取值,也可以填写通配符"*"。通配符表示"不关心这个特征"。
例如:
(色泽 = 青绿) AND (根蒂 = *) AND (敲声 = 浊响)
它表示:只要西瓜是青绿色并且敲起来浊响,就把它看成好瓜,不管根蒂是什么样。
机器能够考虑的全部规则,合起来叫作"假设空间"。
如果三个特征分别有 n₁、n₂、n₃ 种候选写法,那么假设数量可以写成:
假设数量 = n₁ × n₂ × n₃ + 1
例如:
4 × 3 × 3 + 1 = 37
通用的计算方法就是:
数出每个特征有几种真实取值。
给每个特征的取值数都加1(这个1就是"*",代表"无所谓")。
把所有这些"加1后"的数字乘起来。
最后再 +1(代表"一个都不是"的空假设)。
这里的候选数需要把通配符计算在内。最后的"+1"表示"没有任何西瓜是好瓜"的空假设。
具体数量会随着每个特征允许的取值数量变化。
只记住训练集中的几个西瓜并不是真正的学习,因为机器还要判断从未出现过的新西瓜。

|-------------|-------------------|
| 知识点 | 含义 |
| 假设 | 一条可能的判断规则 |
| 假设空间 | 所有候选规则组成的集合 |
| 通配符"*" | 不限制这个特征 |
| 空假设 | 认为没有任何样本属于目标类别 |
| 概念学习 | 从样本中寻找能够描述目标概念的规则 |
| 记忆训练集 | 只会回答见过的样本,无法真正泛化 |
🔍 三、搜索假设与版本空间
假设空间可能很大,机器需要在其中搜索。
一种办法是从最宽松的规则开始,不断增加条件,这叫"从一般到特殊"或"自顶向下"。
另一种办法是从非常具体的规则开始,逐渐放宽条件,这叫"从特殊到一般"或"自底向上"。
搜索时可以不断删除错误规则:
-
遇到一个正例,就删除那些把它判断成反例的假设。
-
遇到一个反例,就删除那些把它判断成正例的假设。
最后留下的规则都能正确解释训练集。但是,有限的训练集通常无法只留下唯一规则。
所有与训练集一致的假设组成的集合,叫作"版本空间"。
如果两个假设都能正确判断训练集,却对一个新西瓜给出不同答案,机器就必须在它们之间进行选择。
|--------------|-------------------------|
| 知识点 | 简单解释 |
| 自顶向下 | 从宽松规则开始,逐渐增加限制 |
| 自底向上 | 从具体规则开始,逐渐放宽限制 |
| 与训练集一致 | 能正确判断训练集中的全部样本 |
| 版本空间 | 所有与训练集一致的假设 |
| 版本空间产生原因 | 样本有限,但可能的规律很多 |
| 核心问题 | 多条规则都能解释旧样本,却可能对新样本意见不同 |
✂️ 四、归纳偏好:机器更愿意相信哪条规则

当版本空间里有多条可用规则时,机器必须偏向其中一些规则。这种偏向叫作"归纳偏好"。
任何能给出确定结果的机器学习算法都必须有归纳偏好。否则,两条规则在训练集上表现完全相同,机器就不知道该选择谁。
一种常见原则是"奥卡姆剃刀":
如果多条规则都能解释观察结果,优先选择最简单的那条。
例如,两条曲线都经过全部训练点,一条非常平滑,另一条弯来弯去。通常会认为平滑曲线更简单。

不过,"简单"不一定永远正确。归纳偏好是否适合当前问题,常常直接决定模型能否取得好成绩。
|--------------|---------------------|
| 知识点 | 含义 |
| 归纳偏好 | 算法对某类假设的偏爱 |
| 为什么必须有偏好 | 多个假设可能在训练集上同样正确 |
| 奥卡姆剃刀 | 多个解释都成立时,优先选择简单解释 |
| 平滑偏好 | 在某些问题中,更平滑的曲线被看作更简单 |
| 决定性能的关键 | 偏好必须与真实任务相匹配 |
🍱 五、没有免费午餐定理:不存在永远最好的算法

假设算法 A 和算法 B 都穿过了所有黑色训练点。
后来加入一些白色测试点:
-
在一种分布中,A 穿过全部黑点和白点,A 更好。
-
换一种分布后,B 穿过全部黑点和白点,B 更好。
这说明:一个算法在某些问题上优于另一个算法,就会存在另外一些问题,使结果反过来。
这就是"没有免费午餐定理",简称 NFL。
它有一个重要前提:
所有可能问题出现的机会相同,或者所有问题同等重要。
现实中,我们通常只关心某一类具体任务,所以仍然可以针对任务选择更合适的算法。

例如,从 A 地到 B 地最快的交通方式是什么?
-
北京到重庆:飞机可能最快。
-
县城到市区:汽车可能更合适。
-
村东头到村西头:自行车可能最快。
算法就像交通工具。脱离距离、道路和任务要求,直接争论"哪个永远最好"没有意义。

|------------|-------------------|
| 知识点 | 含义 |
| NFL 定理 | 没有一个算法能在所有问题上永远最好 |
| 重要前提 | 所有问题等可能或同等重要 |
| 实际启示 | 先明确任务,再选择算法 |
| 算法是否优秀 | 取决于算法与问题的契合程度 |
| 工程思维 | 不空谈最好,而要分析具体数据和需求 |
🎯 六、错误率、精度与两种误差

假设模型判断了100个西瓜,其中20个判断错误。
错误率是:
错误率 = 20 ÷ 100 = 20%
精度,也就是准确率,是:
精度 = 1 - 20% = 80%
"误差"是模型预测结果与真实答案之间的差异。
误差还分成两类:
-
训练误差,也叫经验误差:模型在训练集上的误差。
-
泛化误差:模型面对新样本时的误差。
训练误差可以直接计算,因为训练样本就在手里。
真正的泛化误差通常无法直接计算,因为未来可能出现的新样本数量巨大,而且我们不知道它们是什么样。
我们真正希望降低的是泛化误差,而不只是训练误差。
|------------|--------------|----------|
| 知识点 | 含义 | 是否容易得到 |
| 错误率 | 错误样本数除以样本总数 | 容易 |
| 精度 | 正确样本数除以样本总数 | 容易 |
| 精度与错误率 | 精度 = 1 - 错误率 | 容易 |
| 训练误差 | 模型在训练集上的误差 | 可以直接计算 |
| 泛化误差 | 模型在新样本上的误差 | 通常无法直接得到 |
| 学习目标 | 让泛化误差尽可能小 | 需要估计 |
📚 七、过拟合与欠拟合

📝 1. 过拟合:把练习题背得太细
训练集中出现的树叶都有锯齿。模型于是学到:
只有带锯齿的才是树叶。
当它看到一片没有锯齿的真实树叶时,就会判断错误。
模型把训练样本偶然具有的特点,当成了所有样本都具有的规律。这叫过拟合。
过拟合常见于模型学习能力过强。它在训练集上成绩很高,在新数据上却明显下降。
由于训练样本永远有限,过拟合风险无法被彻底消除,只能尽量缓解。
🌱 2. 欠拟合:连基本规律都没学会
一个能力太弱的模型可能只学到:
绿色的东西都是树叶。
于是它把一棵绿色的树也判断成一片树叶。这叫欠拟合。
欠拟合说明模型连训练数据中的一般规律都没有学好。可以通过增强学习能力来改善,例如:
-
给决策树增加分支。
-
使用更有表达能力的神经网络。
-
增加合理的训练轮数。

假设有两个模型:
-
A:训练精度99.9%,测试精度50%。
-
B:训练精度50%,测试精度50%。
A 的训练成绩远高于测试成绩,属于过拟合。B 连训练集都学不好,属于欠拟合。
|------------|----------------|-----------|
| 对比项 | 过拟合 | 欠拟合 |
| 原因 | 学得过细,把偶然特点当成规律 | 学习能力不足 |
| 训练集表现 | 通常很好 | 通常较差 |
| 新样本表现 | 明显变差 | 同样较差 |
| 直观比喻 | 背下了答案,却不会做新题 | 连课本基础都没学会 |
| 处理方向 | 缓解过度学习,提高泛化能力 | 增强模型学习能力 |
| 能否彻底避免 | 通常不能 | 通常可以改善 |
🗂️ 八、为什么需要训练集、验证集和测试集

理想情况下,我们应该直接比较候选模型的泛化误差,再选择泛化误差最小的模型。
但泛化误差无法直接得到,训练误差又可能被过拟合欺骗。因此,需要从已有数据中留下模型没有参与训练的数据,用它近似检查模型面对新样本的能力。

三个数据集合的职责不同:
-
训练集:让模型学习内部参数。
-
验证集:选择算法、超参数和模型版本。
-
测试集:在全部选择结束后,进行最后一次公平考试。
训练集和测试集应尽量互斥,并且都应从同一种真实分布中独立采样,也就是"独立同分布",简称 IID。
例如,成绩分布是:
-
50至60分有10人。
-
60至70分有20人。
-
70至80分有30人。
-
80至90分有20人。
-
90至100分有10人。
划分测试集时,也应按相同比例从每个分数段抽取,这叫"分层采样"。
|----------|-----------------|----------|
| 数据集合 | 作用 | 能否参与调参 |
| 训练集 | 学习模型参数 | 用于训练 |
| 验证集 | 选择超参数和模型 | 可以 |
| 测试集 | 最终估计泛化能力 | 不应参与 |
| IID | 各集合来自相同分布,并独立抽样 | 是公平评估的基础 |
| 互斥 | 测试样本不出现在训练过程中 | 防止答案泄漏 |
| 分层采样 | 各类别或区间按原比例抽取 | 保持分布一致 |
✂️ 九、留出法

留出法把数据集 D 分成训练集 S 和测试集 T。
它们之间的关系是:
完整数据集 D = 训练集 S + 测试集 T
训练集 S 与测试集 T 没有重复样本
也可以写成:
D = S ∪ T
S ∩ T = 空集
也就是说,两部分合起来是全部数据,而且没有重复样本。
留出法需要注意三件事:
-
保持数据分布一致,常用分层采样。
-
多次随机划分,再对测试结果取平均。
-
测试集不能太大,也不能太小,常取总数据的五分之一到三分之一。
测试集太大,训练集就会太小,模型可能学不好。
测试集太小,结果又会非常不稳定。例如测试集只有一个样本,错误率只能是0%或100%。
|----------|----------------------|
| 知识点 | 说明 |
| 留出法 | 一部分数据训练,另一部分测试 |
| 集合关系 | D = S ∪ T,S ∩ T = 空集 |
| 分布要求 | 训练集和测试集尽量保持相同分布 |
| 重复划分 | 多次随机划分并取平均,减少偶然性 |
| 常见比例 | 测试集约占五分之一到三分之一 |
| 主要问题 | 实际训练模型使用的数据少于完整数据集 |
🔁 十、交叉验证法

以十折交叉验证为例:
-
把数据集分成10个大小相似、互不重叠的子集。
-
每个子集都尽量保持原来的类别分布。
-
每次取9份训练,剩下1份测试。
-
轮流让每一份当一次测试集。
-
一共训练和测试10次。
-
对10个测试结果取平均。
如果为了减少划分带来的偶然影响,又随机重新划分并重复10轮,就叫"10次10折交叉验证"。
总训练和测试次数为:
10轮 × 每轮10次 = 100次
|---------------|---------------------|
| 知识点 | 说明 |
| k折交叉验证 | 把数据分成 k 份 |
| 每轮训练数据 | 其中 k - 1 份 |
| 每轮测试数据 | 剩下的1份 |
| 每次划分的训练次数 | k 次 |
| 最终结果 | k 个测试结果的平均值 |
| 重复 p 次 | 用不同随机划分重复,降低偶然影响 |
| 优点 | 每个样本都能参与训练,也能参与一次测试 |
| 代价 | 需要反复训练模型 |
1️⃣ 十一、留一法

如果数据集中有 m 个样本,并令:
k = m
就得到留一法,英文是 Leave-One-Out,简称 LOO。
每次使用:
-
m - 1 个样本训练。
-
1个样本测试。
然后重复 m 次,让每个样本都单独做一次测试样本。
例如有100个样本:
每轮训练样本数 = 100 - 1 = 99
总训练次数 = 100次
留一法的训练集几乎和完整数据集一样大,因此评估的模型与最终用全部数据训练的模型很接近。
但是,如果有100万个样本,就需要训练100万个模型,计算量很大。
|-----------|----------------------|
| 知识点 | 说明 |
| 留一法 | k = m 的特殊交叉验证 |
| 每轮训练 | m - 1 个样本 |
| 每轮测试 | 1个样本 |
| 总训练次数 | m 次 |
| 优势 | 几乎不减少训练数据,不受一次随机划分影响 |
| 劣势 | 数据量大时计算开销极高 |
| 适用情况 | 样本较少、单次训练成本可接受 |
🎒 十二、自助法

自助法采用"有放回采样"。
假设原数据集有 m 个样本。每次随机拿出一个样本,复制到新训练集中,然后把原样本放回去。
重复 m 次后,新训练集仍然有 m 个位置,但其中可能有重复样本。
某个样本一次没有被抽中的概率是:
一次未被抽中的概率 = 1 - 1/m
连续抽取 m 次都没有抽中它的概率是:
连续 m 次未被抽中的概率 = (1 - 1/m) 的 m 次方
当 m 很大时:
(1 - 1/m) 的 m 次方 ≈ 1/e ≈ 0.368
因此,原数据中大约36.8%的样本不会出现在自助训练集中,可以把它们作为测试样本。
这些样本也叫"袋外样本"。
|---------------|-------------------|
| 知识点 | 说明 |
| 自助采样 | 有放回地重复抽取样本 |
| 新训练集大小 | 与原数据集同为 m |
| 至少出现一次的样本 | 约占原样本的63.2% |
| 未出现的样本 | 约占36.8%,可作为袋外测试样本 |
| 优势 | 训练集表面规模不变 |
| 劣势 | 重复样本改变了原来的数据分布 |
| 适用情况 | 数据较少,或希望进行自助估计 |
🎛️ 十三、模型参数与超参数

参数分为两类。
⚙️ 1. 模型参数
模型参数由训练数据自动学习,例如:
-
直线
y = ax + b中的 a 和 b。 -
神经网络连接上的权重。
-
卷积核中的数字。
🛠️ 2. 超参数
超参数通常在训练前由人设定,例如:
-
神经网络有多少层。
-
每层有多少个神经元。
-
训练多少轮。
-
使用哪种模型结构。
调参的过程是:先设置多组超参数,训练出多个候选模型,再根据验证结果选择较好的配置。
选定算法和超参数后,可以把训练集与验证集合并,重新训练最终模型,最后只在测试集上进行一次公平评估。
|------------|--------------|----------------|
| 对比项 | 模型参数 | 超参数 |
| 谁来确定 | 学习算法通过数据确定 | 人工或搜索过程设定 |
| 何时确定 | 训练过程中 | 通常在训练前或调参时 |
| 示例 | 权重、卷积核、a、b、c | 网络层数、结构、训练轮数 |
| 使用哪个集合 | 训练集 | 验证集帮助选择 |
| 对性能的影响 | 决定模型具体学到了什么 | 决定模型怎样学习、能力有多强 |
📏 十四、性能度量必须反映任务需求
性能度量是衡量模型泛化能力的评价标准。
不同任务需要不同标准,所以使用不同指标,可能得到不同的模型排名。
假设工厂需要区分鲈鱼和草鱼:
-
模型 A 预测为鲈鱼时几乎不会错,但会漏掉一些真正的鲈鱼。
-
模型 B 能找到更多鲈鱼,却可能把一些草鱼错当成鲈鱼。
如果企业重视口碑,希望鲈鱼罐头里一定是鲈鱼,就更重视"查准率"。
如果企业更怕漏掉鲈鱼,就更重视"查全率"。
这不是单纯的数学选择,而是任务需求带来的偏好。
|--------------|----------------|
| 知识点 | 含义 |
| 性能度量 | 衡量模型表现的标准 |
| 为什么有多个指标 | 不同任务在意的错误不同 |
| 查准率优先 | 希望模型说"是"时尽量可靠 |
| 查全率优先 | 希望真正的目标尽量不要被漏掉 |
| 选择原则 | 指标必须与业务目标一致 |
| 与归纳偏好的关系 | 任务需求决定我们偏爱哪种模型 |
📈 十五、回归任务与均方误差

如果模型要预测温度、价格或身高,答案 y 是连续数值,这叫回归任务。
回归任务常用均方误差,简称 MSE。
公式为:
MSE = 所有"预测值与真实值之差的平方"相加 ÷ 样本数
E(f, D) = (1/m) × Σ[f(xᵢ) - yᵢ]²
其中:
-
xᵢ:第 i 个样本。
-
yᵢ:第 i 个样本的真实答案。
-
f(xᵢ):模型对第 i 个样本的预测答案。
-
m:样本数量。
-
Σ:把所有样本的结果加在一起。
计算步骤是:
-
计算预测值与真实值的差。
-
把差进行平方。
-
把所有平方结果相加。
-
除以样本数量。
平方可以消除正负号,并让较大的错误受到更重的惩罚。
如果讨论的不是有限样本,而是完整数据分布 D 和概率密度 p(x),积分公式:
E(f, D) = ∫[f(x) - y]² × p(x) dx
回归任务要求输出 y 是连续值,但输入 x 可以是离散对象,也可以是连续数值。
有限样本常用求和,连续分布常用积分。
|------------|---------------|
| 知识点 | 说明 |
| 回归任务 | 预测连续数值 |
| 均方误差 | 预测误差平方的平均值 |
| 为什么平方 | 消除正负号,并加重较大错误 |
| 有限样本 | 使用求和公式 |
| 连续分布 | 使用带概率密度的积分公式 |
| 判断任务类型 | 主要看输出 y 是否连续 |
🏷️ 十六、分类任务的数学表达

分类任务的答案是类别,例如"好瓜或坏瓜"。
错误率可以写成:
错误率 = (1/m) × ΣI[f(xᵢ) ≠ yᵢ]
其中,I 是指示函数:
-
括号中的条件为真,结果是1。
-
括号中的条件为假,结果是0。
因此,每次预测错误就记1分,预测正确就记0分。最后除以样本总数,就是错误率。
精度可以写成:
精度 = (1/m) × ΣI[f(xᵢ) = yᵢ]
精度与错误率的关系是:
精度 = 1 - 错误率
对于完整连续分布,也可以使用积分表示:
错误率 = ∫I[f(x) ≠ y] × p(x) dx
精度 = ∫I[f(x) = y] × p(x) dx
|-----------|------------------|
| 知识点 | 说明 |
| 分类任务 | 预测离散类别 |
| 指示函数 | 条件成立取1,否则取0 |
| 错误率公式 | 统计预测错误的样本比例 |
| 精度公式 | 统计预测正确的样本比例 |
| 二者关系 | 精度 = 1 - 错误率 |
| 分布形式 | 可用积分表示真实分布上的期望结果 |
🧮 十七、混淆矩阵
在二分类中,可以把"好瓜"规定为正例,把"坏瓜"规定为反例。
模型的预测与真实情况组合后,一共有四种结果:
|--------|-----------|-----------|
| 真实情况 | 预测为正例 | 预测为反例 |
| 正例 | TP:真正例 | FN:假反例 |
| 反例 | FP:假正例 | TN:真反例 |

记忆方法:
-
第二个字母 P 或 N 表示模型预测为正例还是反例。
-
第一个字母 T 或 F 表示这个预测是正确还是错误。
四格之和就是样本总数:
样本总数 = TP + FP + FN + TN
错误率:
错误率 = (FP + FN) / (TP + FP + FN + TN)
精度:
精度 = (TP + TN) / (TP + FP + FN + TN)
|----|------|------|----------|
| 名称 | 真实情况 | 预测结果 | 是否正确 |
| TP | 正例 | 正例 | 正确 |
| FN | 正例 | 反例 | 错误,漏掉了正例 |
| FP | 反例 | 正例 | 错误,误报为正例 |
| TN | 反例 | 反例 | 正确 |
🎯 十八、查准率与查全率
✅ 1. 查准率

查准率,也叫 Precision,回答的问题是:
模型找出来的正例中,有多少是真的?
公式为:
P = TP / (TP + FP)
🔎 2. 查全率

查全率,也叫 Recall,回答的问题是:
所有真正的正例中,模型找到了多少?
公式为:
R = TP / (TP + FN)
假设:
TP = 30,FP = 10,FN = 20,TN = 40
那么:
P = 30 / (30 + 10) = 75%
R = 30 / (30 + 20) = 60%
模型说有40个好瓜,其中30个真是好瓜,所以查准率是75%。
真实共有50个好瓜,模型找出30个,所以查全率是60%。
通常,查准率与查全率存在矛盾:

-
判断条件严格,误报减少,查准率可能升高,但会漏掉更多正例。
-
判断条件宽松,漏掉的正例减少,查全率可能升高,但误报会增多。
|-----------|--------------------|----------|-----------|
| 指标 | 公式 | 关心的问题 | 主要受哪种错误影响 |
| 查准率 P | P = TP / (TP + FP) | 找出来的有多准 | FP |
| 查全率 R | R = TP / (TP + FN) | 真正目标找全了吗 | FN |
| 高查准率 | 预测为正时更可信 | 少误报 | 控制 FP |
| 高查全率 | 尽量不漏掉正例 | 少漏报 | 控制 FN |
📉 十九、P-R曲线

许多分类器会为每个样本给出一个"像正例的分数"。
可以按照分数从高到低排列样本,再逐渐放宽判断为正例的条件。
每改变一次条件,就能得到一组新的查准率和查全率。
以查全率为横轴、查准率为纵轴,把这些点连接起来,就得到P-R曲线。
比较模型时:

-
如果一条曲线完全包住另一条曲线,外面的曲线通常更好。
-
如果两条曲线交叉,就不能简单说谁永远更好。
-
可以比较曲线下面积。
-
可以比较平衡点。
-
也可以使用F1。
平衡点是查准率与查全率相等的位置:
P = R
|---------|---------------------|
| 知识点 | 说明 |
| P-R曲线横轴 | 查全率 R |
| P-R曲线纵轴 | 查准率 P |
| 生成方法 | 按预测分数排序,并不断改变判断门槛 |
| 曲线包围关系 | 一条曲线整体更靠外时通常更好 |
| 曲线交叉 | 模型各有擅长区域,需要结合任务选择 |
| 曲线下面积 | 用于综合比较不同门槛下的表现 |
| 平衡点 | 查准率等于查全率的位置,即 P = R |
⚖️ 二十、F1与Fβ:把查准率和查全率合成一个分数
🤝 1. F1度量

F1是查准率和查全率的调和平均。
公式为:
F1 = 2PR / (P + R)
使用混淆矩阵中的数据,可以写成:
F1 = 2TP / (2TP + FP + FN)
它也可以写成:
F1 = 2TP / (样本总数 + TP - TN)
调和平均会惩罚严重不平衡的结果。
即使查准率很高,只要查全率很低,F1也不会很高。
F1还满足:
1/F1 = (1/2) × (1/P + 1/R)
例如:
P = 75%
R = 60%
那么:
F1 = 2 × 0.75 × 0.60 / (0.75 + 0.60)
F1 ≈ 66.7%
🎚️ 2. Fβ度量

如果查准率与查全率不是同等重要,可以使用Fβ。
纯文本公式为:
Fβ = (1 + β²)PR / (β²P + R)
它还可以写成:
1/Fβ = [1 / (1 + β²)] × (1/P + β²/R)
β的作用是调整查准率和查全率的重要程度:
-
β = 1:就是F1,两者同等重要。
-
β > 1:更重视查全率。
-
β < 1:更重视查准率。
|---------------|-------------------|--------|
| 指标 | 用途 | 偏好 |
| 平衡点 | 查看 P = R 时的表现 | 两者相等 |
| F1 | 把查准率与查全率合成一个分数 | 两者同等重要 |
| Fβ,β > 1 | 漏掉正例的代价更高 | 更重视查全率 |
| Fβ,β < 1 | 误报正例的代价更高 | 更重视查准率 |
| 调和平均 | 防止一个指标很高掩盖另一个指标很低 | 惩罚不平衡 |
🛤️ 二十一、完整的模型评估与选择流程
一个较完整的AI模型选择过程是:
-
明确任务需要预测什么。
-
确定最重要的性能指标。
-
准备具有代表性的数据。
-
划分训练集、验证集和测试集。
-
使用训练集学习模型参数。
-
使用验证集选择算法和超参数。
-
检查过拟合与欠拟合。
-
必要时使用留出法、交叉验证、留一法或自助法进行更稳定的评估。
-
选定配置后,用训练集和验证集重新训练最终模型。
-
最后在未参与选择的测试集上评估一次。
-
报告与任务需求匹配的指标。
|------------|-------------|----------------|
| 阶段 | 要解决的问题 | 常用方法 |
| 理解任务 | 需要解决哪一种具体问题 | 明确输入、输出和错误代价 |
| 建立假设 | 机器可以学习哪些规则 | 假设空间、版本空间 |
| 选择偏好 | 多个规则中选谁 | 归纳偏好、奥卡姆剃刀 |
| 防止盲目比较 | 是否存在永远最好的算法 | NFL定理 |
| 诊断学习状态 | 学得太多还是太少 | 过拟合、欠拟合 |
| 估计泛化能力 | 新样本上表现如何 | 测试集、交叉验证等 |
| 调整模型 | 使用哪种结构和配置 | 验证集、超参数 |
| 衡量结果 | 什么才算表现好 | MSE、精度、P、R、F1等 |
| 最终选择 | 哪个模型最适合实际任务 | 数据、指标和任务需求共同决定 |
🧐课后小测
| 序号 | 问题 | 标准答案 | 解析 | 记忆口诀 |
|---|---|---|---|---|
| 1 | 什么是归纳和演绎?为何机器学习是归纳学习? | 归纳是从特殊到一般;演绎是从一般到特殊。机器从样本中总结规律,因此属于归纳学习。 | 看见很多白天鹅后总结"天鹅通常是白色"是归纳;用这条规律判断新天鹅是演绎。 | 归纳:例子→规律;演绎:规律→例子。 |
| 2 | 所有候选规则的总称是什么?如何计算? | 叫假设空间。公式:假设数 = (v₁+1)×(v₂+1)×...+1。括号中的"+1"是通配符,最后"+1"是空假设。 |
假设空间像装着所有候选规则的大盒子,"*"表示这个特征随便。 | 每个特征加"随便",最后再加"全不要"。 |
| 3 | 算法对某类规则的偏爱叫什么?为何必须有? | 叫归纳偏好。多条假设都能解释训练集时,算法必须有所偏好,才能选择规则并预测新样本。 | 多位同学旧题都满分,机器必须决定新题更相信谁的方法。 | 旧题都做对,偏好决定听谁的。 |
| 4 | A的泛化误差远低于B,说明什么? | 说明A的归纳偏好更匹配当前任务,不能证明A在所有任务上都更好。 | 雨天雨鞋更好,不代表去沙滩时雨鞋仍然最好。 | 当前赢不等于永远赢,匹配任务才会赢。 |
| 5 | NFL定理的结论与前提是什么? | 结论:对所有问题平均时,各算法平均性能相同。前提:所有问题等可能或同等重要。 | 飞机、自行车谁更快,必须先说明路程;不存在永远最好的交通工具。 | 没有万能算法,只有合适算法。 |
| 6 | 训练误差和泛化误差有什么区别? | 训练误差是训练集上的误差,可以计算;泛化误差是新样本上的真实误差,因未来数据未知而难以直接得到。 | 练习册成绩能直接数,未来所有考试的成绩无法提前知道。 | 训练误差看旧题,泛化误差看新题。 |
| 7 | A训练99%、测试70%;B训练70%、测试68%,分别是什么状态? | A明显过拟合;B训练和测试成绩都较低,可能欠拟合。严格判断还要结合任务难度和基准成绩。 | A背熟练习题却不会新题;B连练习题也没有学好。 | 训练高测试低是过拟合;两边都低是欠拟合。 |
| 8 | 训练集与测试集应满足什么条件?IID是什么? | 样本应独立同分布,即彼此独立并来自相同分布;训练集与测试集还应互斥。 | 平时和考试应考同一范围,但正式试题不能提前出现在练习册中。 | 范围相同,题目没见过。 |
| 9 | 怎样保持训练集与测试集的分布一致? | 使用分层采样:先按标签分层,再按原比例从每层随机抽取。 | 班级男女比例为6∶4,抽取代表时也尽量保持6∶4。 | 先分层,再按比例抽。 |
| 10 | 轮流使用不同部分做测试叫什么? | 叫交叉验证。十折交叉验证将数据分成10份,每次9份训练、1份测试,轮换10次后取平均。 | 10个人轮流当考试代表,最后把10次成绩平均。 | 分成k份,轮流考试,最后平均。 |
| 11 | 留一法有什么优缺点? | 每次用m−1个样本训练、1个测试,共训练m次。优点是训练数据接近完整数据;缺点是样本多时计算量极大。 | 100名学生每次留下1人考试,要轮换100次。 | 留一个,练其他;利用率高,训练次数多。 |
| 12 | 过拟合和欠拟合怎样调整? | 过拟合可早停、正则化、简化模型、数据增强或增加代表性数据;欠拟合可增加模型能力、特征或训练轮数。 | 过拟合是背得太细,需要减少死记;欠拟合是基础没学会,需要增加学习能力。 | 过拟合做减法,欠拟合做加法。 |
| 13 | P-R曲线的横纵轴是什么?A包住B说明什么? | 横轴是查全率R,纵轴是查准率P。A整体包住B,表示在相同查全率下,A通常具有更高查准率。 | 在找全程度相同时,A找出来的结果更加准确。 | 横轴查全,纵轴查准,越靠右上越好。 |
| 14 | 平衡P和R最常用的指标是什么? | 使用F1。F1 = 2PR/(P+R) = 2TP/(2TP+FP+FN)。其中P=TP/(TP+FP),R=TP/(TP+FN)。 |
F1像检查两条腿,只要其中一条很弱,整体就跑不快。 | P看误报,R看漏报,F1要求两边都好。 |
| 15 | Fβ中β大于1表示什么? | β>1更重视查全率;β<1更重视查准率;β=1就是F1。 | 查病时怕漏掉病人,可让β大于1;警报怕误报,可让β小于1。 | β变大更怕漏,β变小更怕错。 |
| 16 | 测试集何时使用?能否用于调参? | 在训练和调参全部完成后使用一次,不能用于调参,否则会发生信息泄露,使评估结果失真。 | 如果提前看期末试卷再复习,最后的高分就不能证明真正学会了。 | 训练集用来学,验证集用来选,测试集最后验。 |
| 17 | 完整机器学习项目如何排序? | 明确目标→划分数据→训练候选模型→验证集调参→训练集与验证集合并重训→测试集最终评估→部署。 | 先知道考什么,再练习和模拟;方法确定后完整复习,最后参加正式考试。 | 定目标→分数据→训练→调参→重训→测试。 |
| 18 | 如何串联整篇文章的逻辑? | 训练样本→归纳学习→假设空间→版本空间→归纳偏好→模型选择→泛化评估→处理拟合问题→性能度量→最终模型。 |
机器先从样本找规则,再从合格规则中作选择,最后用新数据和合适指标检查。 | 看样本、找规则;靠偏好、选模型;用新题、看指标。 |