20 随机搜索
系列进度
Scikit-learn 入门 · 第 20 / 24 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
随机搜索适合参数空间较大、你还不知道关键区域在哪里的阶段。它不保证穷尽,但能在固定预算内探索更多组合。
随机搜索也属于 scikit-learn 参数搜索工具。
我会先用随机搜索找到可能有效的范围,再对少数参数做网格搜索。先粗后细更省时间。
在上一节中,我们详细探讨了网格搜索的概念及其在超参数调优中的应用。网格搜索虽然简单易用,但在处理高维度参数空间时,计算量大且速度较慢。这就引入了我们今天要讨论的内容:随机搜索。随机搜索能够更有效地探索超参数空间,在许多情况下能够达到与网格搜索相似的效果,但计算成本却显著降低。
什么是随机搜索?
随机搜索是一种超参数调优的方法,它不像网格搜索那样穷举所有可能的超参数组合,而是从给定的参数分布中随机选取一组超参数进行训练和评估。这种方法可以更快速地找到效果良好的超参数组合,特别是在某些超参数对模型性能影响较大时。
使用随机搜索时,先看参数分布、迭代次数、评分指标、交叉验证、随机种子和最佳模型复查。
随机搜索的优势
- 减少计算时间:在参数数量众多的情况下,随机搜索通常能更快找到合适的超参数。
- 探索能力:随机搜索能够探索到网格搜索可能遗漏的参数组合,尤其是在参数分布不均匀的情况下。
随机搜索的实现
接下来,我们将通过一个具体的案例来实现随机搜索。我们将使用 Scikit-Learn 提供的 RandomizedSearchCV 类。
读完《随机搜索》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。
读到这里,可以把《随机搜索》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。
看《随机搜索》时,先把图中的问题、关键词、操作和验收标准对上,再读正文会更省力。读完后,最好能用自己的项目重新讲一遍。
示例:使用随机搜索调优支持向量机的超参数
让我们创建一个简单的分类模型,使用随机搜索来调整支持向量机(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. 定义超参数空间
在随机搜索中,我们需要指定每个超参数的可能取值范围。这里的 C 和 gamma 是支持向量机中的超参数。
# 定义超参数空间
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 的超参数。与网格搜索相比,随机搜索能够以更少的计算时间达到相似甚至更优的结果。以下是使用随机搜索的一些总结:
- 它对于参数空间大或维度高的情况特别高效。
- 由于其随机性,能够探索到多样化的超参数组合,有效提高模型的泛化能力。
即便如此,随机搜索仍然需要合理选择参数的范围和分布,以避免超参数调优过程中的盲目性。
在接下来的章节中,我们将深入探讨 交叉验证与调优 的相关内容,更深入地理解如何有效评估模型性能并优化超参数设置。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
随机搜索适合谁读?
这是 Scikit-learn 入门 系列第 20 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇Scikit-learn 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读