模型调参之网格搜索与随机搜索

2023-11-19

模型调参之网格搜索与随机搜索

网格搜索法(GridSearchCV)

  1. GridSearchCV:GridSearchCV可以拆分成GridSearch和CV两部分,即网格搜素和交叉验证。GridSearch系统地遍历多种参数组合,通过交叉验证确定最佳效果参数。网格搜索是对参数进行搜索,在指定的参数范围内,按步长依次调整参数,利用调整的参在这里插入代码片数训练学习器,从所有的参数中找到在验证集上精度最高的参数,这也是一个训练和比较的过程。交叉验证根据cv参数的设置,设置为k折交叉验证,默认为5折。
  2. Grid Search:网格搜素是一种调参手段,采用的是穷举搜索的方式,即在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。其原理类似于在数组中找最大值。
  3. 适用情况:网格搜索法适用于三四个(或者更少)的超参数。
  4. 缺点:对于大数据集和多参数的情况,计算代价非常非常大,面临维度灾难。
  5. 参数说明:
    class sklearn.model_selection.GridSearchCV(estimator, param_grid, *, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score=nan, return_train_score=False)
  • estimator:选择使用的分类器,并且传入除需要确定最佳的参数之外的其他参数。
  • param_grid:需要最优化的参数取值,值为字典或者列表。
  • scoring=None:模型评价标准,默认None;根据所选模型不同,评价准则不同。比如scoring=”accuracy”或者scoring='roc_auc’等。如果是None,则使用estimator的误差估计函数。
  • n_jobs:进程个数,默认为1。 若值为 -1,则用所有的CPU进行运算。 若值为1,则不进行并行运算,这样的话方便调试。
  • refit=True:默认为True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与开发集进行,作为最终用于性能评估的最佳模型参数。即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集。如果scoring参数有多个值,refit必须指定其中一种评价指标。
  • cv=None:交叉验证参数,默认None,使用五折交叉验证。
  • verbose=0:verbose:日志冗长度,0:不输出训练过程,1:偶尔输出,>1:对每个子模型都输出。
  • pre_dispatch=‘2*n_jobs’:指定总共分发的并行任务数。当n_jobs大于1时,数据将在每个运行点进行复制,这可能导致OOM,而设置pre_dispatch参数,则可以预先划分总共的job数量,使数据最多被复制pre_dispatch次
  • return_train_score=False:默认为FALSE,cv_results_属性将不包括训练分数。也可设置为‘warn’
  1. 示例:
from sklearn.model_selection import GridSearchCV 
from sklearn.datasets import load_iris 
from sklearn.svm import SVC 
from sklearn.model_selection import train_test_split 
#把要调整的参数以及其候选值 列出来; 
param_grid = {"gamma":[0.001,0.01,0.1,1,10,100], 
             "C":[0.001,0.01,0.1,1,10,100]} 
print("Parameters:{}".format(param_grid)) 
 
grid_search = GridSearchCV(SVC(),param_grid,cv=5) #实例化一个GridSearchCV类 
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=10) 
grid_search.fit(X_train,y_train) #训练,找到最优的参数,同时使用最优的参数实例化一个新的SVC estimator。 
print("Test set score:{:.2f}".format(grid_search.score(X_test,y_test))) 
print("Best parameters:{}".format(grid_search.best_params_)) 
print("Best score on train set:{:.2f}".format(grid_search.best_score_))

