本文是周志华《机器学习》(西瓜书)第2章 模型评估与选择(Evaluation & Selection)的学习笔记,涵盖本章所有核心知识点,配有通俗类比与公式推导。

1经验误差与过拟合

基础概念

术语 定义 备注
错误率 E=a/mE = a/m(错分样本数/总样本数)
精度 1E1 - E 正确率
训练误差(经验误差) 学习器在训练集上的误差 不是泛化能力的真实反映
泛化误差 学习器在新样本上的误差 我们真正关心但无法直接计算的

过拟合 vs 欠拟合

欠拟合 模型太简单 训练误差大 + 泛化误差大 刚刚好 训练误差小 泛化误差小 过拟合 模型太复杂 训练误差小 + 泛化误差大

🍉 通俗类比

欠拟合 = 小学生用”所有人均分”来预测考试成绩;过拟合 = 把”张三那天吃了韭菜饺子所以考砸了”也当成规律。机器学习最难的挑战就是找到那个”刚刚好”的中间地带。

📌 核心定义

过拟合是机器学习面临的关键障碍——无法彻底避免,只能缓解。NP 难问题(如 P ≠ NP),过拟合不可能完全消除。

2评估方法

核心难题:测试集应该和训练集互斥——测试样本不能在训练集中出现。

方法 做法 适用场景 注意
留出法 直接将数据集划分为训练集和测试集(如 70%/30%) 数据量大 单次划分有偶然性;分层采样可缓解
交叉验证 kk 份,每份轮流做测试,其余训练,kk 次取平均 最常用 10 折最常用;可重复 pp
自助法 每次有放回采样 mm 个,约 36.8% 未采样样本做测试 数据量少 改变了数据分布,引入估计偏差

自助法取样比例

每个样本被抽中的概率 1/m1/mmm 次采样后未被抽中概率:

📐 公式

limm(11m)m1e0.368 \lim_{m\to\infty} \left(1 - \frac{1}{m}\right)^m \to \frac{1}{e} \approx 0.368

🍉 通俗类比

留出法 = 期末考试(只考一次,有点偶然);交叉验证 = 模拟考 + 期末考试取平均(更可靠);自助法 = 用有放回题目凑一套”仿造”考卷(估计有偏但数据利用率高)。

💡 技巧提示

分层采样:划分数据时保持每折中各类别比例与整体相同,避免某折全是好瓜另一折全是坏瓜的极端情况。

3性能度量

混淆矩阵

预测正 预测反
真实正 TP (真阳) FN (假阴)
真实反 FP (假阳) TN (真阴)

核心指标

📐 公式

查准率 P=TPTP+FPP = \frac{TP}{TP+FP} (预测为正的样本中真正为正的比例)

查全率 R=TPTP+FNR = \frac{TP}{TP+FN} (所有正样本中被正确找出的比例)

🍉 通俗类比

查准率 = “宁可错杀一千不可放过一个”的反面:你说”这个是坏瓜”,有多少是真的坏瓜?查全率 = 所有坏瓜中,你成功抓出了几个?两者通常是矛盾的——提高阈值增加查准但降低查全,反之亦然。

F1 与 Fβ

📐 公式

F1=2×P×RP+R,Fβ=(1+β2)×P×R(β2×P)+R F1 = \frac{2 \times P \times R}{P + R},\quad F_\beta = \frac{(1+\beta^2) \times P \times R}{(\beta^2 \times P) + R} β=1\beta = 1 退化为 F1(等权重);β>1\beta > 1 偏重查全率;β<1\beta < 1 偏重查准率。

ROC 与 AUC

ROC 曲线:纵轴 TPR(真正例率 = 查全率),横轴 FPR(假正例率)。ROC 曲线越靠近左上角越好。AUC 是 ROC 曲线下面积,AUC = 1 完美,AUC = 0.5 随机猜测。

📐 公式

AUC=12i=1m1(xi+1xi)(yi+yi+1) \text{AUC} = \frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1} - x_i)(y_i + y_{i+1})

