合并训练和验证集以提高准确性

数据挖掘 机器学习 图像分类 机器学习模型 训练
2022-03-01 07:30:02

我正在训练一个图像分类模型,我的训练测试集分布是 80-20。

  • 训练后我的训练测试损失曲线看起来像这样

训练和测试损失

由于模型在大约 20-30 个 epoch 后收敛并且没有过度拟合。

我是否也可以尝试通过合并我的训练集和测试集来训练相同的模型,希望随着训练数据量的增加它会变得更加准确?

  • 在这种情况下合并训练集、测试集是个好主意吗?
  • 如果我这样做有什么缺点?
2个回答

您完成模型构建过程之后(假设您使用测试集一次且仅一次来评估最终模型在看不见的数据上的性能),在部署模型之前,常识和标准实践说你应该在所有可用数据上重新训练它,包括在那之前作为测试被搁置的部分。遗漏可用数据是我们通常无法承受的奢侈品;并且,如果您的模型构建过程没有问题,并且您的测试集在质量上与您的训练集相似(隐含始终存在的假设),则无需担心。

定性地说,这种方法与我们对交叉验证所做的类似,之后我们会定期使用所有可用数据重新训练模型。

以下交叉验证线程可能有用;尽管它们解决了交叉验证问题,但基本原理是相似的——最后,使用所有数据:

一旦您使用来自测试集的数据进行训练,它就不再是测试集。您的建议会导致您失明:您可能会获得更好的结果,因为您使用了更多数据,但您根本无法知道。这不是推荐的策略。

如果您想更多地利用您的数据,另一种方法是将训练/测试拆分更改为 90/10 - 但这仅适用于您的测试集中仍有足够的行数。

另一方面:如果您想要更好的结果,您可以增加模型的复杂性。也许在你的隐藏层中添加更多节点,尝试调整你的学习率(也许它太大了,你没有接近可接受的局部最小值?)。这些是您应该考虑的选项。