图 7.1 演示了评估学习方法泛化能力的重要问题。首先考虑一个数值或区间范围的输出变量。目标变量为
测试误差(test error),也称为泛化误差(generlization error),为在一个独立的测试样本上的预测误差:
其中
注意在上式中的期望是对所有随机成分的平均,包括训练得出
![**图 7.1**:测试集和训练集误差随模型复杂度变化的表现。生成 100 组大小为 50 的训练集,浅蓝色(细)曲线为随着模型复杂度上升的训练误差 $\bar{\text{err}}$;浅红色(细)曲线则为条件测试误差 $\text{Err}\_\mathcal{T}$ 的曲线。深色(粗)曲线分别对应着期望训练误差 $\operatorname{E}[\bar{\text{err}}]$ 和期望测试误差 $\text{Err}$。](https://public.guansong.wang/eslii/ch07/eslii_fig_07_01.png)
图 7.1 中展示了 100 组大小为 50 的模拟训练集的预测误差
通常的目标是估计
训练误差(training error) 是在训练样本上的平均误差:
我们想要的是估计模型
但如图 7.1 所示,训练误差并不是对测试误差的一个好的估计。训练误差随着模型复杂度增大而持续降低,如果将复杂度增加到一定程度,通常会下降到零。不过零训练误差的模型是对训练集的过拟合,通常泛化表现会很差。
对定性(qualitative)或分类(categorical)输出变量也有一样的结论,假设
其中 -2 与对数似然度的乘积有时被称为偏差(deviance)。
这里的测试误差同样为
训练误差是在训练样本上的类比定义,例如使用样本对数似然度的模型训练误差为:
对数似然度可作为一般性的概率密度的损失函数,比如泊松(Poisson)、伽玛(Gamma)、指数(exponential)、对数正态(log-normal)以及其他分布。若
定义式中的“-2”使高斯分布的对数似然度损失恰好等价于平方误差损失。
由于本章主要集中在量化输出变量(平方误差损失函数)的场景,为了便于阐述,本章后续会用
本章会介绍估计一个模型的期望测试误差的不同方法。模型通常会有一个或多个调节参数
需要引起注意的是这里有两个不同的目标:
- 模型选择:估计不同模型的表现,来选择最佳模型。
- 模型评估:选定了最终模型,估计其在新数据上的预测误差(泛化误差)。
如果数据量足够大,上述两个问题的最佳解决方法是将样本随机分成三部分:训练集、验证集和测试集。训练集用来拟合模型;验证集用来估计预测误差,选择模型;测试集用来评估最终选定模型的泛化误差。最好将测试集保存在“保险柜”中,只在模型分析的最后才被取出来。如果在之前的分析中使用了测试集,比如根据测试集上的误差选择模型,那么最终选定模型的测试集误差会低估真实的测试误差,有时低估的程度会很大。
很难给出如何选择三个数据集的样本量的普适规则,因为这通常取决于数据中的信号噪声比以及样本量的大小。一个典型的划分方法为训练集 50%,验证集和测试集各 25%。

本章中的方法适用于数据量不足以支撑划分为三部分的场景中。需要再一次说明,很难给出样本量应该有多大的一般性规则;这取决于隐含的回归函数的信号噪声比,待拟合模型的复杂度,以及其他相关背景。
本章中的方法通过分析的方法(AIC,BIC,MDL,SRM)或对样本有效地再利用(交叉验证和自助抽样)来近似上述的模型验证步骤。除了用于模型选择外,这些方法同时也在某种程度上提供了对最终选定模型测试误差的一个可信的估计。
在介绍这些方法之前,下一节会先详细地探究测试误差的性质,以及偏差方差的权衡。