Optuna:带仪表盘的可视化的超参数优化

news2024/11/16 19:58:07

1、引言

Optuna是一个由日本东京大学开发的自动化超参数优化库,用于机器学习和人工智能。它可用于自动优化神经网络、随机森林等模型的超参数,以改善模型的性能和准确性。Optuna还可以与其他流行的机器学习框架(如TensorFlow和PyTorch)一起使用。 Optuna的名称来源于“最适化”(Optimization)和“羽化”(Fluttering)的结合,意味着它可以帮助机器学习模型“羽化”到最佳状态。
Optuna是一个基于Python的自动超参数优化框架,可以自动寻找最优的超参数组合,从而帮助数据科学家和机器学习工程师更快更准确地构建高性能的机器学习模型
Optuna的原理基于贝叶斯优化算法,它主要包含了三个核心组件:Trial、Study和Sampler。在Optuna中,每次试验都被称为Trial。一个Trial包含了一个超参数组合,以及对这个超参数组合所构建的模型的性能评估,通常是一个计算出来的指标,如模型的准确度、误差率等等。Optuna会根据这些指标不断地调整超参数组合,直到找到一个最优的组合。而一个Trial的集合被称为一个Study。Study管理和控制Trials的流程,包括超参数选取的范围和分布,以及停止条件等等。Optuna支持两种Study类型:简单的Random Search和基于贝叶斯优化的TPE(Tree-structured Parzen Estimator)算法。TPE算法是Optuna实现自动超参数优化的核心算法
Optuna是一个强大的优化库,它能够帮助你设计和优化机器学习模型。它的核心功能是能够自动地搜索超参数空间,以找到最佳的模型配置。尽管Optuna在机器学习领域的应用非常广泛,但它也可以用于其他需要优化的问题。

首先,Optuna能够非常有效地搜索超参数空间。它使用了一种名为TPE (Tree-structured Parzen Estimator)的算法,这种算法结合了贝叶斯优化的优点和决策树的灵活性。通过使用TPE,Optuna能够高效地搜索超参数空间,并找到最佳的模型配置。此外,Optuna还提供了其他一些功能,例如并行化和分布式计算,这使得它能够更快地搜索超参数空间。

其次,Optuna还提供了许多易于使用的接口。它允许你使用简单的Python代码来定义要优化的目标函数和搜索空间。然后,Optuna会自动地进行搜索并返回最佳的超参数配置。此外,Optuna还支持各种流行的机器学习库,例如Scikit-learn和TensorFlow,这使得它能够方便地集成到你的机器学习工作中。

最后,Optuna还提供了一些额外的功能,例如可视化工具和交叉验证。这些功能可以帮助你更好地理解你的模型和超参数搜索的结果。通过使用这些工具,你可以更好地了解你的模型的表现和超参数搜索的过程。

2、安装optuna与仪表盘

安装前提条件:Python版本需要大于3.7

2.1、安装optuna

pip install optuna -i http://pypi.douban.com/simple/  --trusted-host pypi.douban.com

安装好了可以查看下版本:

import optuna
print(optuna.version.__version__)

查看下有哪些类与方法:

dir(optuna)

