19 超参数调优:网格搜索
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
网格搜索适合参数范围不大、候选值明确的情况。范围一大,组合数量会快速膨胀,训练成本很容易失控。
调参工具可对照 scikit-learn grid search 文档。
我会先用小网格找大致方向,再扩大重点参数。一次性全量搜索,常常只是把机器跑热。
在机器学习模型的训练过程中,选择合适的超参数往往会显著影响模型的性能。如何有效地寻找超参数的最佳组合是每个数据科学家都需要面对的重要问题。上篇文章我们讨论了模型的评估与比较,今天我们将深入探讨一种高效的超参数调优方法——网格搜索(Grid Search)。
什么是网格搜索?
网格搜索是一种穷举式的超参数搜索方法。通过定义一个超参数值的集合(网格),网格搜索会对每一种可能的组合进行训练和评估,从而找到能够使模型性能最优的超参数配置。
使用 Scikit-Learn 网格搜索时,先看参数范围、交叉验证、评分指标、并行设置、最佳参数和过拟合风险。
网格搜索的基本思想
假设一个机器学习模型有两个超参数:
- :正则化强度
- :核函数的参数
读完《超参数调优:网格搜索》后,可以回头问三件事:它解决什么问题,哪一步最容易出错,自己能否拿一个小例子跑通。
我们可以定义如下的超参数值网格:
对于每一种组合,我们都会训练模型并通过交叉验证来评估模型的性能。最终,我们选择在验证集中表现最好的超参数组合。
实际案例
让我们看一个具体的例子,假设我们使用Scikit-Learn中的支持向量机(SVM)进行分类任务,接下来我们将使用网格搜索对模型的C和gamma超参数进行调优。
1. 导入必要的库
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.svm import SVC
from sklearn.metrics import classification_report
2. 准备数据
我们使用Iris数据集进行模型训练和评估。
# 加载数据
data = load_iris()
X = data.data
y = data.target
# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
3. 定义超参数网格
接下来,我们定义我们想要搜索的超参数网格。
param_grid = {
'C': [0.1, 1, 10],
'gamma': [0.01, 0.1, 1]
}
4. 进行网格搜索
使用GridSearchCV来寻找最佳超参数组合。这里,我们会使用5折交叉验证来评估模型。
# 创建SVM模型
model = SVC()
# 创建网格搜索对象
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5)
# 执行网格搜索
grid_search.fit(X_train, y_train)
5. 查看最佳参数和模型性能
完成网格搜索后,我们可以查看最佳参数和最佳模型的性能。
# 输出最佳超参数
print("最佳超参数:", grid_search.best_params_)
# 使用最佳超参数训练模型并测试性能
best_model = grid_search.best_estimator_
# 预测
y_pred = best_model.predict(X_test)
# 打印分类报告
print(classification_report(y_test, y_pred))
在上述代码片段中,我们首先定义了一个SVC模型,然后通过GridSearchCV对超参数进行网格搜索。最终选取了最佳的超参数,并在测试集上进行了预测,得到了分类报告的结果。
如果《超参数调优:网格搜索》还没完全消化,可以从这张卡片的四个动作重新走一遍。
回看《超参数调优:网格搜索》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。
总结
网格搜索是一种简单却强大的超参数调优方法,通过遍历所有可能的参数组合,确保我们可以找到最佳的超参数配置。尽管这种方法在计算上可能比较昂贵,但它为我们提供了准确的模型性能和超参数选取的依据。
在下一篇文章中,我们将讨论随机搜索(Random Search),它是一种效率更高的超参数调优方法,特别适用于大规模的超参数空间。敬请期待!
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
超参数调优:网格搜索适合谁读?
这是 Scikit-learn 入门 系列第 19 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇Scikit-learn 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读