蒙特卡洛交叉验证程序是否有效?

机器算法验证 机器学习 交叉验证
2022-03-22 00:04:36

我认为K 折交叉验证包括以下步骤。

  1. 将数据随机分成个块。K
  2. 适合块。K1
  3. 预测剩余的块。保持预测。
  4. 对省略 1 个块组合重复 2-3 。K1K
  5. 评估将所有预测与真实值进行比较的损失统计量。

现在我已经看到(xbartdbarts 包中)以下过程:

  1. 将数据随机分成个块。K
  2. 适合块。K1
  3. 预测剩余的块。评估损失统计并保留。
  4. 重复 1-3次。N
  5. 以其他方式平均N

注意第 4 步和第 5 步的区别。

第一个程序是标准的,并在主要教科书中推荐。第二个程序似乎是新的。我无法立即看出为什么不这样做,但就方差而言似乎不是最佳的。是否有支持或反对第二个程序的论据?

第二种方法是在上面引用的包中实现的,我想知道这样做是否错误。

1个回答

简短的回答:这既不是错误的,也不是新的。


大约 15 年前,在准备论文时,我们一直在以“集合验证”的名义讨论这个验证方案*,但最终从未真正提及它,因为我们没有发现它在实践中使用。

Wikipedia 指的是与重复随机子抽样验证或蒙特卡洛交叉验证相同的验证方案

从理论的角度来看,我们对这个概念很感兴趣,因为

  • 这是对相同数字的另一种解释,通常称为保留(只是估计所用的模型不同:保留估计被用作测试模型的性能估计,这个集合或蒙特卡罗验证处理测试模型作为代理模型,并解释与构建在整个数据集上的模型的性能估计完全相同的数字——因为它通常通过交叉验证或自举验证估计完成)
  • 它介于两者之间
    • 更常见的交叉验证技术(替换重采样,解释为全数据模型的估计),
    • 坚持(见上文,相同的计算 + 数字,通常没有 N 次迭代/重复,尽管和不同的解释)
    • 和out-of-bootstrap(N次迭代/重复对于out-of-bootstrap来说是典型的,但我从未见过这适用于hold-out,而且[不幸]很少通过交叉验证完成)。

*贝莱特斯,C.;鲍姆加特纳,R.;鲍曼,C。索莫尔杰,R.;施泰纳,G。Salzer, R. & Sowa, MG Variance reduction in estimating classification error using sparse datasets, Chemom Intell Lab Syst, 79, 91 - 100 (2005)。
N = 1 的“设置验证”错误隐藏在图中。6(即它的偏差+方差可以从给定的数据中重建,但没有明确给出。)


但就方差而言,它似乎不是最优的。是否有支持或反对第二个程序的论据?

好吧,在上面的论文中,我们发现自举和重复/迭代折交叉验证的总误差(偏差² + 方差)非常相似(oob 的方差稍低但偏差较高 - 但我们没有跟进检查这种权衡是否/有多少是由于重新采样(有/没有替换)以及有多少是由于oob的大约1:2的不同分割比)。k
但请记住,我说的是小样本情况下的准确性,在这种情况下,方差不确定性的主要贡献者对于所有重采样方案都是相同的:用于测试的真实样本数量有限,对于 oob 也是如此、交叉验证或集合验证。迭代/重复允许您减少由(代理)模型的不稳定性引起的方差,但不能减少由于总样本量有限而导致的方差不确定性。
因此,假设您执行了足够多的迭代/重复 N,我不希望这些验证方案的性能存在实际相关的差异。

不过,一种验证方案可能更适合您尝试通过重采样来模拟的场景。