主要内容
通常,用测试集(testing set)来测试学习器的误差,将测试误差作为泛化误差的近似。测试集应该避免出现在训练集中,否则难以发现过拟合和欠拟合问题。
-
评估方法
-
留出法(hold-out):将集合D直接划分为两个互斥测试集合S和T, 满足 $D=S \cup T, S\cap T = \emptyset$ 并且划分过程中应保持S和T中样本的分布一致性。保证一致性可以通过保持样本的类别比例(该方式也叫分层采样)等方式。
缺点:在留出法中,如果S的样本数量过大,会导致评估结果有误差;如果T的样本过大,会导致训练出的模型与D有更大的差别,从而失去保真性(fidelity)。
通常将2/3到4/5的数据作为测试集。
-
交叉验证法:将数据集划分为k个互斥子集,轮流充当测试集,取均值作为测试结果,也叫k折交叉验证。

特殊地,当k等于样本数量,即每次测试集只有一个样本的时候,这种方法叫留一法。留一法评估结果非常准确,最接近原始模型,但在数据集过大的情况下,它的计算开销不可接受。
-
自助法(bootstrapping):直接以自助采样法对数据集进行随机采样,每次随机选择一个样本,然后放回,重复m次即可得到m个有重复样本,再将从未被采到的样本作为测试集。这种方法的可以避免人工划分样本导致的不准确问题。以下公式可以说明测试集的理论比例。

-
当m接近无限增大的时候, 仍会有0.368的样本从未被选中,可充当测试集。
-
调参与最终模型
大多数学习算法都有需要人工设定的参数(parameter),为了选择合适的模型,通常需要多次调整设定合适的参数,该过程称为调参。
学习算法的参数一般是实数范围内取值,每种参数都训练一版模型并不现实。在实际生产过程中,会确定参数的大致范围和步长进行训练,比如对于范围[0,0.2]之间的参数取0.05步长,则只有5个候选。假设算法有三个参数都是5个候选,则总版本数为5x5x5=125个版本。
调参过程中通常会将训练集再次分割为两个数据集,其中较小的一部分被称为验证集。验证集的划分与测试集的划分方法类似,但它的功能是用于在模型的调参过程中验证模型效果。当参数确定后,会使用完整的训练集重新训练一版模型,再用测试集去评估最终效果。