超参数优化--贝叶斯方法
直接讲方法,原理另外讲
贝叶斯优化是当今黑盒函数估计领域最为先进和经典的方法,在同一套序贯模型下使用不同的代理模型以及采集函数、还可以发展出更多更先进的贝叶斯优化改进版算法,因此,贝叶斯优化的其算法本身就多如繁星,实现各种不同种类的贝叶斯优化的库也是琳琅满目,几乎任意一个专业用于超参数优化的工具库都会包含贝叶斯优化的内容。我们可以在以下页面找到大量可以实现贝叶斯优化方法的HPO库:https://www.automl.org/automl/hpo-packages/ ,其中大部分库都是由独立团队开发和维护,因此不同的库之间之间的优劣、性格、功能都有很大的差异。在课程中,我们将介绍如下三个可以实现贝叶斯优化的库:bayesian-optimization
,hyperopt
,optuna
。
HPO库 | 优劣评价 | 推荐指数 |
---|---|---|
bayes_opt |
✅实现基于高斯过程的贝叶斯优化 ✅当参数空间由大量连续型参数构成时 ⛔包含大量离散型参数时避免使用 |
⭐⭐ |
hyperopt |
✅实现基于TPE的贝叶斯优化 ✅支持各类提效工具 ✅进度条清晰,展示美观,较少怪异警告或报错 ✅可推广/拓展至深度学习领域 ⛔不支持基于高斯过程的贝叶斯优化 |
⭐⭐⭐⭐ |
optuna |
✅(可能需结合其他库)实现基于各类算法的贝叶斯优化 ✅代码最简洁,同时具备一定的灵活性 ✅可推广/拓展至深度学习领域 ⛔非关键性功能维护不佳,有怪异警告与报错 |
⭐⭐⭐⭐ |
注意,以上三个库都不支持基于Python环境的并行或加速,大多数优化算法库只能够支持基于数据库(如MangoDB,mySQL)的并行或加速,但以上库都可以被部署在分布式计算平台。
三个库极其辅助包的安装方法分别如下,使用pip或conda安装时注意关闭梯子。
!pip install bayesian-optimization
!pip install hyperopt
!pip install optuna
# Skopt(作为Optuna辅助包安装,也可单独使用)
!pip install scikit-optimize#基本工具
import numpy as np
import pandas as pd
import time
import os #修改环境设置#算法/损失/评估指标等
import sklearn
from sklearn.ensemble import RandomForestRegressor as RFR
from sklearn.model_selection import KFold, cross_validate#优化器
from bayes_opt import BayesianOptimizationimport hyperopt
from hyperopt import hp, fmin, tpe, Trials, partialimport optuna
基于Bayes_opt实现GP优化
bayes-optimization是最早开源的贝叶斯优化库之一,也是为数不多至今依然保留着高斯过程优化的优化库。由于开源较早、代码简单,bayes-opt常常出现在论文、竞赛kernels或网络学习材料当中,因此理解Bayes_opt的代码是极其重要的课题。不过,bayes-opt对参数空间的处理方式较为原始,也缺乏相应的提效/监控功能,对算力的要求较高,因此它往往不是我们进行优化时的第一首选库。通常来说,当且仅当我们必须要实现基于高斯过程的贝叶斯优化,且算法的参数空间中带有大量连续型参数时,我们才会优先考虑Bayes_opt库。我们可以在github上找到bayes-optmization的官方文档(https://github.com/fmfn/BayesianOptimization)
1 定义目标函数
目标函数的值即
超参数优化--贝叶斯方法相关推荐
- 超参数优化 贝叶斯优化框架_mlmachine-使用贝叶斯优化进行超参数调整
超参数优化 贝叶斯优化框架 机器 (mlmachine) TL; DR (TL;DR) mlmachine is a Python library that organizes and acceler ...
- 超参数优化 贝叶斯优化框架_10个超参数优化框架
超参数优化 贝叶斯优化框架 Tune your Machine Learning models with open-source optimization libraries 使用开源优化库调整机器学 ...
- [机器学习]超参数优化---贝叶斯优化(Bayesian Optimization) 理解
背景 很多算法工程师戏谑自己是调参工程师,因为他们需要在繁杂的算法参数中找到最优的组合,往往在调参的过程中痛苦而漫长的度过一天.如果有一种方式可以帮助工程师找到最优的参数组合,那一定大有裨益,贝叶斯超 ...
- 超参数优---贝叶斯优化及其改进(PBT优化)
目录 参考文献: 简介 贝叶斯优化方法为什么好 贝叶斯优化的适用条件 贝叶斯优化的历史与在神经网络中的应用 贝叶斯优化基本原理与流程 贝叶斯优化的经典变种及其文章 Python中的贝叶斯优化库 贝叶斯 ...
- 【机器学习】五种超参数优化技巧
转载:我不爱机器学习 超参数是用于控制学习过程的不同参数值,对机器学习模型的性能有显著影响. 超参数优化是找到超参数值的正确组合,以在合理的时间内实现数据的最大性能的过程 1 数据处理 import ...
- 前沿 | DeepMind改进超参数优化:遗传算法效果超越贝叶斯
编译 | 林椿眄 从围棋.Atari游戏到图像识别.语言翻译领域,神经网络都已经取得了重大的突破.但是,经常被人忽略的是,神经网络的成功是在特定的应用情景下所取得,这些情景通常是在一系列研究的开始就确 ...
- 贝叶斯优化神经网络参数_贝叶斯超参数优化:神经网络,TensorFlow,相预测示例
贝叶斯优化神经网络参数 The purpose of this work is to optimize the neural network model hyper-parameters to est ...
- 超参数优化(网格搜索和贝叶斯优化)
超参数优化 1 超参数优化 1.1 网格搜索类 1.1.1 枚举网格搜索 1.1.2 随机网格搜索 1.1.3 对半网格搜索(Halving Grid Search) 1.2 贝叶斯超参数优化(推荐) ...
- 使用贝叶斯优化进行深度神经网络超参数优化
在本文中,我们将深入研究超参数优化. 为了方便起见本文将使用 Tensorflow 中包含的 Fashion MNIST[1] 数据集.该数据集在训练集中包含 60,000 张灰度图像,在测试集中包含 ...
最新文章
- 在 Linux 命令行上编辑照片的 4 种方法
- 【NLP】可交互的 Attention 可视化工具!我的Transformer可解释性有救了?
- java 正则 小数_详解Java判断是否是整数,小数或实数的正则表达式
- Spring MVC @ModelAttribute 详解
- 数据湖分析如何面向对象存储OSS进行优化?
- scala 去除重复元素_Scala程序从列表中删除重复项
- python 格式化输出%和format
- 递归不行就换动态规划(洛谷P1028题题解,Java语言描述)
- 学习 etcd watch api
- poidoc转换成html乱码,JAVA 利用POI实现DOC转HTML的方法及BUG修改
- 模拟电子技术基础(一)
- 多元统计分析——多元线性回归
- aardio - 【库】内存画板 paint
- TCTrack: Temporal Contexts for Aerial Tracking
- 什么是diff算法?
- onBlur和onChange冲突解决方法
- idou老师教你学istio :基于角色的访问控制
- a1708硬盘转接口_macbook pro2017 a1708转接卡更换大容量硬盘,Apple/苹果笔记本电脑_好文分享_优购 - 荐优,购适...
- 你还在找音乐网站吗?试试这几个吧
- C - Fewest Flops
热门文章
- 晶闸管的结构及工作原理
- python爬取网站实例,Python爬取网页简单示例
- 局域网两台电脑同步时间
- 二十多岁该做些什么,将来才不会后悔?
- 番茄最新小说《九鼎记》
- linux的双核浏览器,一种Linux浏览器实现WebKit/IE双核无缝浏览系统及方法与流程...
- Haproxy(三)详细记录 2018年01月05日 16:47:36
- Python中setattr()、getattr()、hasattr() 函数
- 将给定非负整数列表中的数字排列成最大数字的2种方法。例如,给定[50,2,1,9],最大数字为95021。
- iconfont的图标使用Unicode格式的实现