文章目录

  • 引言
  • 基本介绍
  • github上示例

引言

Optuna 是一个特别为机器学习设计的自动超参数优化软件框架。它具有命令式的,define-by-run 风格的 API。由于这种 API 的存在,用 Optuna 编写的代码模块化程度很高,Optuna 的用户因此也可以动态地构造超参数的搜索空间。
更多功能可参见optuna

基本介绍

简单介绍一下optuna里最重要的几个term。

在optuna里最重要的三个term:
(1)Trial:目标函数的单次执行过程
(2)Study:基于目标函数的优化过程, 一个优化超参的session,由一系列的trials组成;
(3)Parameter:需要优化的超参;

study

在optuna里,study对象用来管理对超参的优化,optuna.create_study()返回一个study对象。
study又有很多有用的 property:
(1)study.best_params:搜出来的最优超参;
(2)study.best_value:最优超参下,objective函数返回的值 (如最高的Acc,最低的Error rate等);
(3)study.best_trial:最优超参对应的trial,有一些时间、超参、trial编号等信息;
(4)study.optimize(objective, n_trials):对objective函数里定义的超参进行搜索;

搜索方式

optuna支持很多种搜索方式:
(1)trial.suggest_categorical(‘optimizer’, [‘MomentumSGD’, ‘Adam’]):表示从SGD和adam里选一个使用;
(2)trial.suggest_int(‘num_layers’, 1, 3):从1~3范围内的int里选;
(3)trial.suggest_uniform(‘dropout_rate’, 0.0, 1.0):从0~1内的uniform分布里选;
(4)trial.suggest_loguniform(‘learning_rate’, 1e-5, 1e-2):从1e-5~1e-2的log uniform分布里选;
(5)trial.suggest_discrete_uniform(‘drop_path_rate’, 0.0, 1.0, 0.1):从0~1且step为0.1的离散uniform分布里选;

一个 study 的目的是通过多次 trial (例如 n_trials=100 ) 来找出最佳的超参数值集,而 Optuna 旨在加速和自动化此类 study 优化过程。

github上示例

XGBoostPruningCallback

"""
Optuna example that demonstrates a pruner for XGBoost.
In this example, we optimize the validation accuracy of cancer detection using XGBoost.——
We optimize both the choice of booster model and their hyperparameters. Throughout
training of models, a pruner observes intermediate results and stop unpromising trials.
You can run this example as follows:$ python xgboost_integration.py
"""import numpy as np
import sklearn.datasets
import sklearn.metrics
from sklearn.model_selection import train_test_split
import xgboost as xgbimport optuna# FYI: Objective functions can take additional arguments
# (https://optuna.readthedocs.io/en/stable/faq.html#objective-func-additional-args).
def objective(trial):data, target = sklearn.datasets.load_breast_cancer(return_X_y=True)train_x, valid_x, train_y, valid_y = train_test_split(data, target, test_size=0.25)dtrain = xgb.DMatrix(train_x, label=train_y)dvalid = xgb.DMatrix(valid_x, label=valid_y)param = {"verbosity": 0,"objective": "binary:logistic","eval_metric": "auc","booster": trial.suggest_categorical("booster", ["gbtree", "gblinear", "dart"]),"lambda": trial.suggest_float("lambda", 1e-8, 1.0, log=True),"alpha": trial.suggest_float("alpha", 1e-8, 1.0, log=True),}if param["booster"] == "gbtree" or param["booster"] == "dart":param["max_depth"] = trial.suggest_int("max_depth", 1, 9)param["eta"] = trial.suggest_float("eta", 1e-8, 1.0, log=True)param["gamma"] = trial.suggest_float("gamma", 1e-8, 1.0, log=True)param["grow_policy"] = trial.suggest_categorical("grow_policy", ["depthwise", "lossguide"])if param["booster"] == "dart":param["sample_type"] = trial.suggest_categorical("sample_type", ["uniform", "weighted"])param["normalize_type"] = trial.suggest_categorical("normalize_type", ["tree", "forest"])param["rate_drop"] = trial.suggest_float("rate_drop", 1e-8, 1.0, log=True)param["skip_drop"] = trial.suggest_float("skip_drop", 1e-8, 1.0, log=True)# Add a callback for pruning.pruning_callback = optuna.integration.XGBoostPruningCallback(trial, "validation-auc")bst = xgb.train(param, dtrain, evals=[(dvalid, "validation")], callbacks=[pruning_callback])preds = bst.predict(dvalid)pred_labels = np.rint(preds)accuracy = sklearn.metrics.accuracy_score(valid_y, pred_labels)return accuracyif __name__ == "__main__":study = optuna.create_study(pruner=optuna.pruners.MedianPruner(n_warmup_steps=5), direction="maximize")study.optimize(objective, n_trials=100)print(study.best_trial)

