为什么我们不能在对测试集进行评估后进一步调整/更改模型?

数据挖掘 机器学习 深度学习 交叉验证 数据科学模型 模型选择
2022-02-19 01:59:12

我发现的 stackexchange 上的每个线程都说您只能使用测试集一次,仅此而已。因此,例如,如果您使用线性回归模型并且在测试集上得到了较差的结果,则您不能将模型更改为随机森林并在测试集上再次评估该模型。

这对我来说没有意义。例如,我们都非常了解 MNIST 数据集。假设我下载数据并将其拆分为训练、验证和测试。另外,假设我使用了线性回归模型,显然我在测试集上的表现会很差。现在,是什么阻止其他人下载相同的 MNIST 数据集、拆分为训练、验证、测试以及使用不同的模型(例如神经网络)并报告他们的测试结果?

根据我们只能使用一次测试集的理解,他们的测试结果是无效的,因为他们以某种方式“了解到”线性回归模型不好。这对我来说似乎不对。

2个回答

训练/验证/测试分布(我以一种痛苦的方式发现)的原因是,如果您调整模型以适应测试集,您将获得良好的结果。它可能是完全随机的数据,但如果你计算出足够多的特征,并调整模型的超参数,你将获得相对较高(且具有误导性)的准确度。

不调整您的测试集是一条经验法则,人们将其视为福音,因为他们因不遵循它而被烧毁。实际上,更细微的建议是这样的:

  1. 在测试集上训练
  2. 在验证集上测试你的模型
  3. 根据验证结果调整模型
  4. 一旦你有信心,就在一个完全外部的测试集上进行测试。

如果你得到不好的结果,你可以回到步骤 1-3,但是你应该小心不要使用你的测试结果 4 来调整你的模型,因为这会破坏在第一个中分离验证集和测试集的全部意义地方。

有些系统可以自动执行此过程,例如训练/验证/测试拆分和嵌套 kfold。

您可以测试多个不同的模型。事实上,在工业中,从一个简单的模型开始,然后构建一个更高级的模型是很常见的。简单模型的第一个测试可能是 K-NN。然后你可能会构建一些更高级的东西,比如随机森林。