拆分培训和测试数据

时间:2015-08-02 11:51:12

标签: machine-learning classification

有人可以推荐在机器学习中划分训练数据和测试数据的最佳百分比。如果我将训练和测试数据分成 30-70%,有什么缺点?

2 个答案:

答案 0 :(得分:0)

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

有时使用简单拆分不是一种选择,因为您可能只是拥有太多数据 - 在这种情况下,如果您的算法计算复杂,则可能需要对数据进行采样或使用较小的测试集。一个重要的部分是随机选择您的数据。权衡非常简单:减少测试数据 =算法的性能会有更大的差异。 培训数据越少 =参数估算值会有更大的差异。

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

使用上述方法,您可能会发现测试所有可能的拆分很麻烦。一种完善的分割数据的方法就是所谓的cross validation,你可以在wiki文章中看到它有几种类型(详尽的和非详尽的)。请特别注意 k-fold交叉验证

答案 1 :(得分:0)

阅读各种交叉验证策略。

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

出现了更大的错误:

  • 在测试和训练中重复
  • 不平衡数据

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