构建用于调整超参数的网格搜索

Posted

技术标签:

【中文标题】构建用于调整超参数的网格搜索【英文标题】:Build a grid search for tuning hyperparameters 【发布时间】:2021-02-07 23:14:24 【问题描述】:

我需要构建一个网格搜索来调整超参数。假设有两个范围:lambda = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]sigma = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]。如何构建自定义网格搜索?我创建了一个自定义 SVM 类,称为 CustomSVM(),具有 fit()predict()score() 方法。我想在该类上创建一个搜索网格,看看哪些参数最适合。

我想过

for x in lambda:
   for y in sigma: 
      ...

但我不知道如何继续。

【问题讨论】:

您需要提供一个最小的示例代码,我们可以将其复制并粘贴到单个文件中并运行它 @TuanTran 我创建了一个小代码来展示我对这个问题的看法。它有帮助吗?我只是不知道如何构建网格搜索来为我的CustomSVM() 挑选最好的 sigma 和 lambda 【参考方案1】:

Sklearn 有一个网格搜索类,你能用this?

from sklearn.model_selection import GridSearchCV

parameters = 
            'lambda': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1], 
            'sigma': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]

svm_gs = GridSearchCV(customSVM, parameters)
svm_gs.fit(your.data, your.target)

我不明白为什么您的for loop 解决方案不能正常工作;您可以参考 GridSearchCV 文档以获取想法。

【讨论】:

我知道,但我不能使用 GridSearchCV @David 不使用 GridSearchCV 的原因是什么?显示的解决方案是实现目标的干净和 Pythonic(sklearnish)方式。

以上是关于构建用于调整超参数的网格搜索的主要内容,如果未能解决你的问题,请参考以下文章

我应该在 SMOTE 之前还是之后执行网格搜索(用于调整超参数)?

机器学习调参自动优化方法

使用超网格搜索和 10 倍 CV 调整参数后,随机森林模型的 AUC 较低

如何选取一个神经网络中的超参数hyper-parameters

Sklearn超参调优手段:网格搜索(Grid Search)和随机搜索(Randomized Search)

Sklearn超参调优手段:网格搜索(Grid Search)和随机搜索(Randomized Search)