【问题标题】:Checking Overfitting [closed]检查过度拟合[关闭]
【发布时间】:2020-06-21 16:56:03
【问题描述】:

我想确保我的模型没有过度拟合。我使用交叉验证检查了过度拟合。所有折叠的结果都很接近。但同时我检查了训练和测试预测。测试大小为 0.25。训练和测试的预测是如此不同。这表明我的模型过度拟合。我应该相信哪个结果?交叉验证或测试/训练预测。我的模型是否过拟合?

注意:我用的是python。用于交叉验证、训练测试拆分和建模的 Sklearn

【问题讨论】:

  • 如果我在读你,75% 的数据用于训练你的模型,25% 用于测试它?然后你执行了交叉验证程序?您的数据集中有多少个观察值,您使用了多少个折叠进行交叉验证?
  • 我的数据观察是28000行。测试大小为 0.25。火车预测为 0.99。测试预测为 0.74。交叉验证是 10 倍。每个折叠精度在 0.70 到 0.77 之间。

标签: python scikit-learn data-science cross-validation training-data


【解决方案1】:

我不是专家,但首先我建议您相信交叉验证结果。 交叉验证将数据分为 N 次拆分,每次使用 N-1 进行训练,使用 1 进行测试,因此其结果显示更真实的结果。 我建议您还 o 打乱数据并计算评估的置信区间。

95% 置信区间可以计算为:

aux = 1.96 * sqrt((evaluation*(1-evaluation))/num_test_samples)

具有相应置信区间的交叉验证评估,请记住,如果我没记错的话,您也可以在 cross_validate() 方法中获得训练评估。

通过这三件事,您可以看到火车评估和测试评估的变化有多大。 如果您的训练评估对您的测试评估非常大,则您可能存在过度拟合。

当您的训练结果与您的测试评估相比非常大并且训练准确度趋于 100% 时,您就知道您的模型没有很好地泛化。 特别是在神经网络中,很容易通过 epoch pass 看到。

【讨论】:

    【解决方案2】:

    从您给出的准确度来看,这两种方法都表明您存在过度拟合。交叉验证只是测试模型泛化程度的一种更准确的方法,所以不要比较折叠,将平均交叉验证准确度与训练准确度进行比较,因为这些差别很大,你有过度拟合

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-28
      • 2021-09-03
      • 1970-01-01
      • 2013-05-24
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多