← 返回学习笔记

Lecture 2:模型评估和选择

408 学习笔记:Lecture 2:模型评估和选择。保留原有知识内容、公式与图示;有对应原件时提供查看和下载入口。

本页目录

描述:本节围绕模型的泛化能力,整理过拟合、正则化、留出法、交叉验证、自助法、验证集、性能度量、比较检验,以及二分类中的混淆矩阵、查准率、查全率和 $F_\beta$。

2.1 什么是好模型

  • 判断模型好坏前,应先明确任务真正需要什么,再据此定义评价标准。
  • 机器学习模型的核心要求是泛化能力强,即在未见数据上仍能保持较好的预测性能。
  • 同一个模型在不同任务、不同数据分布或不同性能度量下,可能得到不同评价。

2.2 泛化误差、经验误差与过拟合

2.2.1 泛化误差

泛化误差是在未来样本上的期望损失。若真实联合分布为 $P(X,Y)$,学习到的模型为 $\hat f$,则

$$ R_{\mathrm{exp}}(\hat f) =\mathbb E_{(X,Y)\sim P} \left[L(Y,\hat f(X))\right]. $$

  • 若 $X,Y$ 都具有连续联合密度 $p(x,y)$,才可写成 $\int!!\int L(y,\hat f(x))p(x,y),\mathrm dx,\mathrm dy$。
  • 分类任务中的 $Y$ 通常离散,此时应对类别求和;若 $X$ 连续,则写成 $\sum_y\int L(y,\hat f(x))p(x,y),\mathrm dx$。
  • 真实分布通常未知,因此泛化误差不能直接精确计算。
  • 使用训练数据估计未来性能的前提,是训练数据与未来数据之间存在稳定联系,通常假设它们来自相同分布。

2.2.2 经验误差

训练集

$$ D={(\boldsymbol{x}i,y_i)}{i=1}^{N} $$

上的平均损失称为经验风险或训练误差:

$$ R_{\mathrm{emp}}(\hat f) =\frac{1}{N}\sum_{i=1}^{N} L(y_i,\hat f(\boldsymbol{x}_i)). $$

  • 经验误差只反映模型对已知训练样本的拟合程度。
  • 模型最终要处理未来、未见的数据,因此经验误差不能替代泛化误差。

2.2.3 过拟合

  • 当比较的是同一训练集上的嵌套假设空间,且每个模型都被充分优化时,经验风险的最优值通常不会随模型复杂度增加而上升,但不保证一定趋近于 $0$。
  • 测试误差“先下降后上升”是有限样本和噪声下常见的偏差-方差趋势,不是对任意模型族、优化算法和数据分布都成立的定律。
  • 当模型过于复杂,把训练样本中的偶然特征或噪声误当作一般规律时,就发生过拟合。
  • 因此训练误差不是越小越好。选择模型时要在拟合能力与模型复杂度之间取得平衡。

可把典型趋势概括为:

模型复杂度 训练误差 测试误差 常见状态
过低 高 高 欠拟合
适中 较低 最低附近 泛化较好
过高 很低 重新升高 过拟合
  • 学习任何算法时都应追问:它靠什么机制缓解过拟合?该机制在什么条件下会失效?

2.3 模型选择的三个问题

问题 对应工具
如何获得可信的测试结果 评估方法
如何定义性能优劣 性能度量
如何判断差异是否具有统计意义 比较检验

2.4 正则化

  • 正则化是模型选择的典型方法,也是结构风险最小化的实现。
  • 它在经验风险上增加与模型复杂度相关的正则化项或罚项:

$$ \min_{f\in\mathcal F} \frac{1}{N}\sum_{i=1}^{N}L(y_i,f(\boldsymbol{x}_i)) +\lambda J(f). $$

  • 第一项衡量训练拟合误差,第二项 $J(f)$ 衡量模型复杂度,$\lambda$ 控制两者的权衡。
  • 正则化项一般是模型复杂度的单调递增函数,例如参数向量的范数。
  • 正则化的目标不是单独把训练误差或复杂度压到最小,而是选择二者同时较小的模型。
  • 从奥卡姆剃刀角度看,应在能够较好解释数据的模型中偏好更简单者。
  • 从贝叶斯估计角度看,正则化项可对应模型参数的先验:复杂模型先验概率较小,简单模型先验概率较大。

2.5 测试集的获得方法

2.5.1 基本原则

  • 测试集必须与训练集互斥。
  • 测试集要尽量反映真实应用分布。
  • 不能用测试集调参或反复选择模型,否则测试集会间接参与训练,评价将偏乐观。

2.5.2 留出法

