Answers:
就像您说的那样,没有黑白答案。我通常不将数据分为两部分,而是使用类似k折交叉验证的方法。
在k倍交叉验证中,您将数据随机分为k个部分,并将模型拟合到k-1个部分上,并测试遗漏部分的错误。您重复该过程k次,使每个零件都不一一对应。您可以将k次迭代中的每一次均值误差作为模型误差的指标。如果您想比较不同模型的预测能力,这将非常有效。
k折交叉验证的一种极端形式是广义交叉验证,您只需省去一个数据点进行测试,然后将模型拟合到所有其余点即可。然后重复此过程n次,一次一个地遗漏每个数据点。我通常更喜欢k折交叉验证而不是广义交叉验证...只是个人选择
这实际上取决于您拥有的数据量,方法的特定成本以及您希望结果如何精确。
一些例子:
如果数据很少,则可能要使用交叉验证(k折,留一法等)。无论如何,您的模型可能不会花费太多资源来进行训练和测试。这是充分利用数据的好方法
您拥有大量数据:您可能希望采用相当大的测试集,以确保某些奇怪的样本几乎不会给您的结果带来很大的差异。您应该获取多少数据?这完全取决于您的数据和模型。例如,在语音识别中,如果您要占用太多数据(比如说3000个句子),那么您的实验将需要几天的时间,因为实时系数通常为7-10。如果您花费的时间太少,则很大程度上取决于您选择的扬声器(培训集中不允许使用)。
还请记住,在很多情况下,也要进行验证/开发设置!
1:10的test:train比率很受欢迎,因为它看起来很圆; CV的10倍,它很受欢迎; 1:2的原因是,它也很圆,可以重新组装自举,因此很受欢迎。有时,人们会从某些特定于数据的标准中进行测试,例如去年进行测试,培训之前数年。
一般规则是这样的:火车必须足够大,以使准确性不会显着下降,并且测试必须足够大,以使随机波动静音。
我仍然更喜欢CV,因为它还可以分配错误。
作为对k折答案的扩展,k的“通常”选择为5或10。留一法则倾向于生成过于保守的模型。仅供参考,以下是有关此事实的参考:
Shao,J.(1993),“通过交叉验证选择线性模型”,《美国统计协会杂志》,第1卷。88,第422页,第486-494页