【问题标题】:Kfold Cross Validation and GridSearchCVKfold 交叉验证和 GridSearchCV
【发布时间】:2018-08-27 16:26:24
【问题描述】:

嗯,我试图了解在算法中如何以及在哪个点应用 Kfold CV 和 GridSearchCV。此外,如果我理解正确,GridSearchCV 用于超参数调整,即参数的哪些值将给出最佳结果,而 Kfold CV 用于更好地泛化,以便我们在不同的折叠上进行训练,因此如果数据是有序的,则减少偏差以某种特定的方式,因此增加了泛化性。现在的问题是,GridSearchCV 是否也使用 CV 参数进行交叉验证。那么为什么我们需要 Kfold CV,如果我们需要,我们是否在 GridSearchCV 之前做呢?简要概述该过程将非常有帮助。

【问题讨论】:

    标签: machine-learning scikit-learn cross-validation hyperparameters


    【解决方案1】:

    网格搜索用于选择预测算法的超参数的最佳组合(调整估计器的超参数),而 KFold 提供训练/测试索引以分割训练/测试集中的数据。它将数据集拆分为 k 个连续折叠(默认情况下不打乱)。

    然后将每个折叠用作一次验证,而剩余的 k - 1 个折叠形成训练集。它用于更好地衡量预测准确性(我们可以将其用作模型拟合优度的代理)。

    【讨论】:

      【解决方案2】:

      GridSearchCV 是比KFold 更高级别的构造。前者使用后者(或其他类似的)。

      KFold 是一个相对较低级别的构造,它为您提供一系列训练/测试索引。您可以使用这些索引来做几件事,包括查找模型的 OOB 性能和/或调整超参数(基本上是根据 OOB 性能以某种方式搜索超参数)。

      GridSearchCV 是一个更高级别的构造,它采用 CV 引擎,如KFold(在其cv 参数中)。它使用 CV 引擎搜索超参数(在这种情况下,使用网格搜索参数)。

      【讨论】:

      • 感谢您解释差异。我还想再问一个问题,因为 gridsearchCV 确实使用 k 折或其他类似的方法,并直接给出参数的最佳值,并且可以使用 k 折来获得与从 gridsearchCV 获得的相同结果,使用循环进行参数确定鉴于泛化性能,所以它更像是一种非此即彼的情况,对吗?我的意思是我们可以使用它们中的任何一个,或者两者都必须使用。
      • 非常粗略,我也认为这是一个非此即彼的情况。一个例外是嵌套交叉验证,您可以在外部运行 KFold 在一个管道上,该管道有一个正在运行 GridSearchCV 的步骤,但是即使那样,在每个级别上,您也只会运行其中一个.
      猜你喜欢
      • 2019-04-28
      • 1970-01-01
      • 2019-09-06
      • 2018-08-16
      • 2020-08-31
      • 2013-09-22
      • 2020-10-17
      • 2018-06-24
      • 2018-05-07
      相关资源
      最近更新 更多