【问题标题】:Hyperparameter optimisation in Python with a separate validation setPython 中的超参数优化与单独的验证集
【发布时间】:2021-12-18 19:25:27
【问题描述】:
【问题讨论】:
标签:
machine-learning
python
random-forest
【解决方案1】:
cv 选项确实可以。正如documentation 所暗示的,其中一个可能的输入是训练/测试索引元组的可迭代:
一个可迭代的收益(训练,测试)拆分为索引数组。
因此,将训练索引和验证索引打包为元组的大小为 1 的列表是可以的。
【解决方案2】:
我认为我们应该澄清一些措辞:
'验证集'
验证集用于在 unseen 数据集(即未用于训练的数据上评估您的模型。这是为了模拟您的模型在新数据上的表现。我们使用验证集来调整我们的超参数,例如树的数量、最大深度等,并选择在验证集上效果最好的超参数。
'交叉验证'
当您使用 5 折进行 CV(交叉验证)时,您将数据分成 5 个集合,其中集合 [1,2,3,4] 用于训练,集合 5 用于验证。然后您使用 [2,3,4,5] 进行训练并使用集合 1 进行验证 - 您重复此操作,直到所有集合(即使用 5 折时的 5 次)都被用作验证集,然后您将平均您的5 个验证分数,例如获得一个您想要(通常)最大化的分数的准确性。
回答
所以,回答你的问题;是的,您可以在您的验证集上使用 GridSearchCV,但从那以后就不再是这种情况了。您通常会执行以下操作之一:
a) 使用(即一个)验证集来调整您的超参数,如“验证集”中所述
b) 使用所有数据,即训练+验证作为一个数据集,然后按照“交叉验证”中的说明运行 5 倍网格 CV 搜索