我们应该在训练期间使用多少数据,在测试中使用多少数据?谁能解释为什么它似乎总是 70:30 或 80:20 的比例?
统计 - 训练和测试数据拆分
那些关于比率的经验法则毫无意义。测试集的用例是在未见数据的真实场景中衡量您的表现。您需要多少准确测量取决于您需要的准确度水平,您期望的方差量,而不是原始数据集的大小。需要注意的是,您确实会减小训练集的大小,这是测试成本。但是当你有 1000 万行数据时,验证 300 万行是没有意义的,而 10,000 行可能绰绰有余。除了丢失训练数据的成本之外,您还应该查看测试集中的绝对数字。
就训练/测试分类背后的原因而言..你可以在这里得到一些帮助
您的数据拆分比例是任意的。
然而要记住的事情是:你拥有的训练数据越多,你的模型就会越好。您拥有的测试数据越多,您对结果的预期差异就越小(即准确性、误报率等)。
理想情况下,如果您有无限的训练数据,您将能够最大限度地提高模型的性能。该模型将是有史以来最好的。如果您有无限的测试数据,您将对模型的最终准确性有 100% 的信心。
现在,如果您没有足够的测试数据,例如您只有 1 个示例。然后,对于一个示例,您的算法可能正确识别其类别,因此您假设您具有 100% 的准确度。但那是错误的。您需要多个测试示例才能正确评估模型的性能。
80:20 分很受欢迎。以及90:10。这是任意的。这完全取决于您手头有多少数据。它还取决于您期望有多少数据足以准确地训练您的模型。如果您只有 100 个示例并且您正在训练数据密集型模型(例如 NN),那么 90:10 的拆分可能会更好。尽管您的准确性会有很大差异,但您的模型会更好地泛化,因为它有更多的数据可以训练。
除非数据集另有说明,否则我通常坚持 80:20。此外,使用验证集是一种很好的做法。如果你有足够的数据,最好做60:20:20。在 60% 的数据上进行训练,验证您的模型并在 20% 的数据上对其进行 tweek 处理,当您准备好提交模型时,在最后 20% 的数据上对其进行测试。
交叉验证也是一种很好的技术。您将数据拆分为 n 个 bin。然后,您进行留一式培训。您在除 1 之外的所有数据箱上进行训练,使用剩余的箱进行测试。重复这个过程 n 次,取你的准确率的平均值。但是请注意,这样做会破坏您的一些数据,因为您正在使用所有数据。最好保留最终产品的大部分数据,直到最后一分钟都保持不变。