返回顶部
首页 > 资讯 > 精选 >Sklearn调优之网格搜索与随机搜索原理是什么
  • 493
分享到

Sklearn调优之网格搜索与随机搜索原理是什么

2023-07-05 02:07:25 493人浏览 独家记忆
摘要

这篇“Sklearn调优之网格搜索与随机搜索原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Sklearn调优之网格

这篇“Sklearn调优之网格搜索与随机搜索原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Sklearn调优之网格搜索与随机搜索原理是什么”文章吧。

前言

超参调优是“模型调优”(Model Tuning)阶段最主要的工作,是直接影响模型最终效果的关键步骤,然而,超参调优本身却是一项非常低级且枯燥的工作,因为它的策略就是:不断变换参数值,一轮一轮地去“试”,直到找出结果最好的一组参数。显然,这个过程是可以通过编程封装成自动化的工作,而不是靠蛮力手动去一遍一遍的测试。为此,Sklearn提供了多种(自动化)超参调优方法(官方文档),其中网格搜索(Grid Search)和随机搜索(Randomized Search)是最基础也是最常用的两个:

方法名称对应类/函数官方文档
网格搜索(Grid Search)sklearn.model_selection.GridSearchCV文档链接
随机搜索(Randomized Search)sklearn.model_selection.RandomizedSearchCV文档链接

对应类/函数的后缀CV是Cross-Validation的意思,因为它们每尝试一种超参组合时,都会使用Cross-Validation进行效果评估,所以调用它们时也都需要显式指定cv参数,即:验证的轮次(K-Fold的份数)。

网格搜索(Grid Search)

网格搜索(Grid Search)的逻辑其实非常简单,就是由开发者针对每个超参设定多个值去尝试,找出效果最好的那个,由于超参会有很多个,而每一个超参又有多个尝试值,所以就变成了一个“排列组合”问题。例如我们想针对两个超参进行调优,第一个超参设置了2个尝试值,第二个超参设置了3个尝试值,则超参设置总共会有 2 × 3 = 6 种组合,理论上模型要被训练6次,如果再加上交叉验证的轮次参数cv,假设cv=3,则总得的训练次数将变为:6 × 3 = 18 次。以下是《Hands-On ML, 2nd Edition》一书中提供的GridSearchCV示例代码:

from sklearn.model_selection import GridSearchCVparam_grid = [    {'n_estimators': [3, 10, 30], 'max_features': [2, 4, 6, 8]},    {'bootstrap': [False], 'n_estimators': [3, 10], 'max_features': [2, 3, 4]},]forest_reg = RandomForestRegressor()grid_search = GridSearchCV(forest_reg, param_grid, cv=5,                           scoring='neg_mean_squared_error',                           return_train_score=True)grid_search.fit(housing_prepared, housing_labels)

在这份示例代码中,作者提供针对bootstrap、n_estimators和max_features三个超参,给出了两套参数设定:

第一套:{'n_estimators': [3, 10, 30], 'max_features': [2, 4, 6, 8]} 总计:3 × 4 = 12 种组合

第二套:{'bootstrap': [False], 'n_estimators': [3, 10], 'max_features': [2, 3, 4]} 总计:1 × 2 × 3 = 6 种组合

合在一起一共:12 + 6 = 18 种组合,加上交叉验证设定cv=5,所以最终将训练 18 × 5 = 90 次!这里我们可以看到param_grid是一个list,里面每一个元素是一个dict,一个dict就代表了一套参数设定,每套参数设定根据赋值情况又会产生多种参数组合。其实上面两套组合也可以用下面的一套设定覆盖:

param_grid = [    {'bootstrap': [True, False], 'n_estimators': [3, 10, 30], 'max_features': [2, 3, 4, 6, 8]}]

但在此情况下,总的训练次数将会变为:(2 × 3 × 5) × 5 = 150 次。由此可见,Sklearn这种允许设定多套参数的设计(即一个list下可配置多个dict)还是有可取之处,会方便开发人员更具经验设定最有希望的取值集合,减少训练次数。

随机搜索(Randomized Search)

网格搜索适用于参数组合数比较少的情况,当参数组合大到一定程度后,模型训练所占用的资源和持续时间将会超用户的可接受范围,此时往往就要改用随机搜索(Randomized Search)了。随机搜索的工作原理和网格搜索其实差不多,都是“暴力尝试”,不同之处在于:网格搜索的参数取值集合是用户设定的,而随机搜索的参数取值则是指定好区间(最大值和最小值)由随机数发生器随机生成的,而想要生成多少种组合是可以设置的。以下是《Hands-On ML, 2nd Edition》一书中提供的RandomizedSearchCV示例代码:

