python超参数优化的具体方法
作者:小妮浅浅 发布时间:2022-01-04 22:28:31
1、手动调参,但这种方法依赖于大量的经验,而且比较费时。
许多情况下,工程师依靠试错法手工调整超参数进行优化,有经验的工程师可以在很大程度上判断如何设置超参数,从而提高模型的准确性。
2、网格化寻优,是最基本的超参数优化方法。
利用这种技术,我们只需要为所有超参数的可能性建立一个独立的模型,评估每个模型的性能,选择产生最佳结果的模型和超参数。
from sklearn.datasets import load_iris
from sklearn.svm import SVC
iris = load_iris()
svc = SVR()
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVR
grid = GridSearchCV(
estimator=SVR(kernel='rbf'),
param_grid={
'C': [0.1, 1, 100, 1000],
'epsilon': [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10],
'gamma': [0.0001, 0.001, 0.005, 0.1, 1, 3, 5]
},
cv=5, scoring='neg_mean_squared_error', verbose=0, n_jobs=-1)
3、随机寻优,可以更准确地确定某些重要超参数的最佳值。
并非所有的超参数都有同样的重要性,有些超参数的作用更加明显。
知识点扩充:
贝叶斯优化方法
简单地说,贝叶斯优化通过基于过去对目标的评估结果建立一个代理函数(概率模型)找到使得目标函数最小的值。代理函数比目标函数更易于优化,因此下一个待评估的输入值是通过对代理函数应用某种标准(通常为预期提升)来选择的。贝叶斯方法不同于随机搜索或网格搜索,后两者都使用了过去的评估结果来选择接下来待评估的值。它们的思想是:通过根据过去表现良好的值选择下一个输入值来限制评价目标函数的高昂开销。
对于超参数优化来说,其目标函数为使用一组超参数的机器学习模型的验证误差。它的目标是找出在验证集上产生最小误差的超参数,并希望将这些结果泛化到测试集上去。对目标函数评估的开销是巨大的,因为它需要训练带有一组特定超参数的机器学习模型。理想情况下,我们希望找到这样一方法,它既能探索搜索空间,又能限制耗时的超参数评估。贝叶斯超参数调优使用一个不断更新的概率模型,通过从过去的结果中进行推理,使搜索过程「专注」于有可能达到最优的超参数。
Python 环境下有一些贝叶斯优化程序库,它们目标函数的代理算法有所区别。在本文中,我们将使用「Hyperopt」库,它使用树形 Parzen 评估器(TPE,https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf)作为搜索算法,其他的 Python 库还包含「Spearmint」(高斯过程代理)和「SMAC」(随即森林回归)。目前在这个领域有大量有趣的研究,所以如果你对某一个库不是很满意,你可以试试其他的选项!针对某个问题的通用结构(本文将使用的结构)可以在各个库间进行转换,其句法差异非常小。
来源:https://www.py.cn/jishu/jichu/32602.html
猜你喜欢
- 无聊刷日剧,看到签到断了好久,简单写了个脚本,通过模拟抓包的方式实现1、先登录到字幕组网站获取token2、用获取到的token登录到人人活
- 一 前期说明:我运行项目的环境是nginx+php,存储代码用的是gitlab,python版本:3.6 django版本:2.2.1 my
- 这篇文章主要介绍了Python插入Elasticsearch操作方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 平时我们获取事件对象一般写法如下:function getEvent(event) { return event
- 抽象工厂模式Abstract Factory Pattern是什么抽象工厂模式是一种创建型模式,它提供了一种创建一系列相关或相互依赖对象的最
- 一、问题描述通过调用MyQR模块来实现生成个人所需二维码。安装:pip install myqr二、代码实现1.普通二维码from MyQR
- 前言你是否曾经想将某张照片中的人物抠出来,然后拼接到其他图片上去,从而可以即使你在天涯海角,我也可以到此一游?专业点的人使用 PhotoSh
- 声明,本文中所称CSS雪碧即为CSS Sprites,这个词组一直没有一个固定或者约定俗成的中文翻译,一些人开始称之为CSS雪碧,我们且当作
- 本文实例为大家分享了python批量处理图片的具体代码,供大家参考,具体内容如下公司的一个项目要求把所有4096x4096的图片全部转化成2
- 为什么Python中0.2+0.1不等于0.3大家请看下面的python程序代码:print(0.2+0.1)猜一猜运行结果是什么,是0.3
- 前言Iframe 是一种将网页嵌入到另一个页面的内容中的方法。这是通过使用 HTML 元素、外部网站的 URL 以及窗口在您的网站上的外观参
- 自己写的一个自动完成效果,暂时没有ajax数据源,用静态数据代替。仅供喜欢JavaScript的同学们参考,代码如下<!DOCTYPE
- 前言:处理字符串时经常要定制化去掉无用的空格,python 中要么用存在的常规方法,或者用正则处理1.去掉左边空格string = &quo
- 目前,各大搜索引擎如google、百度、雅虎已经对动态页面诸如asp,php有着不错的支持了,只要动态页面后面的参数不要太长,如控制在3个参
- Ajax 技术改变了大型商业 Web 应用程序的外观,但是许多较小的 Web 站点都不具备足够的资源重新构建完整的用户界面(UI)。Ajax
- 前言在php开发过程中,获取文件扩展名是非常常见的需求。比如我们在上传文件的时候,首先需要判断文件类型是否为我们允许上传的类型。这个时候就需
- 目录一、列表求并集1. union_by二、列表求交集1. intersection_by三、列表求差集1. difference2. di
- 本文实例讲述了python socket多线程通讯方法。分享给大家供大家参考,具体如下:#!/usr/bin/evn python"
- 前面我们给了Tkinter接管Python输入和输出的介绍,我们不难可以想到,能用Tkinter来开发自己的Python代码编辑器.例如可以
- 公司服务器的mysql和redis连接都需要有跳板机,网上有很多python ssh远程连接mysql的,那天我研究了下,利用sshtunn