我是不是需要同时执行网格搜索(使用交叉验证)和交叉验证方法?

Posted

技术标签:

【中文标题】我是不是需要同时执行网格搜索(使用交叉验证)和交叉验证方法?【英文标题】:Do I need to perform both gridsearch (with cross validation) and then a cross validation method?我是否需要同时执行网格搜索(使用交叉验证)和交叉验证方法? 【发布时间】:2019-09-29 03:24:33 【问题描述】:

我将我的数据集拆分为训练、验证和测试数据,然后对训练数据执行网格搜索交叉验证。这足以作为交叉验证方法,还是我需要在我的 GridSearchCV 之后实现 k 折交叉验证?我有点困惑,因为我认为网格搜索只能帮助我找到最佳超参数。

【问题讨论】:

好吧,如果您要将数据拆分为训练、开发和测试,为什么要使用 CV?我认为你应该使用你的开发集来适应你的估计器的超参数。 CV 的想法是当您没有足够的数据来拆分为训练和测试或训练、开发和测试时。 【参考方案1】:

网格搜索是对模型超参数的详尽搜索,但如果您想使用它,还包括交叉验证。使用 CV 运行网格搜索需要更多时间,因为它是一种详尽的方法。 sklearn 中的网格搜索有一个交叉验证选项cv。关于这个https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html的更多信息请参考官方文档

您也可以像这样为您的网格搜索提供一个 KFold 类

validation = KFold(n_splits=10, shuffle=True)
clf = GridSearchCV(..., cv=validation)
clf.fit(X,y)

您还可以在每次交叉验证迭代中运行 CV 和 gridsearch 的组合,即 gridsearch,尽管这将是非常计算密集型的。

【讨论】:

以上是关于我是不是需要同时执行网格搜索(使用交叉验证)和交叉验证方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有交叉验证的情况下运行网格搜索?

我应该如何拆分我的数据以进行交叉验证和网格搜索?

交叉验证和网格搜索有啥区别?

K-近邻算法交叉验证,网格搜索

机器学习交叉验证和网格搜索案例分析

机器学习之交叉验证和网格搜索