使用 GridSearchCV 处理超参数时使用 train_test_split 和交叉验证是否有意义?

数据挖掘 交叉验证 模型选择
2022-03-05 10:28:20

我想知道我的方法是否有意义。我正在使用带有交叉验证的 GridSearchCV 来为一堆不同的模型类型(例如回归树、Ridge、弹性网络等)训练和调整模型超参数。在拟合模型之前,我留出了 10% 的样本用于使用 train_test_split进行模型验证。(见截图)。我选择具有最佳参数的模型来对看不见的验证集进行预测。

我是否遗漏了什么,因为在调整模型参数时评估模型准确性时我没有看到有人这样做?

在此处输入图像描述

2个回答

是的,这是有道理的。您的“验证”集通常称为“测试”集(至少根据我的经验)。CV 正在创建训练/验证集来选择超参数。

最完整的过程是在 90% 上使用最佳超参数再构建一个模型,并在 10% 上进行评估。此评估为您提供了对泛化误差的可靠估计。对于相同参数,它可能比您从 CV 过程中得到的误差略低;参数拟合本身可能会“过度拟合”一点

如果您不关心估计泛化误差,有些人会跳过这最后一步。不管是什么,它仍然是你能做的最好的,根据你的调整过程。我想,跳过它的好处是训练数据增加了 10%。

我想知道这个过程是否会更好:

  1. 在整个数据集上使用 GridSearchCV 找到最佳参数(无 train_test_split)

  2. 使用 k 折交叉验证(多个 train_test_split)计算指标的平均值,评估具有最佳参数的模型