['Study', 'Trial', 'TrialPruned', '_LazyImport', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_callbacks', '_convert_positional_args', '_deprecated', '_experimental', '_hypervolume', '_imports', '_transform', '_typing', 'artifacts', 'copy_study', 'create_study', 'create_trial', 'delete_study', 'distributions', 'exceptions', 'get_all_study_summaries', 'importance', 'integration', 'load_study', 'logging', 'multi_objective', 'progress_bar', 'pruners', 'samplers', 'search_space', 'storages', 'study', 'trial', 'version', 'visualization']

2.2、安装optuna-dashboard

可视化的仪表盘对于直观了解整个优化迭代的过程还是很有帮助的,同样的建议带上豆瓣镜像

pip install optuna-dashboard -i http://pypi.douban.com/simple/  --trusted-host pypi.douban.com

安装好了之后,查看下里面的类和方法: 

import optuna_dashboard
dir(optuna_dashboard)

['ChoiceWidget', 'ObjectiveChoiceWidget', 'ObjectiveSliderWidget', 'ObjectiveTextInputWidget', 'ObjectiveUserAttrRef', 'SliderWidget', 'TextInputWidget', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_app', '_bottle_util', '_cached_extra_study_property', '_form_widget', '_importance', '_named_objectives', '_note', '_pareto_front', '_rdb_migration', '_serializer', '_storage', '_storage_url', 'artifact', 'dict_to_form_widget', 'get_note', 'register_objective_form_widgets', 'register_user_attr_form_widgets', 'run_server', 'save_note', 'set_objective_names', 'wsgi']

2.3、如何使用

对于使用方法,如果有看本人前面发布的一篇超参数优化的文章,Hyperopt:分布式异步超参数优化(Distributed Asynchronous Hyperparameter Optimization)
上手就更加简单易懂了,原理都是将参数指定在一个分布空间里面,然后对需要优化的函数进行迭代,找出最佳的参数。
我们先来看一个示例,看下对函数(x-2)²的优化情况:

import optuna

# 需要优化的函数
def objective(trial):
    x = trial.suggest_float('x', -10, 10)
    return (x - 2) ** 2

# 使用study对象的optimize来优化,里面的参数是上面定义的方法,以及迭代次数
study = optuna.create_study()
study.optimize(objective, n_trials=20)

print(study.best_params)
#{'x': 2.128194654190586}

20次迭代的结果还是不错的,跟2比较接近了,当然这个n_trials迭代次数越多,最佳值就会越优。

2.4、鸢尾花数据集

我们依然使用鸢尾花的数据集来进行测试,这里需要用到sklearn,所以没有安装的,可以先进行安装:
pip3 install --user scikit-learn -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

import optuna
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

iris = datasets.load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)

def objective(trial):
    C = trial.suggest_float('C', 1e-5, 1e5)
    gamma = trial.suggest_float('gamma', 1e-5, 1e5)
    clf = SVC(C=C, gamma=gamma)
    clf.fit(X_train, y_train)
    score = clf.score(X_test, y_test)
    return score

study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=100)

print(study.best_params,study.best_value)

3、仪表盘可视化

确保在前面安装了optuna_dashboard,然后我们来看下可视化的情况。

import optuna

# 需要优化的函数
def objective(trial):
    x = trial.suggest_float('x', -10, 10)
    return (x - 2) ** 2

# 使用study对象的optimize来优化,里面的参数是上面定义的方法,以及迭代次数
study = optuna.create_study(sampler=optuna.samplers.TPESampler(), storage='sqlite:///db.sqlite3')
study.optimize(objective, n_trials=50)

print(study.best_params)

代码可以看到,我们是将数据保存在了sqlite的数据库里面,在当前目录可以看到有一个db.sqlite3数据库文件,然后可视化就是对这些保存的数据画图,也就是说省略了自己去手工画图的意思。
打开新的命令行输入:optuna-dashboard sqlite:///db.sqlite3

Listening on http://127.0.0.1:8080/
Hit Ctrl-C to quit

然后我们在浏览器中输入,上面的地址:http://127.0.0.1:8080/
这样就会出现优化迭代的仪表盘了,如下图: 

有兴趣的也可以直接查看数据库的情况:sqlite3 db.sqlite3
里面有很多张表,如下图: 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1113595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业数据泄密的场景有哪些?怎样斩断员工泄密风险?

企业数据泄露事件频频发生、屡禁不止,根据美国威瑞森通信公司(Verizon)《2023 Data Breach Investigations Report》,由外部攻击导致的数据泄露事件中,95%的外部攻击是以金钱利益为驱使的。同样,闪捷发布的…

开发者视角下的直播实时美颜SDK:集成和自定义的方法

在今天的数字时代,视频直播已经成为了一种强大的社交工具和娱乐方式。为了让直播内容更吸引人,实时美颜技术已经成为直播应用的重要组成部分。本文将从开发者的角度探讨如何集成和自定义直播实时美颜SDK,以满足用户的美颜需求。 一、什么是直…

算法通关村-----归并排序

基本原理 归并排序采用分治的思想,即分而治之,分就是将一个大问题分成一些小问题求解,治就是将分得的小问题得到的答案和在一起,得到最终的结果。体现在归并排序上,就是将大的数组分成小的序列,一直分到每…

Android问题笔记 - 关于SuperNotCalledException报错异常信息的解决方案

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

解决win10远程桌面连接出现的“身份验证错误,要求的函数不支持”问题

用win10远程左面连接window服务器,出现上面问题。出现身份验证错误,要求的函数不支持。可以使用以下方法来解决: 1、winr键:输入gpedit.msc,然后回车 选择计算机配置>管理模板>系统>凭据分配>加密Oracle/…

四川云汇优想:短视频矩阵运营方案

短视频矩阵运营方案是为了提高短视频平台的用户黏性和活跃度,从而增强用户粘性和平台的商业价值而制定的。下面四川百幕晟小编将对短视频矩阵运营方案进行详细的介绍和分析。 首先,短视频矩阵运营方案要注重用户精细化运营。通过用户画像和兴趣标签&…

