我是不是需要同时执行网格搜索(使用交叉验证)和交叉验证方法?
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,尽管这将是非常计算密集型的。
【讨论】:
以上是关于我是不是需要同时执行网格搜索(使用交叉验证)和交叉验证方法?的主要内容,如果未能解决你的问题,请参考以下文章