交叉验证和测试性能的差异

问题描述 投票:0回答:1

我正在使用 sklearn 进行交叉验证(5 倍)。

交叉验证。 我获取数据集并将其用于 5 倍交叉验证。 返回的分数(全部 5 个)在 0.80 到 0.85 范围内

直接培训 如果我使用相同的数据集和训练测试分割(0.2 测试部分)并直接拟合和预测,我会得到大约 0.70 的准确度。 (召回率和 ROC AUC 也小于该值)。

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

machine-learning scikit-learn cross-validation
1个回答
1
投票

在不查看代码和数据的情况下,我只能给出有根据的猜测。首先,我们需要验证数据集的原因是为了调整超参数。使用交叉验证,我们尝试找到最佳超参数,为我们提供验证集上的最佳预测精度。因此,最终模型及其选择的超参数“过度拟合”验证数据集。因此,验证数据集的预测准确性并不是模型性能的真实衡量标准。您需要有一个从未接触过的测试数据集来评估您的模型性能。 如果仅在没有验证集的情况下使用训练/测试拆分,则测试数据集上的性能可能会更差,因为

您的超参数未调整,因为您没有验证 数据集
  1. 因为你的模型永远看不到测试数据集,所以它不是 过度拟合。
© www.soinside.com 2019 - 2024. All rights reserved.