apple pencil一定要买吗?平价电容笔推荐

现在,电容笔在在线办公和在线教育领域非常流行,那么平替电容笔会不会代替原装的苹果笔呢?实际上,也不一定要买苹果的原装电容笔。一款平替式电容笔,售价只要一两百块钱,比苹果原装的那款电容笔要便宜不少&a…

众佰诚:抖音小店如何起店名好

在当今社会,随着互联网的发展,越来越多的人选择在网上开设自己的小店。抖音作为目前最受欢迎的短视频平台之一,也吸引了大量的商家入驻。那么,如何在抖音上开设一家有特色的小店呢?首先,我们需要为我们的小店起一个好…

LiveQing视频点播流媒体RTMP推流服务功能-如何配置资源进行轮巡播放视频轮播分屏展示

LiveQing视频点播流媒体RTMP推流服务功能-如何配置资源进行轮巡播放视频轮播分屏展示 1、分屏展示2、右击节点新建分组3、配置轮播间隔(秒)4、选择资源5、轮巡播放6、停止分组播7、切换播放的流类型8、RTMP推流视频直播和点播流媒体服务 1、分屏展示 2、右击节点新建…

嵌入式实时操作系统的设计与开发 (第一级内存管理算法)

伙伴算法及实现上的改进 可变内存管理,随着内存的不断分配和回收,即使系统中有1MB的内存,也可能因没法分配大小为100KB的连续内存块而造成分配失败。 伙伴系统,可以大大改善这一情况。 伙伴系统的缺点: 仅管大小为2…

中了devos勒索病毒后如何正确解决,勒索病毒解密,数据恢复

对于企业来说,企业的计算机网络安全防护非常有必要,不然很容易被黑客攻击,最近一段时间我们接到客户求助,企业的服务器被Devos勒索病毒攻击,导致企业的计算机无法正常使用。经过云天数据恢复中心的工程师分析&#xff…

Talk | UCSD博士生刘明华:在开放的世界中理解和生成3D物体

本期为TechBeat人工智能社区第539期线上Talk。 北京时间10月19日(周四)20:00,加州大学圣地亚哥分校博士生—刘明华的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “在开放的世界中理解和生成3D物体”&#xff0…

未来装备探索:数字孪生装备

源自:《计算机集成制造系统》 作者:陶飞 张辰源 张贺 程江峰 邹孝付 徐慧 王勇 谢兵兵 “人工智能技术与咨询” 发布 摘 要 工程装备、制造装备、医疗装备等各类装备是加快国家基础建设,提升国家经济实力和保障医疗健康的重要…

【Linux07-进程间通信】侧重 管道 和 SystemV 的进程间通信讲解

今天,带来Linux下的进程间通信讲解。文中不足错漏之处望请斧正! 是什么 进程间通信,Inter-Process Communication(IPC): 进程间通过访问同一块内存空间来进行数据的交流。 为什么 为什么要有IPC,它的作用是什么&am…

AI杀疯!2023上半年至今有趣的AI算法(内附视频)

公众号:算法一只狗 文章目录 第一个,一切都可以进行分割第二个,开源图文回答工具第三个,视频转换风格生成第四个,免费好用的文档对话工具文档对话能力文档联系功能 今年,我们见证了人工智能算法的起飞&…

java如何导入导出excel

在Java中,可以使用多种方式导入和导出Excel文件。下面将详细介绍几种常见的方法及其实现步骤: 1. Apache POI库: Apache POI是一个开源的Java库,提供了许多类和方法用于处理Microsoft Office格式的文档,包括Excel文件…

关于刷题时使用数组的小注意事项

💯 博客内容:关于刷题时使用数组的小技巧 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家&#…

我们做播客这些年的自我进化

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 姝琦 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 这是一期荔枝播客十周年活动的特别节目,借这次机会,我们几位主播也借此机会沉淀下…

RHCE8 资料整理(二)

RHCE8 资料整理 第二篇 用户及权限管理第8章 用户管理8.1 基本概念8.2 管理用户8.2.1 创建用户8.2.2 修改用户属性 8.3 用户的密码策略8.4 用户授权8.5 重置root密码 第9章 权限管理9.1 所有者和所属组9.2 查看及修改权限9.3 数字权限9.4 默认权限9.5 特殊权限9.6 隐藏权限 第1…

C++前缀和算法应用:和至少为 K 的最短子数组的原理、源码及测试用例

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 给你一个整数数组 nums 和一个整数 k ,找出 nums 中和至少为 k 的 最短非空子数组 ,并返回该子数组的长度。如果不存在这样的 子数组 &a…