留出法把数据集直接划分为训练集与测试集。

  • 划分时要保持数据分布一致,例如分类任务可采用分层采样。
  • 单次随机划分带有偶然性,通常应重复多次随机划分并汇总结果。
  • 测试集不能太小,否则评估方差大;也不能太大,否则训练数据不足。源资料给出的经验比例约为数据集的 $1/5$ 到 $1/3$。
  • 留出法实际评估的是用较小训练集得到的模型。例如最终希望用 $100$ 个样本训练,若留出 $20$ 个测试,评估的是用 $80$ 个样本训练的模型,两者并不完全相同。

2.5.3 $k$ 折交叉验证

  • 把数据集 $D$ 分成 $k$ 个大小相近、分布尽量一致的互斥子集。
  • 进行 $k$ 轮训练,每轮用一个子集测试,其余 $k-1$ 个子集训练。
  • 最终结果取 $k$ 轮测试结果的平均值。
  • $10$ 折交叉验证可用约 $90%$ 数据训练,并保证每个样本恰好被测试一次。
  • 留一法是 $k=m$ 的特殊情况,每轮只留一个样本测试。其训练集最接近完整数据集,但计算开销大,而且单个测试样本使单轮结果的方差较大。
  • 源资料以男女样本为例说明:即使每轮训练集含 $99$ 个样本,若唯一测试样本恰好属于受分布波动影响的类别,单轮精度仍可能极端,因此“训练集更接近完整集”不等于“测试估计一定更稳定”。

2.5.4 自助法

  • 自助法基于有放回采样。从含 $m$ 个样本的数据集抽取 $m$ 次,每次抽取后把样本放回。
  • 一些样本会被重复抽到,一些样本一次也没有被抽到。
  • 某个样本在一次抽取中未被选中的概率为 $1-\frac{1}{m}$,连续 $m$ 次都未被选中的概率为

$$ \left(1-\frac{1}{m}\right)^m. $$

当 $m\rightarrow\infty$ 时,

$$ \lim_{m\to\infty} \left(1-\frac{1}{m}\right)^m =\frac{1}{e}\approx0.368. $$

  • 因而约 $36.8%$ 的原始样本不会出现在自助训练集中,可用于包外估计(out-of-bag estimation)。
  • 自助法能在训练集仍含 $m$ 个抽样项的情况下保留测试样本,适合数据量较小的场景。
  • 缺点是有放回采样改变了原始训练数据的分布。

2.6 调参、训练集、验证集与测试集

  • 算法参数中,由人工设定、不能直接通过普通训练过程得到的参数称为超参数。
  • 模型参数通常由学习算法根据训练数据确定。
  • 调参过程本质上也是模型选择:先训练若干候选模型,再依据验证结果选择。
  • 选择不同算法同样是在选择不同假设空间或学习过程。

三类数据的职责如下:

数据 主要用途 是否参与模型选择
训练集 学习模型参数 是
验证集 选择超参数、模型结构或算法 是
测试集 最终一次评估泛化性能 否
  • 源资料给出一种示例划分:$60%$ 训练集、$20%$ 验证集、$20%$ 测试集。
  • 超参数确定后,应把训练集与验证集合并,重新训练最终模型,再在从未参与选择的测试集上报告结果。

2.7 平均损失、训练误差与测试误差

设训练集大小为 $N$,测试集大小为 $N'$。

训练集平均损失:

$$ R_{\mathrm{emp}}(\hat f) =\frac{1}{N}\sum_{i=1}^{N}L(y_i,\hat f(\boldsymbol{x}_i)). $$

测试集平均损失:

$$ e_{\mathrm{test}} =\frac{1}{N'}\sum_{i=1}^{N'} L(y_i,\hat f(\boldsymbol{x}_i)). $$

若使用 0-1 损失,测试错误率为

$$ e_{\mathrm{test}} =\frac{1}{N'} \sum_{i=1}^{N'} \mathbb I\left(y_i\neq\hat f(\boldsymbol{x}_i)\right), $$

测试准确率为

$$ r_{\mathrm{test}} =\frac{1}{N'} \sum_{i=1}^{N'} \mathbb I\left(y_i=\hat f(\boldsymbol{x}i)\right) =1-e{\mathrm{test}}. $$

2.8 性能度量

  • 性能度量是衡量模型泛化能力的评价标准。
  • 不同度量反映不同任务需求,可能导致不同的模型排序。
  • “好模型”不仅由算法和数据决定,也由任务代价和需求决定。

2.8.1 回归任务

回归常用均方误差:

$$ E(f;D) =\frac{1}{m}\sum_{i=1}^{m} \left(f(\boldsymbol{x}_i)-y_i\right)^2. $$

