我在尝试理解Gridsearchcv的逻辑是如何工作的。我查看了这里,官方文档,以及源代码,但无法理解以下内容:
Gridsearchcv背后的总体逻辑是什么?
澄清:
- 如果我使用默认的cv = 5,输入数据被分为训练、验证和测试集的百分比是多少?
- Gridsearchcv多久进行一次这样的分割,以及它如何决定哪些观测值属于训练/验证/测试集?
- 由于正在进行交叉验证,超参数调整的平均值在哪里起作用?即最优超参数值是否是优化某种平均值的一个值?
这个问题与我的担忧相同,但我不知道信息是否是最新的,并且我不确定我是否理解了那里的所有信息。例如,根据原帖,我的理解是:
- 测试集占输入数据集的25%,且仅创建一次。
- 训练集和验证集的联合相应地创建一次,这个联合占原始数据的75%。
- 然后,该过程将这75%进一步分成5个(因为cv = 5)分割,每个分割为60%训练和15%验证。
- 最优超参数值是优化这些5个分割中某个指标的平均值的值。
这种理解是否正确且现在仍然适用?以及该过程是如何进行最初的25%-75%分割的?
回答:
- 首先,您将数据分割成训练和测试集。测试集被留出来用于模型训练后的测试和优化。
gridsearchcv
使用您数据的75%并将其分成5个部分。首先它训练4个部分并在1个部分上进行验证,然后引入之前留出的部分进行验证并在新的部分上进行测试,等等…共5次。
然后可以看到每次运行的表现以及它们的平均值,以了解您的模型整体表现如何。
- 由于您在进行
gridsearch
,在建模结束时,best_params
将被保存以预测您的测试集。 - 总结一下,最佳参数将在整个训练结束后被选中并用于您的模型,因此,您可以轻松地使用它们来
predict(X_test)
。
- 通常,如果您不进行交叉验证,模型将尝试使用预设参数优化其权重,而留出的测试集将帮助评估模型表现。然而,对于真正的模型训练,重新分割训练数据为训练和验证集非常重要,您使用验证集来手动调整模型的参数。然而,过度调整模型以在验证集上获得最佳表现是作弊行为。
理论上的K折
更多细节