我正在使用带有交叉验证的Sklearn(5倍)。
交叉验证。我获取数据集并将其用于5倍交叉验证中。返回的分数(全5个)在.80至.85
的范围内直接培训如果我将相同的数据集与火车测试拆分(0.2测试部分)进行直接拟合和预测,则可以达到.70的精度。(召回和ROC AUC也小于此。
所以,在交叉验证中,单个折叠组合等于我们直接在火车测试中所做的事情,正确吗?那为什么有很大的区别?我已经读到,原因是交叉验证与培训数据相当。但是,当考虑了交叉验证的单个设置(组合)时,它与直接拟合和预测是否相同?如果以某种方式知道交叉验证中特定组合的确切方式将数据分解,并使用该精确的分裂方法直接使用,我不应该获得相同的精度吗?
而无需查看代码和您的数据,我只能给出一个有根据的猜测。首先,我们需要验证数据集的原因是 TUNE HyperParameters 。使用交叉验证,我们尝试找到最佳的超参数,以使我们在验证集上具有最佳的预测准确性。因此,使用超参数的最终模型它选择了过拟合验证数据集。因此,验证数据集上的预测准确性不是对模型性能的真实度量。您需要保持一个永不触摸的测试数据集来评估您的模型性能。
如果您仅使用火车/测试拆分而没有验证集,则由于
,测试数据集的性能可能会更糟- 您没有验证,您的超参数没有调整数据集
- 因为您的模型从未看到测试数据集,所以不是过于适应它。