【问题标题】:GridSearchCV & RandomizedSearchCV - do you refit the model after runningGridSearchCV & RandomizedSearchCV - 你在运行后重新调整模型吗
【发布时间】:2020-03-12 12:08:03
【问题描述】:

我有一些测试和训练数据,测试数据没有任何因变量。

我目前正在运行 GridSearchCV 或 RandomizedSearchCV 来寻找最佳参数。

我应该将我的所有 "test" X 和 y 值传递到 GridSearchCV 或 RandomizedSearchCV 吗?

我知道它会进行交叉验证,所以我相信它可以吗?

但如果是这种情况,best_estimator 适合哪些数据?所有的?还是来自其中一个折叠的数据?

之后需要重新拟合全套测试数据吗?

【问题讨论】:

  • 嗨@Lewis Morris,答案对你有帮助吗?

标签: python machine-learning scikit-learn cross-validation gridsearchcv


【解决方案1】:

这里有很多问题,我会尝试一一回答。

  1. 我是否应该将所有“测试”X 和 y 值传递到 GridSearchCV 或 RandomizedSearchCV?

您提到您的测试数据没有因变量,在这种情况下,您无法将其传递给您的模型。即使您可以访问因变量的值,也不应该将它们发送到您的 GridSearchCV 或 RandomSearchCV,这些方法将在内部创建一个验证集,您的模型将在该验证集上针对每个超参数设置进行测试。

  1. best_estimator 适合哪些数据?

这取决于您如何初始化GridSearchCV 或RandomizedSearchCV 对象,这两种方法都有一个名为refit 的参数,当设置为TRUE(默认情况下)将使用整个数据重新拟合模型。

  1. 之后需要重新拟合全套测试数据吗?

通常,您不会使用测试数据来调整超参数。您使用验证集进行此操作,一旦您冻结了您的模型,您就可以使用测试集来检查模型的性能,这将是对模型性能的无偏估计。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    没有什么可以阻止您使用 test 数据集来为您的模型找到最佳超参数。但是,在这样做之后,您无法真正判断模型的泛化程度,即在看不见的数据上的表现,因为您使用了 test 集来调整模型,使其无法测量模型的性能。

    我也相信Cross Validated 会是提出此类问题的更好地方。

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 2018-01-31
      • 2020-11-01
      • 1970-01-01
      • 2019-09-10
      • 2019-11-28
      • 2018-06-18
      • 1970-01-01
      • 2015-05-25
      相关资源
      最近更新 更多