如何将只有一个包含m个样例的数据集D,产生出训练集S和测试集T?
- 留出法(hold-out)
- 交叉验证法(cross validation)
- 自助法(bootstrapping)
自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用一些。
有人会考虑既然将数据集D,分为训练集S和测试集T,那么验证集又是什么呢?
测试集(testing set)来测试学习器对新样本的判别能力,然后以测试误差(testing error)作为泛化误差的近似。通常我们假设测试样本也是从样本真实分布中独立同分布采样而得。但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现,未中训练过程中使用过。
测试集只是用于测试学习器(即学得模型)的泛化能力。而如何选择学习器呢?
在训练集中,事实上我们只使用了一部分数据训练模型,在模型评估与选择过程中需要留出一部分数据进行评估测试。为了和测试集加以区分,模型评估与选择中用于评估测试的数据集常称为验证集(validation set)。
在研究对比不同算法的泛化性能时,我们用测试集的判别效果来估计模型中实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。