sklearn Grid Search 网格搜索

1. 定义

Grid Search:选取模型的最优超参数、通过优化超参数之间的最优组合来改善模型性能。

(获取最优超参数的方式可以绘制验证曲线,但是验证曲线只能每次获取一个最优超参数。如果多个超参数有很多排列组合的话,就可以使用网格搜索寻求最优超参数的组合。)

(为什么叫网格搜索?以有两个参数的模型为例,参数a3种可能,参数b4种可能,把所有可能性列出来,可以表示成一个3*4的表格,其中每个cell就是一个网格,循环过程就像是在每个网格里遍历、搜索,所以叫grid search。)

2. 原理

首先为不同的超参数设定一个值列表,然后计算机会遍历每个超参数的组合,实例化给定的模型,做cv次交叉验证,将平均得分最高的超参数组合作为最佳的选择,返回模型对象。

3. sklearn 实现网格搜索: GridSearchCV

交叉验证经常与网格搜索进行结合,作为参数评价的一种方法,这种方法叫做grid search with cross validation。sklearn因此设计了一个这样的类GridSearchCV,这个类实现了fit,predict,score等方法,被当做了一个estimator,使用fit方法,该过程中:(1)搜索到最佳参数;(2)实例化了一个最佳参数的estimator

4. GridSearchCV的sklearn官方网址:

http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV

class sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None, n_jobs=None, iid='deprecated', refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score=nan, return_train_score=False)

  • estimator选择使用的分类器
  • param_grid需要最优化的参数的取值,值为字典或者包含字典的列表
  • scoring=None模型评价标准,默认None,使用estimator的误差估计函数。根据所选模型不同,评价准则不同,比如scoring=”accuracy”,详见https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter
  • n_jobs进程个数,None为1
  • iid 该参数将弃用
  • refit=True默认为True,即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集
  • cv=None交叉验证参数,默认None,使用5折交叉验证
  • verbose=0日志冗长度
  • pre_dispatch=‘2*n_jobs’指定总共分发的并行任务数
  • error_score=nan如果估计器拟合中出现错误,则分配给score的值
  •  return_train_score=False如果为False,则cv_results_属性将不包括训练分数

5. 实现例子

sklearn Grid Search 网格搜索

运行结果:

sklearn Grid Search 网格搜索

Ref

  1. https://www.cnblogs.com/ysugyl/p/8711205.html
  2. https://blog.csdn.net/MR_Trustin/article/details/96614446
  3. https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV
  4. https://blog.csdn.net/sinat_32547403/article/details/73008127
  5. 模型评估和超参数调整(四)——网格搜索(grid search)https://blog.csdn.net/Amy_mm/article/details/79902477
  6. scikit-learn中GridSearchCV的使用:多模型,可视化https://blog.csdn.net/weixin_41171061/article/details/83859856