自动调参——网格搜索gridSearchCV

注:转载请注明出处。

  本篇文章主要记录了网格搜索gridSearchCV的学习笔记,如果想看自动化调参中的网格调参和遗传优化算法TPOT,请查看我另外两篇文章:遗传优化算法TPOT贝叶斯优化算法hyperopt

1、算法思想

  1. 用于系统地遍历多种参数组合,通过交叉验证确定最佳效果的超参数。
  2. 网格搜索其实就是很简单的穷举搜索,在所有候选参数中,通过循环遍历,尝试每一种可能性,找出表现最好的一组参数。例如将参数a、b的各种情况进行罗列,a有3个候选值,b有4个候选值,则会生成12种候选情况,生成的表格的每个网格都会被搜索,所以叫网格搜索。
  3. 网格搜索:sklearn.model_selection.GridSearchCV是交叉验证的网格搜索算法,所以其实只要将数据划分为train和test,train在内部做算法时其实已经交叉验证过了,所以不需要额外划分验证集。

2、特点

gridSearch调参方法存在的共性弊端是:耗时、参数越多、候选值越多,耗费时间越长,所以一般情况下,先确定一个大的范围,然后再细化。

3、常见参数

  1. estimator:所使用的分类器,并且传入所需要确定最佳的参数之外的其他参数。
1
2
estimator=RandomForestClassifier(参数=参数值)
## 没有写明的参数,为默认参数。
  1. param_grid:需要最优化的参数的取值,即网格搜索的值域范围。
  2. scoring:评价标准。当为None时,需要score函数。
  3. cv:交叉验证参数:指定使用几折交叉,默认None,使用三折交叉验证。
  4. refit:默认是True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与验证机进行训练,作为最终用于性能评估的最佳模型。即在搜索参数结束后,用最佳的参数结果再次fit一遍全部数据集。
  5. iid
  6. verbose: 日志冗长度,0:不输出训练过程,1:偶尔输出,>1:对每个子模型都输出。
  7. n_jobs: 并行数,-1:跟CPU核数一致;1:默认值。
  8. pre_dispatch:指定总共分发的并行任务数

    4、实际应用

  9. 一般会使用较大的搜索范围和较大的步长,来寻找全局最优值可能的位置。
  10. 然后逐渐缩小范围和步长,来寻找更精确的最优值。
  11. 使用这种方法可以降低所需的时间和计算量,但是可能错过全局最优值。
      

    5、参考

  12. https://www.jianshu.com/p/55b9f2ea283b
  13. https://www.biaodianfu.com/gridsearchcv.html