随机搜索(RandomizedSearchCV)

  1. 原理:随机搜索并未尝试所有参数值,而是从指定的分布中采样固定数量的参数设置。它的理论依据是,如果随机样本点集足够大,那么也可以找到全局的最大或最小值,或它们的近似值。通过对搜索范围的随机取样,随机搜索一般会比网格搜索要快一些。但是和网格搜索的快速版(非自动版)相似,结果也是没法保证的。
  2. RandomizedSearchCV的使用方法其实是和GridSearchCV一致的,但它以随机在参数空间中采样的方式代替了GridSearchCV对于参数的网格搜索,在对于有连续变量的参数时,RandomizedSearchCV会将其当做一个分布进行采样进行这是网格搜索做不到的,它的搜索能力取决于设定的n_iter参数。
  3. RandomSearchCV的搜索策略如下:
  • 对于搜索范围是distribution的超参数,根据给定的distribution随机采样;
  • 对于搜索范围是list的超参数,在给定的list中等概率采样;
  • 对a、b两步中得到的n_iter组采样结果,进行遍历。
  • 如果给定的搜索范围均为list,则不放回抽样n_iter次。
  1. 适用情况:
  • 数据规模大,精确的结果难以在一定时间计算出。
  • 结果的些许的不精确能够被接受。
  • 求取的结果是最优化(optimization)问题,有一个成本计算模型
  1. 参数说明:
    class sklearn.model_selection.RandomizedSearchCV(estimator, param_distributions, *, n_iter=10, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score=nan, return_train_score=False)
    参数和GridSearchCV类似。
  2. 示例:
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import uniform
iris = load_iris()
logistic = LogisticRegression(solver='saga', tol=1e-2, max_iter=200,
...                               random_state=0)
distributions = dict(C=uniform(loc=0, scale=4),
...                      penalty=['l2', 'l1'])
clf = RandomizedSearchCV(logistic, distributions, random_state=0)
search = clf.fit(iris.data, iris.target)
search.best_params_
{'C': 2..., 'penalty': 'l1'}

随机搜索和网格搜索对比

  1. 相较于网格搜索,随机搜索的速度更快,精度稍微提升或降。
  2. 当超参数的搜索空间很大时,更推荐使用RandomizedSearchCV。
  3. 使用随机搜索方法的难点在于确定参数的分布范围,这需要对所使用的模型有足够的了解。

使用多种评估指标

  1. cross_validate
from sklearn.model_selection import cross_validate 
from sklearn.metrics import recall_score 
scoring = ['precision_macro', 'recall_macro'] 
clf = svm.SVC(kernel='linear', C=1, random_state=0) 
scores = cross_validate(clf, iris.data, iris.target, scoring=scoring) 
sorted(scores.keys())
  1. 在网格搜索中使用多种评估指标
scoring = {'AUC': 'roc_auc', 'Accuracy': make_scorer(accuracy_score)} 
 
# Setting refit='AUC', refits an estimator on the whole dataset with the 
# parameter setting that has the best cross-validated AUC score. 
gs = GridSearchCV(DecisionTreeClassifier(random_state=42), 
                  param_grid={'min_samples_split': range(2, 403, 10)}, 
                  scoring=scoring, refit='AUC', return_train_score=True) 
