【深度学习|学习笔记】网格搜索(GridSearchCV)和随机搜索(RandomizedSearchCV)详解,附代码。

【深度学习|学习笔记】网格搜索(GridSearchCV)和随机搜索(RandomizedSearchCV)详解,附代码。

【深度学习|学习笔记】网格搜索(GridSearchCV)和随机搜索(RandomizedSearchCV)详解,附代码。


文章目录

  • 【深度学习|学习笔记】网格搜索(GridSearchCV)和随机搜索(RandomizedSearchCV)详解,附代码。
    • 一、背景与发展:为什么需要超参数搜索?
      • ➤ 超参数(Hyperparameters)
    • 二、什么是 GridSearchCV?
      • ✅ 定义:
      • 原理图解:
    • 三、什么是 RandomizedSearchCV?
      • ✅ 定义:
      • ✅ 优点:
    • 四、两者对比表格
    • 五、Python 示例代码(使用 Scikit-Learn)
      • 1️⃣ GridSearchCV 示例:
      • 2️⃣ RandomizedSearchCV 示例:
    • 六、在机器学习发展中的应用场景
    • ✅ 七、总结


欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/2401_89898861/article/details/147195226


一、背景与发展:为什么需要超参数搜索?

  • 在机器学习模型中,许多参数(如学习率、正则项系数、树的深度等)无法通过训练自动学习,必须由用户指定。这类参数称为:

➤ 超参数(Hyperparameters)

为获得最佳模型性能,我们需要:

  • 系统地选择一组合适的超参数;
  • 在多个超参数组合下 训练 + 验证 模型;
  • 比较性能指标,选出最优解。

这就诞生了:超参数调优方法

二、什么是 GridSearchCV?

✅ 定义:

  • Grid Search(网格搜索)会遍历你提供的超参数组合“网格”,对每组参数都训练和验证模型,找到最佳结果。
原理:穷举所有参数组合 → 多轮训练 → 返回最佳组合

原理图解:

  • 假设你要调两个参数:
learning_rate max_depth
0.01 3
0.1 5
1.0 7
  • GridSearchCV 会尝试所有 3 × 3 = 9 种组合。

三、什么是 RandomizedSearchCV?

✅ 定义:

  • Randomized Search(随机搜索)不会遍历所有组合,而是在你指定的参数分布中 随机采样一定次数 来寻找最优超参数。
原理:从参数空间中随机挑选 n 次组合 → 多轮训练 → 返回最优解

✅ 优点:

  • 对高维度、大范围搜索更高效;
  • 可指定迭代次数;
  • 可引入参数概率分布。

四、两者对比表格

特征 GridSearchCV RandomizedSearchCV
搜索方式 穷举所有组合 随机采样部分组合
参数组合数量 全部组合,时间成本高 指定次数(如 n_iter=50)
适合参数维度 少数几个参数 多参数、大范围
搜索效率
可能找到全局最优解? 不一定

五、Python 示例代码(使用 Scikit-Learn)

  • 我们用 LogisticRegression 模型做演示。

1️⃣ GridSearchCV 示例:

from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载数据
X, y = load_iris(return_X_y=True)

# 划分数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 定义模型
model = LogisticRegression(solver='liblinear')

# 定义参数网格
param_grid = {
    'C': [0.01, 0.1, 1, 10],
    'penalty': ['l1', 'l2']
}

# 网格搜索 + 交叉验证
grid_search = GridSearchCV(model, param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)

print("最佳参数组合:", grid_search.best_params_)
print("最佳得分:", grid_search.best_score_)

2️⃣ RandomizedSearchCV 示例:

from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import uniform

# 参数分布(不是列表,而是统计分布)
param_dist = {
    'C': uniform(loc=0.01, scale=10),  # 从 0.01~10 之间均匀采样
    'penalty': ['l1', 'l2']
}

# 随机搜索 + 交叉验证(最多搜索 10 次)
random_search = RandomizedSearchCV(model, param_distributions=param_dist, n_iter=10, cv=5, scoring='accuracy', random_state=42)
random_search.fit(X_train, y_train)

print("最佳参数组合:", random_search.best_params_)
print("最佳得分:", random_search.best_score_)

六、在机器学习发展中的应用场景

应用场景 推荐方式
小参数空间,重要调参 ✅ GridSearchCV
参数多、组合多、训练开销大 ✅ RandomizedSearchCV
结合 KFold + Pipeline 做自动调参 ✅ 两者都可用
AutoML、深度学习(如 transformer 超参) 更适合用 Random Search 或 Bayesian Search

✅ 七、总结

  • GridSearchCV 是精细、全面但计算成本高;
  • RandomizedSearchCV 是灵活、高效、适合复杂模型;
  • 两者都可以 结合交叉验证,增强模型泛化能力;
  • 在生产环境中,可以先用随机搜索快速找大致范围,再用网格搜索精调。

你可能感兴趣的:(深度学习,学习笔记,深度学习,学习,笔记,机器学习,人工智能)