【问题标题】:Does GridSearchCV perform cross-validation?GridSearchCV 是否执行交叉验证?
【发布时间】:2018-08-16 01:04:18
【问题描述】:

我目前正在研究一个问题,该问题比较三种不同机器学习算法在同一数据集上的性能。我将数据集划分为 70/30 个训练/测试集,然后使用 GridSearchCV 和X_train, y_train 对每个算法的最佳参数进行网格搜索。

第一个问题,我是想在训练集上执行网格搜索还是在整个数据集上执行网格搜索?

第二个问题,我知道 GridSearchCV 在其实现中使用了 K-fold,如果我在 GridSearchCV 中比较的所有三种算法都使用相同的X_train, y_train,这是否意味着我执行了交叉验证?

任何答案将不胜感激,谢谢。

【问题讨论】:

    标签: python machine-learning scikit-learn cross-validation grid-search


    【解决方案1】:

    scikit 中名称以CV 结尾的所有估计器都执行交叉验证。 但是你需要保留一个单独的测试集来衡量性能。

    因此,您需要拆分整个数据以进行训练和测试。暂时忘记这个测试数据。

    然后将此火车数据仅传递给网格搜索。 GridSearch 会将这些训练数据进一步拆分为训练和测试,以调整传递给它的超参数。最后用找到的最佳参数将模型拟合到整个火车数据上。

    现在您需要在开始时保留的测试数据上测试此模型。这将为您提供模型的接近真实世界的性能。

    如果您将整个数据用于 GridSearchCV,那么测试数据会泄漏到参数调整中,然后最终模型可能无法在较新的未见数据上表现得那么好。

    您可以查看我的其他答案,其中更详细地描述了 GridSearch:

    【讨论】:

    • GridSearchCV 有一个参数 cv,您可以在其中指定要使用的 CV 的折叠数。这是否意味着,例如,当我有 10 种可能的超参数组合要测试时,GridSearchCV 会使用 5 倍 CV(所以基本上是 10x 5 倍 cv)来测试 所有这些组合?
    • @Psychotechnopath 是的。这将在网格搜索开始时打印。您可以使用GridSearchCV 中的verbose 参数获取更多详细信息。
    • 说我想使用 2 折,并且我正在使用时间序列。首先,我需要拆分我的数据集,例如,使用tscv = TimeSeriesSplit()TimeSeriesSplit() 已经为这 2 折提供了训练/测试集(我们称它们为 train1/test1 和 train2/test2)。然后,我可以将这个参数tscv 传递给GridSearchCV (..., cv = tscv, ...),它会再次将我从TimeSeriesSplit(train1 和 train2)获得的火车部分拆分为“较小”的火车/验证集(smalltrain1/validation1 和smalltrain2/validation2) 来训练和评估我的模型?
    • @MuriloAraujoSouza 不,它将使用 tscv 给出的相同拆分。或者您是说首先将数据分为训练和测试,然后仅将训练数据与 tscv 一起传递到网格搜索?如果是,那么是的,它会将您的原始火车数据集划分为较小的火车和验证数据集。
    • 我使用tscv = TimeSeriesSplit(n_splits = 2),之后我使用grid_search_RF = GridSearchCV(estimator=RandomForestClassifier(), param_grid=param_RF, cv = tscv),然后我将我的模型放入我的整个数据集grid_search_RF.fit(x, y)。不确定这些步骤是否正确。
    【解决方案2】:

    是的,GridSearchCV 执行交叉验证。如果我正确理解了这个概念 - 您希望模型不显示您的部分数据集以便对其进行测试。

    因此,您根据训练数据集训练模型并在测试数据集上对其进行测试。

    Here I was doing almost the same - 你可能想检查一下...

    【讨论】:

      猜你喜欢
      • 2019-04-28
      • 2018-08-27
      • 1970-01-01
      • 2019-08-31
      • 2020-02-11
      • 2018-03-30
      • 2020-10-17
      • 2021-09-10
      • 2020-03-07
      相关资源
      最近更新 更多