为什么测试数据的 100% 准确率不好?

数据挖掘 机器学习 神经网络 深度学习 统计数据
2021-09-16 15:29:42

我在一次面试中被问到这个问题,但无法给出满意的答案,不仅达到了面试官的期望,也没有达到我自己的期望。问题仅如上,他后来举了一个例子,好像为什么我的模型可以 100% 准确地预测明天的石油价格,为什么这可能很糟糕,或者为什么有一个模型 100% 准确不好,或者是这样吗?问题中有什么或有更深层次的解释?

4个回答

我看到了两种方法: 1 - 有错误 2 - 没有错误。

1 - 查找错误

  • 您可能已经提交了数据泄漏。您已在其中一项功能中添加了目标,并找到了模型。

  • 验证不正确,您有一个时间序列并且您已经完成了随机验证。

  • 您的测试只有几个实例,或者它是唯一的。

  • 从火车上重复测试。

2 - 没有错误

如果预测是正确的并且你有 100% 的准确率,那么就不需要进行机器学习。打开模型找到在哪里做出决定,不要做机器学习,做经典建模。

例如,如果您的模型是决策树,只需绘制或打印它并获得决策并自己放置。

在对以前开发的算法进行建模时,有时会发生这种情况。新的 ML 模型能够了解之前发生的事情。

最短的可能解释:您可能过度拟合您的数据。

当然,这是在测试集中发生的,而不是在训练集中发生的……但是如果您错误地将数据从训练集中泄漏到测试集中怎么办(相信我)。

当你获得 100% 的准确率时,它很可能是一种过度拟合,这最终是一个错误。同样,即使在测试集上……也可能只是数据泄漏。

如果您的模型具有100看不见的测试数据的准确性,我将解释一些情况。

  1. 如果您的情况不会随着时间而改变并且没有例外,那么所提到的准确性非常令人满意,您可以自信地说您的模型已经学会了它应该做什么。例如,您可以实现一个LSTM能够找到二进制数总和的网络。在这种情况下,由于您总是知道一些典型的10+01 价值观总是 100,这是不变的事实, 100% 是可以接受的。
  2. 有些情况下,当前的情况与明天的情况不同。这意味着您要对其建模的自然行为不是函数,而是分布。这意味着对于当前的特征空间,您可能会有不同的结果。这是在当前特征空间中不同类别的分布(即在分类任务中)重叠的情况。这意味着你不可能拥有100准确性,因为您要建模的性质不是函数。如果我想再解释一下,有两种情况。首先,分布的性质是时变或不变的。前一种情况是受先前结果影响的。由于分布的重叠,后一种情况可能具有相同输入特征的矛盾结果。

不确定这是否会是一个令人满意的答案……每当我在测试数据上获得 100% 的准确性时,我想到的第一件事就是“我一定做错了什么”。

最常见的是,我向数据集添加了一个特性,它实际上是目标变量的一种代理。也就是说,我犯了一个愚蠢的错误。

但有时这并不是一个愚蠢的错误,比如添加一个特性。我真的不记得来源,因此我无法链接到它。但我在播客中听说有些人试图根据某些特征(我的意思不是从癌细胞图像或类似的东西)对癌症患者进行分类,他们建立了一个非常简单且出奇的好模型(不是 100 % 准确率)。关键是他们包含了某种患者的身份作为特征,并且该身份以某种方式包含有关治疗他们的医院的信息。有几家医院治疗了非常糟糕的病例,因此该模型是了解去那几家医院的任何人都真的病了,而不是真正了解谁生病了。

希望能帮助到你。