模型调参(AutoML)— optuna相关推荐

  1. python网格搜索核函数_机器学习笔记——模型调参利器 GridSearchCV(网格搜索)参数的说明...

    算法 数据结构 机器学习笔记--模型调参利器 GridSearchCV(网格搜索)参数的说明 GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数.但是这个 ...

  2. ML之XGBoost:利用XGBoost算法对波士顿数据集回归预测(模型调参【2种方法,ShuffleSplit+GridSearchCV、TimeSeriesSplitGSCV】、模型评估)

    ML之XGBoost:利用XGBoost算法对波士顿数据集回归预测(模型调参[2种方法,ShuffleSplit+GridSearchCV.TimeSeriesSplitGSCV].模型评估) 目录 ...

  3. DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优

    DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优 目录 基于keras对LSTM算法进行超参数调优 1.可视化LSTM模型的loss和acc曲线

  4. DL之模型调参:深度学习算法模型优化参数之对深度学习模型的超参数采用网格搜索进行模型调优(建议收藏)

    DL之模型调参:深度学习算法模型优化参数之对深度学习模型的超参数采用网格搜索进行模型调优(建议收藏) 目录 神经网络的参数调优 1.神经网络的通病-各种参数随机性 2.评估模型学习能力

  5. 炼丹神器!模型调参这门“玄学”,终于被破解了

    吃一个苹果要几步?这对普通人来说,是一件很简单的事. 那么AI模型调参需要几步呢?调参是机器学习中至关重要的一环,因其复杂性而被称之为一门"玄学".这对开发小白和AI专业算法工程师 ...

  6. AIRec个性化推荐召回模型调参实战

    简介:本文是<AIRec个性化推荐召回模型调参实战(电商.内容社区为例)>的视频分享精华总结,主要由阿里巴巴的产品专家栀露向大家分享AIRec个性化推荐召回模型以及针对这些召回模型在电商和 ...

  7. 大数据预测实战-随机森林预测实战(四)-模型调参

    之前对比分析的主要是数据和特征层面,还有另一部分非常重要的工作等着大家去做,就是模型调参问题,在实验的最后,看一下对于树模型来说,应当如何进行参数调节. 调参是机器学习必经的一步,很多方法和经验并不是 ...

  8. Kaggle泰坦尼克号生存预测挑战——模型建立、模型调参、融合

    Kaggle泰坦尼克号生存预测挑战 这是kaggle上Getting Started 的Prediction Competition,也是比较入门和简单的新人赛,我的最好成绩好像有进入top8%,重新 ...

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

    模型调参之网格搜索与随机搜索 网格搜索法(GridSearchCV) GridSearchCV:GridSearchCV可以拆分成GridSearch和CV两部分,即网格搜素和交叉验证.GridSea ...

  10. ML之R:通过数据预处理利用LiR/XGBoost等(特征重要性/交叉训练曲线可视化/线性和非线性算法对比/三种模型调参/三种模型融合)实现二手汽车产品交易价格回归预测之详细攻略

    ML之R:通过数据预处理利用LiR/XGBoost等(特征重要性/交叉训练曲线可视化/线性和非线性算法对比/三种模型调参/三种模型融合)实现二手汽车产品交易价格回归预测之详细攻略 目录 三.模型训练 ...

最新文章

  1. rtos与linux软件开发,实时Linux和RTOS的基本特性及技术进行比较
  2. 每天一道LeetCode-----判断二叉树左右两边是否成镜像关系
  3. 图像局部特征(三)--FAST角点检测子
  4. html经过菜单变色移开恢复,h5学习笔记:transition菜单过渡变色
  5. mac视频播放器哪个最好用?不妨试试OmniPlayer Pro mac中文版吧
  6. VBA代码宝工具箱(陈表达)
  7. homeassistant 快速入门
  8. [python爬虫]爬取英雄联盟所有英雄数据并下载所有英雄皮肤
  9. 理论小知识:获取AUTO_INCREMENT值
  10. iOS辅助功能Accessibility浅析
  11. html和requests得基本用法
  12. 第15周项目二—洗牌(1)
  13. java乘法逆元与除法取模,关于数论乘法逆元及相关知识点
  14. JAVA计算机毕业设计橱柜定制系统Mybatis+系统+数据库+调试部署
  15. 使用FFmpeg 批量处理视频
  16. HashMap面试题
  17. Mac 硬件驱动 kext 安装方法
  18. 私有化的IM即时通讯平台,企业首选的沟通工具
  19. 如何确定等势面_电势高低的判断方法有哪些
  20. 网络语言为你打c,2018十大网络流行语横空出世,你知道几个?你out了吗?

热门文章

  1. myeclipse 安装svn(subeclipsesite)插件
  2. 一步步学习SPD2010--第十四章节--在Web页面使用控件(2)--使用标准ASP.NET服务器控件...
  3. (翻译)《介绍 GENEVA Beta 1 白皮书》(3)
  4. HTML CSS设计与构建网站
  5. 深度学习网络架构(三):VGG
  6. Bootstrap 滚动监听(Scrollspy)插件
  7. Inno Setup入门(三)——指定压缩方式
  8. hexo+github
  9. 对MAC自带的SVN进行升级
  10. 题目1088:剩下的树(小端快排+大端判断边界)