【问题标题】:Difference in cross validation and testing performance交叉验证和测试性能的差异
【发布时间】:2023-03-27 04:23:01
【问题描述】:

我正在使用带有交叉验证的 sklearn(5 折)。

交叉验证。 我得到我的数据集并在 5 折交叉验证中使用它。 返回的分数(全部 5 个)在 0.80 到 0.85 的范围内

直接培训 如果我使用相同的数据集和训练测试拆分(0.2 个测试部分)并直接拟合和预测,我会得到大约 0.70 的准确度。 (recall 和 ROC AUC 也比这小)。

所以, 在交叉验证中,单个折叠组合等于我们在训练测试拆分中直接执行的操作,对吗?那为什么会有很大的不同呢?我已经读过原因是交叉验证过度适合训练数据。但是当考虑交叉验证的单一设置(组合)时,它与直接拟合和预测不一样吗?如果我以某种方式知道交叉验证中特定组合拆分数据的确切方式,并使用该精确拆分方法直接使用,我不应该获得相同的准确性吗?

【问题讨论】:

    标签: scikit-learn cross-validation


    【解决方案1】:

    没有查看代码和您的数据,我只能给出一个有根据的猜测。首先,我们需要验证数据集的原因是调整超参数。使用交叉验证,我们尝试找到在验证集上为我们提供最佳预测精度的最佳超参数。因此,具有它选择的超参数的最终模型过拟合验证数据集。因此,验证数据集的预测准确性并不是对模型性能的真实衡量。您需要有一个从未接触过的测试数据集来评估您的模型性能。

    如果您仅在没有验证集的情况下使用训练/测试拆分,则测试数据集的性能可能会更差,因为

    1. 您的超参数未调整,因为您没有验证 数据集
    2. 因为您的模型永远不会看到测试数据集,所以它不是 过拟合。

    【讨论】:

      猜你喜欢
      • 2019-11-09
      • 2020-12-16
      • 2018-09-07
      • 2018-07-20
      • 2018-11-08
      • 2015-12-11
      • 2019-12-26
      • 1970-01-01
      • 2020-10-31
      相关资源
      最近更新 更多