【问题标题】:In Machine Learning, is it okay to add the development set to the training set after development?在机器学习中,开发后将开发集添加到训练集中可以吗?
【发布时间】:2018-09-01 22:43:07
【问题描述】:

通常我们在训练集上训练我们的模型,在开发集上评估它们,进行一些更改,再次训练和评估等(开发阶段),最后在测试集上评估一次。

假设我们的训练数据很少。然后,在开发阶段之后使用训练和开发集可能是有意义的。可以像往常一样估计超参数,最后(最终训练)将开发集添加到训练集中,使用先前估计的超参数训练模型并在测试集上对其进行一次评估。

这算不算“作弊”?人们会这样做,还是他们通常会在任何培训中忽略开发集?

【问题讨论】:

  • 只是为了了解...您想要实现什么? “发展”之后是什么意思?
  • 查看我的更改;希望现在更清楚了

标签: machine-learning training-data


【解决方案1】:

我不认为这是作弊。如果它根据现实世界的数据和你看不见的测试数据改进了你的模型,那应该没问题。推荐训练/开发/测试集是有原因的,但是如果你有这么小的训练数据集,我相信这是一个有效的策略。无论如何,如果不了解更多细节,例如数据的性质和您想要完成的任务,就很难得到明确的答案。您可能希望了解的另一种方法是数据增强。 我推荐以下课程,其中包括培训/开发/测试集分布等: https://www.coursera.org/learn/machine-learning-projects

【讨论】:

    【解决方案2】:

    一旦您使用开发集确定了超参数,您就可以使用 train + dev 再次执行训练。这是经常使用的方法。 例如在 sklearn 中使用 GridSearchCV 方法,如果你使用 refit=True,这将在超参数搜索完成后执行训练。即如果 cv=4 且 refit=True,则模型执行 5 次训练,(4 次用于搜索最佳超参数)+(1 次用于使用完整训练集的最终训练)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-25
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 2019-01-26
      • 2022-12-03
      • 2013-04-29
      相关资源
      最近更新 更多