首页 > 解决方案 > GridSearchCV:基于 mean_test_score 结果,predict 的表现应该差很多,但事实并非如此

问题描述

我正在尝试通过 GridSearchCV 评估回归器的性能。在我的实现中,cv 是一个 int,所以我应用了 K-fold 验证方法。看看cv_results_['mean_test_score'],k-fold 未见数据的最佳平均分数约为 0.7,而训练分数要高得多,如 0.999。这很正常,我可以接受。

好吧,按照这个概念背后的推理,当我将 应用于best_estimator_整个数据集时,我希望看到至少部分数据预测不完美,对吧?相反,对于所有数据点,预测量和实际值之间的数值偏差几乎为零。这有过拟合的味道。

我不明白这一点,因为如果我删除一小部分数据并将 GridSearchCV 应用于其余部分,我会发现与上面几乎相同的结果,但是应用于完全看不见的数据的最佳回归器预测的错误要高得多,例如10%、30% 或 50%。这是我所期望的,至少在某些方面,根据 k 折测试集的结果在整个集合上拟合 GridSearchCV。

现在,我知道这会迫使预测器查看所有数据点,但最好的估计器是 k 拟合的结果,它们中的每一个都没有看到 1/k 部分的数据。作为mean_test_score这些 k 分数之间的平均值,我希望看到一堆预测(取决于 cv 值),这些预测显示错误分布在平均错误周围,证明 0.7 分数是合理的。

标签: python-3.xscikit-learngrid-search

解决方案


GridSearchCV的refit=True参数使具有找到的最佳超参数集的估计器重新适应完整数据。因此,如果您的训练误差在 CV 折叠中几乎为零,那么您会期望它在 CV 折叠中也接近于零best_estimator_


推荐阅读