拆分训练和测试数据

3

有人能推荐在机器学习中将训练数据和测试数据划分的最佳比例吗?如果我把训练和测试数据按30-70百分比划分,会有什么缺点吗?

2个回答

0

遗憾的是,没有一种“正确的方法”来分割您的数据,人们使用不同的值,这些值是基于不同的启发式、直觉和个人经验/偏好选择的。一个很好的起点是Pareto principle80-20)。

有时,使用简单的分割不是一个选项,因为您可能有太多的数据——在这种情况下,您可能需要对数据进行抽样或使用较小的测试集,如果您的算法具有计算复杂度。重要的一部分是随机选择您的数据。权衡起来很简单:更少的测试数据 = 您的算法的性能将具有更大的方差。 更少的训练数据 = 参数估计将具有更大的方差。

对我个人而言,比分割大小更重要的是,显然你不应该仅在相同的测试分割上执行一次测试,因为它可能存在偏差(你可能会在分割中得到幸运或不幸的结果)。这就是为什么您应该针对几个配置进行测试(例如,每次选择不同的20%运行X次测试)。在这里,您可能会遇到所谓的模型方差问题-不同的分割将导致不同的值。这就是为什么您应该多次运行测试并平均结果。

使用上述方法,您可能会发现测试所有可能的分割很麻烦。一个成熟的数据分割方法是所谓的交叉验证,正如您可以在维基百科文章中阅读到的那样,有几种类型(穷举和非穷举)。特别注意k折交叉验证


3
请注意,交叉验证通常用于确定超参数。在这种情况下,您的折叠将仅限于训练数据。您的测试数据必须保持不变,直到最后才能用它来确定您的程序的有效性。 - kasterma

0

了解交叉验证的各种策略。

10% - 90%的分割很受欢迎,因为它来自于10倍交叉验证。 但是您也可以进行3倍或4倍交叉验证。 (33-67或25-75)

更大的误差来自于:

  • 测试和训练中都有重复数据
  • 不平衡的数据

确保首先合并所有重复项,并在存在不平衡数据时执行分层拆分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接