2.8.2 分类错误率与精度

错误率:

$$ E(f;D) =\frac{1}{m}\sum_{i=1}^{m} \mathbb I\left(f(\boldsymbol{x}_i)\neq y_i\right). $$

精度:

$$ \operatorname{acc}(f;D) =\frac{1}{m}\sum_{i=1}^{m} \mathbb I\left(f(\boldsymbol{x}_i)=y_i\right) =1-E(f;D). $$

2.9 比较检验

  • 单个测试性能值不能直接证明一个学习器的泛化性能一定更好。
  • 测试结果会随测试集划分变化,许多学习算法本身也含随机性。
  • 机器学习结论通常是概率性的,因此需要统计假设检验判断差异是否显著。

源资料列出的两学习器比较方法包括:

  • 交叉验证 $t$ 检验,基于成对 $t$ 检验。
  • $k$ 折交叉验证和 $5\times2$ 交叉验证。
  • McNemar 检验,基于两分类器预测结果的列联表和卡方近似。

2.10 二分类的混淆矩阵

真实情况 预测为正例 预测为反例
正例 TP:真正例 FN:假反例
反例 FP:假正例 TN:真反例
  • TP 和 TN 是预测正确的样本。
  • FP 表示模型预测为正,实际为反。
  • FN 表示模型预测为反,实际为正。
  • 混淆矩阵的非主对角线是误分类部分。

2.10.1 查准率

查准率(precision)表示所有“预测为正”的样本中,真正为正的比例:

$$ P=\frac{TP}{TP+FP}. $$

2.10.2 查全率

查全率(recall)表示所有真实正样本中,被模型找出的比例:

$$ R=\frac{TP}{TP+FN}. $$

2.10.3 $F_1$ 与 $F_\beta$

$F_1$ 是查准率与查全率的调和平均:

$$ F_1=\frac{2PR}{P+R} =\frac{2TP}{2TP+FP+FN}. $$

若样本总数为 $m=TP+TN+FP+FN$,也可写为

$$ F_1=\frac{2TP}{m+TP-TN}. $$

调和平均会对较小的分量更敏感,因此不会像算术平均那样轻易忽略较低的 $P$ 或 $R$。

带权形式为

$$ F_\beta =\frac{(1+\beta^2)PR}{\beta^2P+R}, $$

等价地,

$$ \frac{1}{F_\beta} =\frac{1}{1+\beta^2} \left(\frac{1}{P}+\frac{\beta^2}{R}\right). $$

  • 当 $\beta>1$ 时,更重视查全率。
  • 当 $\beta<1$ 时,更重视查准率。
  • 当 $\beta=1$ 时,退化为 $F_1$。

2.11 易错点

  • 训练误差低不代表泛化误差低;复杂度继续增加时,训练误差可能下降而测试误差上升。
  • 验证集用于调参,测试集用于最终评价;若用测试集反复选模型,测试结果已不再客观。
  • 留出法的训练集小于完整数据集,所得评估对应的是较少数据训练出的模型。
  • 留一法训练集虽大,但单轮只有一个测试样本,评估不一定稳定。
  • 自助法中约 $36.8%$ 是“未被抽中”的原始样本,不是训练集中只含 $63.2%$ 个抽样位置;训练集仍抽取了 $m$ 次,只是存在重复。
  • accuracy 适合类分布较均衡、误判代价相近的任务;类别不均衡时应结合 precision、recall、$F_\beta$ 等指标。
  • precision 的分母是“预测为正”,recall 的分母是“真实为正”。
  • $\beta>1$ 强调 recall,$\beta<1$ 强调 precision。

相关知识

2.12 本节复盘

  • 好模型的核心是泛化能力强;泛化误差是未来样本上的期望损失,经验误差是训练集上的平均损失。
  • 在嵌套模型、充分优化等常见设定下,过拟合可表现为复杂度增加时训练误差继续下降而测试误差反而上升;该曲线是典型现象,不是无条件定律。
  • 正则化通过“经验风险加复杂度罚项”在拟合能力与复杂度之间权衡。
  • 留出法简单但受划分影响;$k$ 折交叉验证让每个样本都被测试;自助法通过有放回采样留下约 $36.8%$ 包外样本。
  • 训练集学习参数,验证集选超参数,测试集只做最终评价;选定参数后应合并训练集和验证集重新训练。
  • 回归常用均方误差,分类可用错误率、准确率以及由混淆矩阵得到的 precision、recall、$F_\beta$。
  • 单个测试值不能充分证明算法优劣,应结合随机重复实验和统计比较检验。