-
前言
对训练好的模型进行评估,目的是为了测试我们所训练的模型是否拥有好的泛化能力。为此,需使用一个“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。通常我们假设测试样本也是从样本真实分布中独立同分布采样而得。但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现,未在训练过程中使用过。因此本文介绍如何从数据集中选择测试集的方法。
以下为实验过程中总结的方法。
-
留出法
“留出法”直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。S与T互斥。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
以二分类任务为例,假设D包含1000哥样本,将其划分为S包含700个样本,T包含300个样本,用S进行训练后,如果模型在T上有90个样本分类错误,那么其错误率为(90/300)*100%=30%,相应的,精确度为1-30%=70%
需注意的是, 训练/测试机的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中,至少要保持样本的类别比例相似。如果从采样的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样”。例如通过对D进行分层采样而获得含70%样本的训练集S和30%的测试集T,若D包含500个正例,500个反例,则分层采样得到的S应包含350个正例,350个反例,而T则包含150个正例,和150个反例;若S,T中样本类