如果测试精度足够高,过拟合好吗?

数据挖掘 scikit-学习 随机森林 过拟合
2021-09-23 10:07:03

我正在尝试构建一个二进制分类器。我已经尝试过具有各种不同结构和参数的深度神经网络,但我没有比这更好的了

Train set accuracy : 0.70102
Test set accuracy : 0.70001

然后我尝试了机器学习算法,如 KNN 和决策树等。我发现Scikit-learn的随机森林分类器n_estimators=100给了我

Train set accuracy : 1.0
Test set accuracy : 0.924068

我尝试调整其他参数如max_depthcriterion但训练集准确率的下降也导致测试集准确率下降。喜欢

Train set accuracy : 0.82002
Test set accuracy : 0.75222

我的问题是,这是

Train set accuracy : 1.0
Test set accuracy : 0.924068

可以接受吗?即使模型过度拟合,测试集的准确性也更好。

2个回答

如果您正确隔离了测试集以使其不影响训练,则您应该只查看测试集的准确性。以下是我的一些评论:

  • 让你的模型在火车上表现出色本身并不是一件坏事。相反,如果测试准确度相同,您希望选择具有更好训练准确度的模型。
  • 你想看看测试的准确性。这是您最关心的问题。所以选择在测试集上提供最佳性能的模型。
    • 当您的训练准确度非常高(甚至 100%)时,不会出现过度拟合。这是当你的训练准确度很高你的测试准确度很低的时候。
    • 您的训练准确度高于您的测试准确度并没有异常。毕竟,您的模型在训练集上具有优势,因为它已经给出了正确的答案。

归根结底,训练机器学习模型就像为考试而学习。您(模型)使用学习资源,如书籍、过去的考试、闪存卡等(训练集)在测试/考试(测试集)中表现良好。完全了解您的学习资源并不意味着您过度拟合。如果这就是你所知道的并且在考试中表现不佳,那么你会过度拟合。

模型的目的始终是最小化损失。不提高准确性。因此,使用任何优化器(如 adam 优化器(一种常见的优化器))的任何模型的参数都将尝试获得朝向损失最小的参数值的动量,即“最小偏差”。

在以下情况下,模型可能会过拟合:

  • 数据很小
  • 训练与测试比率不平衡
  • 模型有不正确的门或神经元过于僵化。(神经元对最近的输入赋予高权重年龄并保持锁定而不考虑其他输入)。
  • 在 DNN 中,当中间权重没有忘记/重置因子时。通常为 0.2

但在你的情况下,我们没有像 0.99< 这样的极端准确度。因此可以肯定地说您的模型表现良好并且没有过度拟合。好的模型不会过度拟合,在您的情况下,它们会严格收敛到任意值 0.924。