哪个模型:来自 gridsearchCV 或所有训练数据的最佳估计器?

KJA*_*KJA 2 scikit-learn grid-search

当涉及到网格搜索和拟合最终模型时,我有点困惑。我将其一分为二:训练和测试。测试集仅用于最终评估。我只使用训练数据执行网格搜索。

假设有人使用交叉验证对多个超参数进行了网格搜索。网格搜索提供了超参数的最佳组合。下一步是训练模型,这就是我感到困惑的地方。我看到两种可能性:

1)不要训练模型。使用网格搜索中最佳模型的参数。

或者

2)不要使用网格搜索中最佳模型的参数。使用网格搜索中的最佳超参数组合在完整训练集上训练模型。

什么是正确的方法,1 或 2?

小智 5

这可能晚了,但可能对其他人有用。

GridSearchCV有一个名为 的属性refitTrue默认情况下设置为。这意味着在执行 k 折交叉验证(即对您传入的数据子集进行训练)之后,它会使用网格搜索中的最佳超参数在完整的训练集上重新拟合模型。

据我所知,你的问题大概可以概括为:

假设您使用 5 折交叉验证。然后您的模型只适合 4 折,因为第五折用于验证。那么您是否需要在整个火车上重新训练模型(即所有 5 折的数据)?

答案是否定的,前提是您设置refitTrue,在这种情况下,GridSearchCV将使用交叉验证后找到的最佳超参数对整个训练集执行训练。然后它将返回经过训练的 estimator 对象,您可以在该对象上直接调用该predict方法,您通常会这样做。

参考:https : //scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html