留出法(hold out)

  • 将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
  • 测试集与训练集的划分要尽可能的保持数据分布的一致性。
  • 单次使用留出法得到的估计结果往往是不够稳定可靠的,一般要采用若干次随即划分、重复进行实验评估后取平均值作为留出法的评估结果。
  • 常见做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试

    交叉验证法(cross validation)

  • 先将数据集D划分为k个大小相同的互斥子集,每个子集都尽可能地保持数据分布的一致性,即从D中通过分层采样得到,然后每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集。这样就可以获得k组测试/训练集,从而可以进行k次的训练和测试,最终返回k个训练结果的均值。

  • 特例,留一法。数据集D中有m个样本,令k=m。即每次有m-1个样本作为训练集,1个样本作为测试集,训练m个模型。此方法的评估结果是比较准确的,但是数据集比较大时,计算开销很大。

    自助法(bootstrapping)

  • 给定包含m个样本的数据集D,我们对它进行采样产生数据集D’,即每次随机从D中挑选一个样本,将其拷入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D’。将D’用作训练集,D\D’用作测试集。

  • 此法在数据集较小、难以有效划分训练集\测试集时很有用。
  • 初始数据量足够时,留出法和交叉验证法更常用一些。

验证集:模型评估与选择中用于评估测试的数据集常称为验证集