提供了我计划用来预测数据的样本大小“N”。有哪些方法可以细分数据,以便我使用其中的一部分来建立模型,而其余的数据来验证模型?
我知道对此没有非黑即白的答案,但了解一些“经验法则”或通常使用的比率会很有趣。我知道在大学里,我们的一位教授曾经说过,在 60% 上建模并在 40% 上进行验证。
提供了我计划用来预测数据的样本大小“N”。有哪些方法可以细分数据,以便我使用其中的一部分来建立模型,而其余的数据来验证模型?
我知道对此没有非黑即白的答案,但了解一些“经验法则”或通常使用的比率会很有趣。我知道在大学里,我们的一位教授曾经说过,在 60% 上建模并在 40% 上进行验证。
正如你所说,没有非黑即白的答案。我通常不会将数据分成两部分,而是使用 k-fold 交叉验证等方法。
在 k 折交叉验证中,您将数据随机划分为 k 个部分,并将您的模型拟合到 k-1 个部分上,并测试左侧部分的错误。您重复该过程 k 次,使每个零件一个接一个地不适合。您可以将每次 k 次迭代的平均误差作为模型误差的指示。如果您想比较不同模型的预测能力,这非常有效。
k-fold 交叉验证的一种极端形式是广义交叉验证,您只需留下一个数据点进行测试,并将模型拟合到所有剩余点。然后重复这个过程 n 次,一个一个地去掉每个数据点。我通常更喜欢 k 折交叉验证而不是广义交叉验证......只是个人选择
这实际上取决于您拥有的数据量、方法的具体成本以及您希望结果的准确程度。
一些例子:
如果您的数据很少,您可能希望使用交叉验证(k-fold、leave-one-out 等)。无论如何,您的模型可能不会占用太多资源来训练和测试。这是充分利用数据的好方法
你有很多数据:你可能想要一个相当大的测试集,确保一些奇怪的样本不太可能给你的结果带来很大的差异。您应该获取多少数据?这完全取决于您的数据和模型。例如,在语音识别中,如果你需要太多的数据(比如 3000 个句子),你的实验需要几天时间,因为 7-10 的实时因子很常见。如果您选择的太少,则太依赖于您选择的扬声器(训练集中不允许使用这些扬声器)。
还要记住,在很多情况下,拥有一个验证/开发集也很好!
1:10 test:train ratio很受欢迎,因为它看起来很圆,1:9很受欢迎,因为10倍CV,1:2很受欢迎,因为它也是圆的并且重新组装了bootstrap。有时,人们会根据某些特定数据的标准进行测试,例如去年进行测试,几年前进行培训。
一般规则是这样的:火车必须足够大,这样准确度才不会显着下降,并且测试必须足够大,以消除随机波动。
我仍然更喜欢 CV,因为它还为您提供了错误分布。
作为 k 折答案的扩展,k 的“通常”选择是 5 或 10。留一法倾向于产生过于保守的模型。仅供参考,这是关于该事实的参考:
Shao, J. (1993),通过交叉验证选择线性模型,美国统计协会杂志,卷。88,第 422 号,第 486-494 页