假设我的样本量很小,例如 N=100,并且有两个类别。我应该如何选择机器学习的训练、交叉验证和测试集大小?
我会直觉地选择
- 训练集大小为 50
- 交叉验证集大小为 25,以及
- 测试大小为 25。
但这可能或多或少是有道理的。我应该如何真正决定这些值?我可以尝试不同的选择吗(尽管我想这不是那么可取……增加了过度学习的可能性)?
如果我有两个以上的课程怎么办?
假设我的样本量很小,例如 N=100,并且有两个类别。我应该如何选择机器学习的训练、交叉验证和测试集大小?
我会直觉地选择
但这可能或多或少是有道理的。我应该如何真正决定这些值?我可以尝试不同的选择吗(尽管我想这不是那么可取……增加了过度学习的可能性)?
如果我有两个以上的课程怎么办?
您肯定发现了非常相似的问题:K 折交叉验证中 K 的选择?
(包括 Ron Kohavi 作品的链接)
如果您的样本量已经很小,我建议避免任何数据驱动的优化。相反,将自己限制在可以通过对模型和应用程序/数据的了解来修复超参数的模型中。这使得验证/测试级别之一变得不必要,在剩余的交叉验证中留下更多用于训练代理模型的少数案例。
恕我直言,您无论如何都买不起具有该样本量的非常精美的模型。几乎可以肯定,您无法进行任何有意义的模型比较(除非您使用适当的评分规则和配对分析技术,否则肯定不会)。
这个决定远比的精确选择重要得多(例如,5 倍与 10 倍)——重要的例外是,遗漏一个不是一般推荐。
有趣的是,对于这些非常小样本量的分类问题,与训练一个体面的模型相比,验证通常更困难(就样本量需求而言)。如果您需要这方面的任何文献,请参阅我们关于样本大小规划的论文:
Beleites, C. and Neugebauer, U. and Bocklitz, T. and Krafft, C. and Popp, J.:Sample size planning for classification models。Anal Chim Acta, 2013, 760, 25-33。
DOI: 10.1016/j.aca.2012.11.007
arXiv 上接受的手稿: 1211.1323
另一个重要的一点是充分利用迭代/重复交叉验证的可能性(这是反对 LOO 的原因之一):这允许您测量预测对训练的扰动(即少数不同情况)的稳定性数据。
文学:
如果您决定在保留测试集上进行单次运行(无迭代/重复),
鉴于您的样本量很小,一个好的做法是省略交叉验证部分并使用 60 - 40 或 70 - 30 的比率。
正如您在Clementine 和数据挖掘简介的第 2.8 节以及MSDN 库 - 数据挖掘 - 训练和测试集中看到的那样, 70 - 30 的比率很常见。根据 Andrew Ng 的机器学习讲座,建议使用 60 - 20 - 20 的比例。
希望我对您有所帮助。最好的祝福。