GridSearchCV的refit和scorer的结合不清楚

Combination of GridSearchCV's refit and scorer unclear

我使用 GridSearchCV 在我的嵌套交叉验证的内部循环中找到最佳参数。 'inner winner' 是使用 GridSearchCV(scorer='balanced_accuracy') 找到的,因此据我了解文档,内部折叠平均具有最高平衡精度的模型是 'best_estimator'。我不明白 GridSearchCVrefit 的不同论点与 scorer 论点结合起来有什么作用。如果 refit 为 True,当重​​新拟合到数据集时,将使用什么评分函数来估计 'inner winner' 的性能?传递给 scorer 的相同评分函数(所以在我的例子中是 'balanced_accuracy')?为什么还可以将字符串传递给 refit?这是否意味着您可以对 1.) 找到 'inner winner' 和 2.) 使用不同的函数来估计 'inner winner' 在整个数据集上的性能?

refit=True时,sklearn使用整个训练集来重新拟合模型。因此,没有留下任何测试数据来估计使用任何 scorer 函数的性能。

如果您在 GridSearchCV 中使用多个 scorer,可能 f1_scoreprecision 以及您的 balanced_accuracy,sklearn 需要知道其中的哪一个 scorer 用于查找您所说的 "inner winner"。例如,KNNf1_score 可能在 K=5 时效果最好,但 accuracy 可能在 K=10 时效果最好。 sklearn 无法知道哪个超参数值 K 是最好的。

为了解决这个问题,您可以将一个字符串 scorer 传递给 refit 以指定 scorer 中的哪一个最终应该决定最佳超参数。然后,这个最佳值将用于使用完整数据集重新训练或重新拟合模型。所以,当你只有一个 scorer,就像你的情况一样,你不必担心这个。只需 refit=True 就足够了。