样本量不是 10 的 10 倍交叉验证

10 fold cross validation with sample size that is not a factor of 10

我看到一些论文对样本数量不能被 10 整除的数据集使用 10 折交叉验证。

我找不到任何案例解释他们如何选择每个子集。

我的假设是他们在某种程度上使用了重采样,但如果是这种情况,那么一个样本可能会出现在两个子集中,从而使模型产生偏差。

论文为例:http://www.biomedcentral.com/1471-2105/9/319

是否建议执行以下操作;

这样做会得到它,所以每个样本都是一个训练集,但只有 80/86 个样本用作保留集,并且在训练集和保留集内都没有出现偏差。

如有任何见解,我们将不胜感激。

您希望折叠的大小相等,或尽可能接近相等。

为此,如果您有 86 个样本并想使用 10 折 CV,则前 86 % 10 = 6 折的大小为 86 / 10 + 1 = 9,其余的大小为 86 / 10 = 8:

6 * 9 = 54
4 * 8 = 32   +
--------------
86

一般来说,如果你有 n 个样本和 n_folds 个折叠,你想做什么 scikit-learn does:

The first n % n_folds folds have size n // n_folds + 1, other folds have size n // n_folds.

注://表示整数除法

我不知道对此有适当的科学参考,但这似乎是惯例。有关相同的建议,请参阅 this question and also this one。至少有两个主要的机器学习库是这样做的。