援引:深度学习
将数据集分成固定的训练集和固定的测试集后,若测试集的误差很小,这将是有问题的。一个小规模的测试集意味着平均测试误差估计的统计不确定性,使得很难判断算法A 是否比算法B 在给定的任务上做得更好。
当数据集有十万计或者更多的样本时,这不会是一个严重的问题。当数据集太小时,也有替代方法允许我们使用所有的样本估计平均测试误差,代价是增加了计算量。这些过程是基于在原始数据上随机采样或分离出的不同数据集上重复训练和测试的想法。最常见的是k-折交叉验证过程,如算法5.1 所示,将数据集分成k 个不重合的子集。测试误差可以估计k 次计算后的平均测试误差。在第i 次测试时,数据的第i 个子集用于测试集,其他的数据用于训练集。带来的一个问题是不存在平均误差方差的无偏估计(Bengio and Grandvalet, 2004),但是我们通常会使用近
似来解决。
K-折交叉验证算法
K-折交叉验证算法
调整方案(k一般为10)

  1. 训练数据集相对较小,则增大k值。
    增大k值,在每次迭代过程中将会有更多的数据用于模型训练,能够得到最小偏差,同时算法时间延长。且训练块间高度相似,导致评价结果方差较高。
  2. 如果训练集相对较大,则减小k值。
    减小k值,降低模型在不同的数据块上进行重复拟合的性能评估的计算成本,在平均性能的基础上获得模型的准确评估。
    K折交叉验证的一个特例: 留一(LOO)交叉验证法
    将数据子集划分的数量等于样本数(k=n),每次只有一个样本用于测试,数据集非常小时,建议用此方法。

相关文章: