郭震 AI公众号:郭震AI

20 随机搜索

发布日期:

最近更新:

分类: Scikit

预计阅读: 3 分钟

阅读次数: 0

系列进度

Scikit-learn 入门 · 第 20 / 24

预计阅读3 分钟
结构重点5 个
图文要点6 张
正文规模1.3k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 5 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

随机搜索流程图查看大图
随机搜索流程图

随机搜索适合参数空间较大、你还不知道关键区域在哪里的阶段。它不保证穷尽,但能在固定预算内探索更多组合。

随机搜索也属于 scikit-learn 参数搜索工具

随机搜索核对图查看大图
随机搜索核对图

我会先用随机搜索找到可能有效的范围,再对少数参数做网格搜索。先粗后细更省时间。

在上一节中,我们详细探讨了网格搜索的概念及其在超参数调优中的应用。网格搜索虽然简单易用,但在处理高维度参数空间时,计算量大且速度较慢。这就引入了我们今天要讨论的内容:随机搜索。随机搜索能够更有效地探索超参数空间,在许多情况下能够达到与网格搜索相似的效果,但计算成本却显著降低。

什么是随机搜索?

随机搜索是一种超参数调优的方法,它不像网格搜索那样穷举所有可能的超参数组合,而是从给定的参数分布中随机选取一组超参数进行训练和评估。这种方法可以更快速地找到效果良好的超参数组合,特别是在某些超参数对模型性能影响较大时。

随机搜索调参判断卡查看大图
随机搜索调参判断卡

使用随机搜索时,先看参数分布、迭代次数、评分指标、交叉验证、随机种子和最佳模型复查。

随机搜索的优势

  1. 减少计算时间:在参数数量众多的情况下,随机搜索通常能更快找到合适的超参数。
  2. 探索能力:随机搜索能够探索到网格搜索可能遗漏的参数组合,尤其是在参数分布不均匀的情况下。

随机搜索的实现

接下来,我们将通过一个具体的案例来实现随机搜索。我们将使用 Scikit-Learn 提供的 RandomizedSearchCV 类。

随机搜索应用检查卡查看大图
随机搜索应用检查卡

读完《随机搜索》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。

随机搜索应用复盘卡查看大图
随机搜索应用复盘卡

读到这里,可以把《随机搜索》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。

Scikit-Learn阅读地图卡查看大图
ScikitLearn阅读地图卡

看《随机搜索》时,先把图中的问题、关键词、操作和验收标准对上,再读正文会更省力。读完后,最好能用自己的项目重新讲一遍。

示例:使用随机搜索调优支持向量机的超参数

让我们创建一个简单的分类模型,使用随机搜索来调整支持向量机(SVM)的超参数。

1. 导入必要的库

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, RandomizedSearchCV
from sklearn.svm import SVC
from scipy.stats import randint

2. 加载数据

我们将使用具有四个特征的 Iris 数据集

# 加载数据
iris = load_iris()
X, y = iris.data, iris.target

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

3. 定义超参数空间

在随机搜索中,我们需要指定每个超参数的可能取值范围。这里的 Cgamma 是支持向量机中的超参数。

# 定义超参数空间
param_distributions = {
    'C': np.logspace(-3, 3, 7),
    'kernel': ['linear', 'rbf'],
    'gamma': ['scale', 'auto'] + list(np.logspace(-3, 2, 6))
}

4. 实例化随机搜索

使用 RandomizedSearchCV 来实例化随机搜索对象,指定所需的参数数量(如这里的 20)。

# 实例化随机搜索
random_search = RandomizedSearchCV(SVC(), param_distributions, n_iter=20, cv=5, random_state=42)

5. 进行模型拟合与搜索

# 拟合模型
random_search.fit(X_train, y_train)

6. 查看最佳模型与超参数

# 输出最佳超参数与模型表现
print("最佳超参数:", random_search.best_params_)
print("最佳模型评分:", random_search.best_score_)

总结

通过以上示例,我们成功地使用 随机搜索 优化了 SVM 的超参数。与网格搜索相比,随机搜索能够以更少的计算时间达到相似甚至更优的结果。以下是使用随机搜索的一些总结:

  • 它对于参数空间大或维度高的情况特别高效。
  • 由于其随机性,能够探索到多样化的超参数组合,有效提高模型的泛化能力。

即便如此,随机搜索仍然需要合理选择参数的范围和分布,以避免超参数调优过程中的盲目性。

在接下来的章节中,我们将深入探讨 交叉验证与调优 的相关内容,更深入地理解如何有效评估模型性能并优化超参数设置。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

随机搜索适合谁读?

这是 Scikit-learn 入门 系列第 20 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇Scikit-learn 入门教程要多久?

按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...