from sklearn.model_selection import RandomizedSearchCVfrom scipy.stats import randintparam_distribs = {        'n_estimators': randint(low=1, high=200),        'max_features': randint(low=1, high=8),    }forest_reg = RandomForestRegressor(random_state=42)rnd_search = RandomizedSearchCV(forest_reg, param_distributions=param_distribs,                                n_iter=10, cv=5, scoring='neg_mean_squared_error', random_state=42)rnd_search.fit(housing_prepared, housing_labels)

在这份代码中,作者针对n_estimators和max_features两个超参分别设定了 1 ~ 200 和 1 ~ 8 的取值区间,然后通过设定参数n_iter=10将参数组合数设定为10,当然,叠加上交叉验证cv=5后,实际的训练就是 5 × 10 = 50 次了。

以上就是关于“Sklearn调优之网格搜索与随机搜索原理是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: Sklearn调优之网格搜索与随机搜索原理是什么

本文链接: https://lsjlt.com/news/349195.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Sklearn调优之网格搜索与随机搜索原理是什么
    这篇“Sklearn调优之网格搜索与随机搜索原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Sklearn调优之网格...
    99+
    2023-07-05
  • Sklearn调优之网格搜索与随机搜索原理详细分析
    目录前言网格搜索(Grid Search)随机搜索(Randomized Search)前言 超参调优是“模型调优”(Model Tuning)阶段最主要的工...
    99+
    2023-02-11
    Sklearn网格搜索与随机搜索 Sklearn网格搜索 Sklearn随机搜索
  • Lesson 10.1 超参数优化与枚举网格的理论极限和随机网格搜索 RandomSearchCV
    文章目录 一、超参数优化与枚举网格的理论极限1. 超参数优化 HPO(HyperParameter Optimization)2. 网格搜索的理论极限与缺点3. 建立 benchmark:随机...
    99+
    2023-09-03
    python 机器学习 人工智能
  • 搜索引擎工作原理是什么
    本篇内容介绍了“搜索引擎工作原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!搜索引擎发展过程现代意义上的搜索引擎的祖先,是1990年...
    99+
    2023-06-04
  • 网站优化中搜索引擎为什么重视原创
    这篇文章主要为大家展示了“网站优化中搜索引擎为什么重视原创”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“网站优化中搜索引擎为什么重视原创”这篇文章吧。一.大多数网站采集泛滥记得之前笔者优化了一个...
    99+
    2023-06-10
  • SAP S/4HANA Material Fiori应用的搜索实现原理是什么
    本篇文章给大家分享的是有关SAP S/4HANA Material Fiori应用的搜索实现原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。# Prerequisite...
    99+
    2023-06-04
  • SAP Hybris里搜索显示结果的实现原理是什么
    这期内容当中小编将会给大家带来有关SAP Hybris里搜索显示结果的实现原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。CRMHybrisHybris是怎么实现的?我问过Hybris成都同事了,...
    99+
    2023-06-04
  • 计算机网络中国内5大搜索引擎是什么
    小编给大家分享一下计算机网络中国内5大搜索引擎是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!国内5大搜索引擎是:1、百度搜索;2、神马搜索,只做移动搜索引擎...
    99+
    2023-06-08
  • 关键词搜索引擎优化的网址设置方法是什么
    今天就跟大家聊聊有关关键词搜索引擎优化的网址设置方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在网站建设制作及网站优化过程中,良好的搜索认...
    99+
    2024-04-02
  • MySQL索引的原理与优化策略是什么
    这篇文章主要介绍了MySQL索引的原理与优化策略是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL索引的原理与优化策略是什么文章都会有所收获,下面我们一起来看看吧。索引的概念MySQL索引是一种用于...
    99+
    2023-07-05
  • 网站开发中搜索引擎蜘蛛抓取异常的原因是什么
    本篇文章给大家分享的是有关网站开发中搜索引擎蜘蛛抓取异常的原因是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。网站优化排名最经常使用的一种方法就是发布优质文章,让搜索引擎蜘...
    99+
    2023-06-07
  • 相似图像搜索插件imgsmlr性能测试与优化方法是什么
    这篇文章主要讲解了“相似图像搜索插件imgsmlr性能测试与优化方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“相似图像搜索插件imgsmlr性能测...
    99+
    2024-04-02
  • SAP CRM WebClient UI订单搜索的各种条件的实现原理和性能测试是什么
    SAP CRM WebClient UI订单搜索的各种条件的实现原理和性能测试是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。CRMS4_SERVHSRCH...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作