gs.fit(X, y) 
results = gs.cv_results_
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模型调参之网格搜索与随机搜索 的相关文章

  • 数据仓库主题一(宽表模型设计)

    一 典型的数据仓库建模思想一般主流分为两种 第一种 ER模型是数据仓库之父父 Bill lnmon 提出的建模方法是从全企业的高度设计 3NF 模型 用实体关系 Entity Relationship ER 模型描述企业业 务 在范式理论上
  • 数仓建模宽表设计

    一 宽表的设计 其实宽表是数仓里面非常重要的一块 前面我们介绍过了维度表事实表 今天我们介绍一下宽表 前面我们说过了数仓是分层的 这是技术进步和时代变化相结合的产物 数仓的分层式为了更好地管理数仓以及更加高效地进行数据开发 宽表主要出现在d
  • SSAS的入门介绍

    一 是什么 SSAS是用于SQLServer数据库用于BI的组件 通过SSAS可以创建多维数据库 并在之上进行数据挖掘操作 本文我们主要介绍一些关于SSAS数据分析的知识 接下来就让我们来一起了解一下吧 商业智能提供的解决方案能够从多种数据
  • 构建用户画像-标签体系

    用户画像是目前在技术公司广泛使用的技术 是根据客户人口统计信息 社交关系 偏好习惯和消费行为等信息而抽象出来的标签化画像 常常用在精准营销 圈定人群 发送短信消息 APP弹窗等等 用户画像的准确性往往会直接影响到运营的效果和获客成本 用户画
  • 高性能Spark作业调优

    在大数据计算领域 Spark已经成为了越来越流行 越来越受欢迎的计算平台之一 Spark的功能涵盖了大数据领域的离线批处理 SQL类处理 流式 实时计算 机器学习 图计算等各种不同类型的计算操作 应用范围与前景非常广泛 在美团点评 已经有很
  • SaaS 系统完全开源介绍

    平台简介 芋道 以开发者为中心 打造中国第一流的快速开发平台 全部开源 个人与企业可 100 免费使用 架构图 管理后台的 Vue3 版本采用 vue element plus admin Vue2 版本采用 vue element adm
  • 数据仓库主题九-(事务事实表)

    事务事实表 对于单事务事实表 一个业务过程建立一个事实表 只反映一个业务过程的事实 对于多事务事实表 在同一个事实表中反映多个业务过程 多个业务过程是否放到同一个事实表中 订单作为交易行为的核心载体 直接反应了交易的状况 订单的流转回产生很
  • 听说渲影很便宜,是真的吗?

    这次我比较了3个平台 炫云 渲影和渲染100 首先说结论 渲影是很便宜 但也没便宜过渲染100 而且出图大小有猫腻 具体的往下看 首先我选取了一个219M的场景 不是很大 设置的分辨率是3200 4000 提交3个平台的时候选择的参数也一样
  • 数据分析时,进行数据建模该如何筛选关键特征?

    1 为什么要做关键特征筛选 在数据量与日俱增的时代 我们收集到的数据越来越多 能运用到数据分析挖掘的数据也逐渐丰富起来 但同时 我们也面临着如何从庞大的数据中筛选出与我们业务息息相关的数据 大背景 从数据中挖掘潜在的规律 辅助我们在实际业务
  • 数据仓库指标体系实践

    指标体系 1 痛点分析 主要从业务 技术 产品三个视角来看 业务视角 业务分析场景指标 维度不明确 频繁的需求变更和反复迭代 数据报表臃肿 数据参差不齐 用户分析具体业务问题找数据 核对确认数据成本较高 技术视角 指标定义 指标命名混乱 指
  • 原子指标和衍生/派生指标

    按照个人的理解 不加任何修饰词的指标就是原子指标 也叫度量 一般存在于olap表中 例如订单量 用户量的等等 而在原子指标上进行加减乘除或者修饰词的限定等等都是派生指标 衍生 派生指标 原子指标 时间周期 修饰词 例如 近7天订单量 近7天
  • 阿里大数据之路:数据模型篇大总结

    第1章 大数据领域建模综 1 1 为什么需要数据建模 有结构地分类组织和存储是我们面临的一个挑战 数据模型强调从业务 数据存取和使用角度合理存储数据 数据模型方法 以便在性能 成本 效率之间取得最佳平衡 成本 良好的数据模型能极大地减少不必
  • 大数据开发:数仓建模常见数据模型

    在数据仓库搭建的过程当中 根据需求合理地选择数据模型 是非常关键的一个环节 对于数仓建模 很多人说不就是建表吗 哪有那么复杂 事实上 这是非常错误的思想 今天的大数据开发分享 我们来聊聊数仓建模常见的几种数据模型 目前来说 市场上主流的数据
  • 数据仓库模型设计V2.0

    一 数仓建模的意义 数据模型就是数据组织和存储方法 它强调从业务 数据存取和使用角度合理存储数据 只有将数据有序的组织和存储起来之后 数据才能得到高性能 低成本 高效率 高质量的使用 高性能 良好的数据模型能够帮助我们快速查询所需要的数据
  • 详解用户画像

    01画像简介 用户画像 即用户信息标签化 通过收集用户的社会属性 消费习惯 偏好特征等各个维度的数据 进而对用户或者产品特征属性进行刻画 并对这些特征进行分析 统计 挖掘潜在价值信息 从而抽象出用户的信息全貌 如图1 1所示 用户画像可看作
  • 基于宽表的数据建模

    一 业务背景 1 1 数据建模现状 互联网企业往往存在多个产品线 每天源源不断产出大量数据 这些数据服务于数据分析师 业务上的产品经理 运营 数据开发人员等各角色 为了满足这些角色的各种需求 业界传统数仓常采用的是经典分层模型的数仓架构 从
  • 数据仓库主题三-(实施篇)

    背景 如何从具体的需求或项目转换为可实施的解决方案 如何进行需求分析 架构设计 详细模型设计等 则是模型实施过程中讨论的内容 业界常用两种数据仓库建设模型思想分为两种kimball和inmon模型 具体的kimball和inmon 模型思想
  • 第四讲 系统建模方法

    系统建模一般流程 实际系统的分析方法大致类似 但对于实际系统的模型实现方式则有多种 1 面向方程 图框 的因果建模 基于图框进行系统模型实现 的软件很多 如Simulink AMESim 应用于控制领域 等 2 面向对象 非因果 的物理建模
  • 模型调参之网格搜索与随机搜索

    模型调参之网格搜索与随机搜索 网格搜索法 GridSearchCV GridSearchCV GridSearchCV可以拆分成GridSearch和CV两部分 即网格搜素和交叉验证 GridSearch系统地遍历多种参数组合 通过交叉验证
  • Spark SQL 项目:实现各区域热门商品前N统计

    一 需求1 1 需求简介这里的热门商品是从点击量的维度来看的 计算各个区域前三大热门商品 并备注上每个商品在主要城市中的分布比例 超过两个城市用其他显示 1 2 思路分析使用 sql 来完成 碰到复杂的需求 可以使用 udf 或 udaf查

