计算用于模型拟合/训练和验证的样本数据的比率


9

提供了我计划用来预测数据的样本量“ N”。有哪些方法可以细分数据,以便我使用其中的一些数据来建立模型,而其余数据可以用来验证模型?

我知道对此没有黑白答案,但是了解一些“经验法则”或通常使用的比率将很有趣。我知道在大学时,我们的一位教授曾经说过要在60%的情况下建模并在40%的情况下进行验证。

Answers:


7

就像您说的那样,没有黑白答案。我通常不将数据分为两部分,而是使用类似k折交叉验证的方法。

在k倍交叉验证中,您将数据随机分为k个部分,并将模型拟合到k-1个部分上,并测试遗漏部分的错误。您重复该过程k次,使每个零件都不一一对应。您可以将k次迭代中的每一次均值误差作为模型误差的指标。如果您想比较不同模型的预测能力,这将非常有效。

k折交叉验证的一种极端形式是广义交叉验证,您只需省去一个数据点进行测试,然后将模型拟合到所有其余点即可。然后重复此过程n次,一次一个地遗漏每个数据点。我通常更喜欢k折交叉验证而不是广义交叉验证...只是个人选择


2
使用全套CV进行模型选择,是吗?这是一个常见错误(甚至Wikipedia都提到了它),因为它是一个隐藏的过拟合。您需要做一个更高级别的简历或做一些测试才能做到这一点。

5

这实际上取决于您拥有的数据量,方法的特定成本以及您希望结果如何精确。

一些例子:

如果数据很少,则可能要使用交叉验证(k折,留一法等)。无论如何,您的模型可能不会花费太多资源来进行训练和测试。这是充分利用数据的好方法

您拥有大量数据:您可能希望采用相当大的测试集,以确保某些奇怪的样本几乎不会给您的结果带来很大的差异。您应该获取多少数据?这完全取决于您的数据和模型。例如,在语音识别中,如果您要占用太多数据(比如说3000个句子),那么您的实验将需要几天的时间,因为实时系数通常为7-10。如果您花费的时间太少,则很大程度上取决于您选择的扬声器(培训集中不允许使用)。

还请记住,在很多情况下,也要进行验证/开发设置!


5

1:10的test:train比率很受欢迎,因为它看起来很圆; CV的10倍,它很受欢迎; 1:2的原因是,它也很圆,可以重新组装自举,因此很受欢迎。有时,人们会从某些特定于数据的标准中进行测试,例如去年进行测试,培训之前数年。

一般规则是这样的:火车必须足够大,以使准确性不会显着下降,并且测试必须足够大,以使随机波动静音。

我仍然更喜欢CV,因为它还可以分配错误。


4

作为对k折答案的扩展,k的“通常”选择为5或10。留一法则倾向于生成过于保守的模型。仅供参考,以下是有关此事实的参考:

Shao,J.(1993),“通过交叉验证选择线性模型”,《美国统计协会杂志》,第1卷。88,第422页,第486-494页


你读过这篇论文吗?尽管如此,它仅适用于线性模型(甚至标题也可以显示!),它涉及无穷多个对象的渐近行为。100是远远不够的。

1
我希望您能对9个对象进行10倍交叉验证。

@mbq:我说的是“通常”的选择。但这并不意味着每一个选择
Albort

@mbq:我已经读过这篇论文;Shao报道了一项仅包含40个观测值的模拟研究,结果表明,LOOCV的性能不如Monte-Carlo CV,除非没有适当的子选择(整个功能集是最佳的)。至少对于线性模型中的子集选择而言,100是远远不够的。
shabbychef

@shabbychef你已经把我放在这里了;我的第一条评论中的第二个论点当然是个垃圾,我想到了其他一些作品,而且过于笼统。尽管如此,我仍然会争辩说,邵的论文对于一般的“大N的LOO失败”不是一个很好的参考,因为它的范围仅限于线性模型。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.