代价敏感错误率

不同类型错误的代价不同(如把癌症判为健康比反过来代价大得多),引入代价矩阵:

📐 公式

E(f;D;cost)=1m(xiD+I(f(xi)yi)×cost01+xiDI(f(xi)yi)×cost10) E(f; D; \text{cost}) = \frac{1}{m}\left(\sum_{\boldsymbol{x}_i\in D^+} \mathbb{I}(f(\boldsymbol{x}_i)\ne y_i) \times \text{cost}_{01} + \sum_{\boldsymbol{x}_i\in D^-} \mathbb{I}(f(\boldsymbol{x}_i)\ne y_i) \times \text{cost}_{10}\right)

4比较检验

有了性能度量,还要回答一个关键问题:“算法 A 比算法 B 好 1 个百分点,这个差异是真实的还是随机波动?”

检验 适用场景 核心思想
二项检验 单个学习器 vs 泛化误差上界 二项分布检验测试错误率
t 检验 比较两个学习器的性能 kk 折 CV 得 kk 对差值,做配对 t 检验
McNemar 检验 两个分类器的分类结果 卡方检验两个分类器是否犯同样的错误
Friedman 检验 多个算法在多个数据集上比较 先对每个数据集排名,再检验排名一致性

🍉 通俗类比

只比一次考试分数不靠谱——张三这次 90 李四 85,你能说张三一定比李四强吗?统计检验就是多做几轮考试,看分数差异到底是实力差距还是运气波动。

💡 技巧提示

Friedman 检验若显著,则需Nemenyi 后续检验来判断具体哪些算法之间的差异显著。这称为”两两比较”。

5偏差-方差分解

对学习算法的期望泛化误差进行拆解,得到理解泛化性能的关键等式:

📐 公式

E(f;D)=(bias2)偏差2+variance方差+ε2噪声 E(f; D) = \underbrace{(bias^2)}_{\text{偏差}^2} + \underbrace{variance}_{\text{方差} } + \underbrace{\varepsilon^2}_{\text{噪声} }
  • 偏差:期望预测与真实值的偏离程度——反映拟合能力
  • 方差:预测值自身的波动程度——反映数据扰动的影响
  • 噪声:问题本身的难度下界——无法通过算法降低
高偏差 打哪都偏 高方差 散得很开 偏差-方差窘境 训练不足时偏差主导 训练充足后方差主导

🍉 通俗类比

偏差-方差窘境 = 射箭。偏差:你瞄准时瞄偏了多少(方法对不对);方差:你每次出手的散布有多大(稳不稳定)。当你调整姿势让偏差减小(瞄得更准)时,手抖(方差)往往反而更大。机器学习模型复杂度增加时:偏差下降但方差上升。

📌 核心定义

Bagging 主要降方差(并行取平均,让抖动的结果互相抵消);Boosting 主要降偏差(串行修正,每次都把上次瞄偏的部分纠正回来)。

6本章总结

模型评估与选择 五步走 1. 划分数据 2. 选性能度量 3. 统计检验 4. 分析误差 偏差-方差分解 5. 过拟合→正则化/剪枝/早停 欠拟合→增加模型复杂度

📝 考试高频考点

  • 过拟合的定义、原因和缓解策略
  • 三种评估方法的对比(留出法 vs 交叉验证 vs 自助法)
  • kk 折交叉验证的流程与 **分层采样** 的意义
  • 查准率 P vs 查全率 R 的权衡与 PR 曲线的含义
  • F1 / Fβ 的计算:β\beta 的含义
  • ROC 曲线和 AUC 的含义与计算方法
  • 偏差-方差分解公式及各项含义
  • 为什么说 Bagging 降方差,Boosting 降偏差

📌 核心定义

一句话总结:模型好不好,不能光看训练集上的表现。正确的打开方式是:合理划分数据 + 选择合适的性能度量 + 做统计检验确认差异显著 + 用偏差-方差分解理解误差来源。这四步是机器学习实践者的基本功。