更新于 2026年8月10日

网格搜索#


术语解释#

网格搜索(Grid Search) 是机器学习中用于自动化模型选择和超参数调优的一种核心技术。在 scikit-learn (sklearn) 框架中,它通常通过 GridSearchCV 模块来实现。

网格搜索是指事先为每一个待调超参数列出候选取值,然后算法会穷举所有可能的超参数组合,并针对每一组组合进行训练与验证。 同时,为了确保评估结果的稳健性,网格搜索通常与 K 折交叉验证结合使用。例如,如果有学习率有3个候选值、惩罚项系数有4个候选值,则一共便有 12 组超参数组合。如果此时采用 5 折交叉验证,网格搜索将自动进行 60 次模型拟合。搜索完成后,它能直接输出最优的超参数组合以及此时对应的模型最高得分。

在使用 scikit-learn 中的 GridSearchCV 来完成这一过程是会看到类似如下输出结果:

1 Fitting 5 folds for each of 12 candidates, totalling 60 fits
2 [CV] END ...................n_neighbors=5, p=1; total time=   0.0s
3 [CV] END ...................n_neighbors=5, p=2; total time=   0.0s
4 .....
5 最佳模型: {'n_neighbors': 5, 'p': 1 准确率0.971}

除此以外,由于每一组参数之间都是相互独立,换句话说以任意两组参数来训练一个模型时都不会相互影响到对方的结果,因此在使用网格搜索时,常常还伴随着并行执行。相关介绍及使用示例可参见机器学习栏目「第5.3.3节」 内容。


出现动机#

  • 手动调参繁琐:超参数(如 KNN 中的 $K$ 值和距离度量 $P$ 值、学习率 $\alpha$ 等)不能通过数据集训练更新得到,必须手动设定。当超参数较多时,手动通过多层循环进行遍历和交叉验证的代码实现非常臃肿且容易出错。

  • 量化评估需求:在无法通过可视化手段直观观察模型拟合情况时,需要一种客观且标准化的方法来对比不同参数配置下的模型效果,以寻找低偏差与低方差之间的平衡。

  • 提升效率:开发者需要一种能够快速完成模型筛选并支持并行计算的工具,以应对日益复杂的调参任务。


优点缺点#

  • 优点:

    • 简单易用且接口统一:在 sklearn 中,只需几行代码即可实现复杂的调参逻辑,显著简化了开发流程。

    • 支持并行搜索:网格搜索支持以并行方式运行(如通过指定 n_jobs=-1 使用所有 CPU 核心),从而大幅提高在大规模参数空间下的训练速度。

    • 自动化与客观性:它能自动执行训练、验证、评估和最优模型筛选的全过程,避免了手动划分数据集可能带来的偶然性。

  • 缺点:

    • 计算开销巨大:随着超参数数量及其候选值的增加,拟合次数会呈指数级增长。例如,在手写体识别任务中,8 个学习率、7 个惩罚系数配合 5 折交叉验证,总共需要拟合模型达 280 次。

相关术语#

  • 交叉验证
阅读 --

5.3 sklearn接口与示例代码

在这节内容中,我们首先通过一个引例介绍了K近邻分类器的主要思想,接着介绍了K值对算法结果的影响,以及介绍了衡量样本间距离的不同度量方式,最后我们通过开源的sklearn框架介绍了如何建模及使用K近邻分类器,并且同时还总结了sklearn中模 …