gridsearchCV - 每个参数组合的随机数据

Posted

技术标签:

【中文标题】gridsearchCV - 每个参数组合的随机数据【英文标题】:gridsearchCV - shuffle data for every single parameter combination 【发布时间】:2021-10-18 12:22:03 【问题描述】:

我正在使用 gridsearchCV 来确定模型超参数:

pipe = Pipeline(steps=[(self.FE, FE_algorithm), (self.CA, Class_algorithm)])
param_grid = **FE_grid, **CA_grid 

scorer = make_scorer(f1_score, average='macro')
       
search = GridSearchCV(pipe, param_grid, cv=ShuffleSplit(test_size=0.20, n_splits=5,random_state=0), n_jobs=-1,
                              verbose=3, scoring=scorer)

search.fit(self.data_input, self.data_output)

但是,我相信我遇到了一些过度拟合的问题: results

我想对每个参数组合下的数据进行洗牌,有什么办法吗?目前,通过 k 折交叉验证,正在为每个参数组合评估相同的验证数据集k-fold,因此过度拟合正在成为一个问题。

【问题讨论】:

【参考方案1】:

不,没有。搜索将数据拆分一次,并为折叠和参数组合的每个组合创建一个任务 (source)。

每个参数组合的混洗可能无论如何都是不可取的:然后选择可能只是选择“最简单”的拆分而不是“最佳”参数。如果您认为您对验证折叠过度拟合,请考虑使用

    更少的参数选项 更多折叠或重复拆分* 自定义评估的 scoring 可调用对象 更保守的模型

*我最喜欢的,虽然计算成本可能太高了

【讨论】:

以上是关于gridsearchCV - 每个参数组合的随机数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 GridSearchCV 时跳过禁止的参数组合

避免 GridSearchCV 中的某些参数组合

使用GridSearchCV时跳过禁止参数组合

将 GridSearchCV 与 TimeSeriesSplit 一起使用

超参数估计的随机搜索和网格搜索的比较

在 python 中使用 gridsearchcv 进行梯度提升分类器的参数调整