如果研究中验证准确度高但测试准确度低怎么办?

机器算法验证 机器学习 交叉验证 可重复研究
2022-02-04 13:48:16

我有一个关于机器学习研究验证的具体问题。

众所周知,机器学习机制要求研究人员在训练数据上训练他们的模型,通过验证集从候选模型中选择,并报告测试集的准确性。在非常严格的研究中,测试集只能使用一次。但是,它永远不可能是研究场景,因为我们必须提高我们的性能,直到测试准确度优于最先进的结果,然后我们才能发表(甚至提交)论文。

现在问题来了。假设 50% 是最先进的结果,我的模型一般可以达到 50--51 的准确率,平均而言更好。

然而,我最好的验证准确度(52%)产生了一个非常低的测试准确度,例如,49%。然后,如果我不能进一步改进验证 acc,我必须报告 49% 作为我的整体表现,我认为这是没有希望的。这确实使我无法研究这个问题,但这对我的同龄人来说并不重要,因为他们没有看到 52% 的 acc,我认为这是一个异常值。

那么,人们通常如何进行研究呢?

ps k-fold 验证没有帮助,因为同样的情况仍然可能发生。

1个回答

根据定义,当训练准确度(或您使用的任何指标)高于您的测试时,您就有了一个过拟合模型从本质上讲,您的模型已经学习了有助于它在您的训练数据中表现更好的细节,这些细节不适用于更大的数据群体,因此会导致更差的性能。

我不确定你为什么说 k-fold 验证没有帮助。它的目的是帮助避免过度拟合您的模型。也许您没有足够的数据?像这样的声明很重要,特别是如果你要为任何研究辩护,而强烈推荐这种交叉验证方法。

你说你不能只使用一次测试集(我再次假设样本量较小?)。根据我的经验,最常见的路径是模型的 k 折交叉验证。让我们举一个样本量为 100 的 10 倍 CV 的示例,并假设您的分类问题是二元的,以简化计算。因此,我将我的数据分成 10 个不同的折叠然后我将我的模型拟合到 9/10 倍,然后预测我遗漏的 1/10。对于第一次运行,得到的混淆矩阵是:

    0  1
0   4  1
1   2  3

然后我再次重复这个分析,下一个 1/10 折叠被忽略,并在另一个 9/10 上训练。并得到我的下一个混淆矩阵。完成后,我有 10 个混淆矩阵。然后我会对这些矩阵求和(所以我预测了所有 100 个样本),然后报告我的统计数据(准确度、PPV、F1 分数、Kappa 等)。如果您的准确性不是您想要的,那么还有很多其他的可能性。

  1. 您的模型需要改进(更改参数)
  2. 您可能需要尝试不同的机器学习算法(并非所有算法都相同)
  3. 你需要更多的数据(微妙的关系很难找到)
  4. 您可能需要尝试转换数据(取决于使用的算法)
  5. 您的因变量和自变量之间可能没有关系

事实是,比您的训练更低的测试指标(例如准确性)表明您的模型过度拟合,而不是您在尝试创建新的预测模型时想要的东西。