【问题标题】:Learning curves - Why does the training accuracy start so high, then suddenly drop?学习曲线——为什么训练准确率开始这么高,然后突然下降?
【发布时间】:2016-08-27 03:16:03
【问题描述】:

我实现了一个模型,在该模型中我使用逻辑回归作为分类器,我想绘制训练集和测试集的学习曲线,以决定下一步做什么来改进我的模型。

只是为了给你一些信息,为了绘制学习曲线,我定义了一个函数,它需要一个模型、一个预分割数据集(训练/测试 X 和 Y 数组,注意:使用 train_test_split 函数)、一个评分函数作为输入,并在 n 个指数间隔子集上迭代训练数据集并返回学习曲线。

我的结果在下图中

我想知道为什么训练准确率开始这么高,然后突然下降,然后随着训练集大小的增加又开始上升?反之,对于测试的准确性。我认为准确度非常好,下降是因为一开始的小数据集产生了一些噪音,然后当数据集变得更加一致时,它开始上升,但我不确定。有人可以解释一下吗?

最后,我们是否可以假设这些结果意味着低方差/中等偏差(在我的上下文中 70% 的准确度还不错),因此为了改进我的模型,我必须求助于集成方法或极端特征工程?

【问题讨论】:

    标签: python machine-learning scikit-learn classification logistic-regression


    【解决方案1】:

    据我了解,您的学习曲线表明存在高方差情况。训练集的准确度通常开始很高,因为复杂模型通常可以很好地拟合少量样本。随着样本数量的增加,即使是复杂的模型也无法完美地分离类别,因此准确度开始下降。

    您将验证数据集称为“测试”,但通常称为验证。随着样本数的增加,训练和验证数据集的覆盖率和平稳性表明已经找到了该模型配置的最佳性能。获取更多样本数据无济于事。如果您想提高准确性,您需要找到减少偏差的方法,这通常意味着调整您的建模参数或使用不同的学习算法。

    【讨论】:

      【解决方案2】:

      我认为当数据集很小(非常高的训练准确度,低测试准确度)时,您会过度拟合训练样本。随着数据集大小的增加,您的分类器开始更好地泛化,从而提高测试数据集中的成功率。

      在 10^3 数据集之后,准确率似乎稳定在 70%,这表明您在过度拟合训练和欠拟合测试数据集之间取得了很好的平衡

      【讨论】:

      • 感谢您分享您的意见。你认为执行一些调整,如极端特征工程或集成方法会帮助我提高准确性吗?或者可能由于数据的噪声(不可挽回的错误),我已经达到了准确度限制。
      • @DiamondDogs95 你好!不幸的是,如果不知道数据是什么样子(应用程序域、功能等),很难说清楚
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 2019-08-07
      • 2021-02-28
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 2019-02-10
      相关资源
      最近更新 更多