样本量不是 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
是否建议执行以下操作;
- 给定样本量 86,取 8 个样本作为保留集。
- 使用剩余样本进行训练。
- 重复 10 次。
这样做会得到它,所以每个样本都是一个训练集,但只有 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。至少有两个主要的机器学习库是这样做的。
我看到一些论文对样本数量不能被 10 整除的数据集使用 10 折交叉验证。
我找不到任何案例解释他们如何选择每个子集。
我的假设是他们在某种程度上使用了重采样,但如果是这种情况,那么一个样本可能会出现在两个子集中,从而使模型产生偏差。
论文为例:http://www.biomedcentral.com/1471-2105/9/319
是否建议执行以下操作;
- 给定样本量 86,取 8 个样本作为保留集。
- 使用剩余样本进行训练。
- 重复 10 次。
这样做会得到它,所以每个样本都是一个训练集,但只有 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。至少有两个主要的机器学习库是这样做的。