随机推荐

  • Linux内核内存管理算法Buddy和Slab

    文章目录 Buddy分配器 CMA Slab分配器 总结 Buddy分配器 假设这是一段连续的页框 阴影部分表示已经被使用的页框 现在需要申请一个连续的5个页框 这个时候 在这段内存上不能找到连续的5个空闲的页框 就会去另一段内存上去寻找5
  • AtCoder Beginner Contest 169 B Multiplication 2 long long竟然不够用

    AtCoder Beginner Contest 169 比赛人数11374 比赛开始后15分钟看到A题 在比赛开始后第20分钟看到所有题 AtCoder Beginner Contest 169 B Multiplication 2 lo
  • OpenGL ES 2.0升级到3.0配置win32环境以及编译所遇bug

    安装win32平台的OpenGL ES 3 0模拟器 一 安装3 0模拟器 一般用32位的 https developer arm com products software development tools graphics devel
  • ctfshow-网络迷踪-初学再练( 一座雕像判断军事基地名称)

    ctf show 网络迷踪第4关 题目中只有一座雕像 需要根据雕像提交军事基地的名称 推荐使用谷歌识图 溯源到一篇博客 答案就在文章标题中 给了一座雕像 看样子不像是国内的风格 扔谷歌识图找找线索 访问谷歌识图 根据图片搜索 https w
  • kubernetes常见异常处理

    一 kubernetes常见Pod异常状态的处理 一 一般排查方式 无论 Pod 处于什么异常状态 都可以执行以下命令来查看 Pod 的状态 kubectl get pod
  • 拉格朗日乘数法

    拉格朗日乘数法
  • attention(注意力机制)原理和pytorch demo

    目录 说明 RNN的局限性 注意力机制原理 注意力机制实现 第一步 编码 第二步 第0次打分并解码 第三步 第1次打分并解码 Demo链接和结果分析 总结 改进 说明 demo源自吴恩达老师的课程 从tensorflow修改为pytorch
  • Selenium成长之路-01如何开始学习

    为什么最近要写selenium 是因为最近有不少同事问我关于selenium的问题 所以觉得有必要来写一篇selenium 从环境搭建到框架构成都写出来 也分享一下我的selenium的点点经验 有不足之处 欢迎吐槽 学习selenium之
  • 区块链技术是如何应用到版权维护上?

    随着视频和音乐行业的迅速发展 数字出版已经形成完整的产业链 带来一些可观的收入 但是也伴随侵权的现象发生 那么区块链技术怎么运用到作品版权保护上呢 1 时间戳 我们知道区块链有一个 时间戳 这个可信时间戳由权威机构签发 能证明数据电文在一个
  • 我的百度经验目录

    百度经验目录 进一步了解基于Mathematica的图像特征检测方法 http jingyan baidu com article a501d80c44a372ec630f5eb4 html 怎么把python代码打包成exe文件 http
  • Obsidian入门

    这里讲一下Obsidian 一款支持markdown语法的笔记软件 软件上手没有难度 会基本的markdown语法可以直接使用 但是Obsidian第三方库插件社区提供了近千种插件以及各种各样的主题 可以帮助用户更好的使用它 相信很多人都跟
  • Python 导出保存 MongoDB上数据到Excel(.xls和.csv)文件

    Python 中使用MongoDB存储数据 若需要导出数据到文件 可以使用pandas或xlwings导出到Excel xls和 csv 文件 本文主要介绍Python 中导出保存MongoDB上数据到Excel xls和 csv 文件的方
  • CVPR17(backbone) - ResNeXt : 引入网络设计中的新维度cardinality

    文章目录 原文地址 论文阅读方法 初识 相知 回顾 代码 论文全称 Aggregated Residual Transformations for Deep Neural Network 原文地址 原文地址 论文阅读方法 三遍论文法 初识
  • 《一个操作系统的实现》读书笔记-- 第一章--最小的“操作系统”

    一 最简单的 操作系统 最最简单的 操作系统 就是一个最最简单的引导扇区 Boot Sector 虽然它不具有任何功能 但是它却能够直接在裸机上运行 不依赖其他软件 一个引导扇区是512个字节 并且以0xAA55为结束标识的扇区 下面就是那
  • EIoU和Focal-EIoU Loss

    1 论文 论文题目 Focal and Efficient IOU Loss for Accurate Bounding Box Regression 2 引言 CIoU Loss虽然考虑了边界框回归的重叠面积 中心点距离 高宽比 但是其公
  • 第一章:宇宙第一IDE--Visual Studio

    数据结构 是指一种计算机存储 组织数据的方式 IDE Integrated Development Environment 的缩写 表示 集成开发环境 它是一种用于提供程序开发环境的应用程序 一般包括代码编辑器 编译器 调试工具和图形化用户
  • Java调用exe程序

    String exePath D Xftp6 Xftp exe BufferedReader br null BufferedReader brError String line null try String cmd D Xftp6 Xf
  • MATLAB函数句柄

    1 何为函数句柄 函数句柄也是MATLAB中的一种常见的数据类型 它的地位类似于其它计算机语言里的函数对象 Javascript Python 函数指针 C 或者函数引用 Perl 它的作用是将一个函数封装成一个变量 使其能够像其它变量一样
  • 【NLP】自然语言处理技术在自动生成足球比赛战报上的应用

    1 背景介绍 自动生成新闻看似是一个很成熟的技术 很多年前就有各种应用 但是深入了解后我们可以发现机器自动生成的文章一般都是复述一些数字和简单的趋势变化 所以自动生成新闻的技术广泛应用在金融 体育领域 原因就是这类报道需要基于一定的事实 而
  • 模型调参之网格搜索与随机搜索

    模型调参之网格搜索与随机搜索 网格搜索法 GridSearchCV GridSearchCV GridSearchCV可以拆分成GridSearch和CV两部分 即网格搜素和交叉验证 GridSearch系统地遍历多种参数组合 通过交叉验证