Skip to main content

超参数优化框架

项目描述

Optuna:超参数优化框架

Python 皮皮 康达 GitHub 许可证 圈子CI 阅读文档 编解码器 吉特聊天

网站 | 文档 | 安装指南 | 教程

Optuna是一个自动超参数优化软件框架,专为机器学习而设计。它具有命令式、运行时定义的用户 API。由于我们的 define-by-run API,使用Optuna编写的代码具有高度模块化,并且Optuna的用户可以动态地构建超参数的搜索空间。

消息

  • 2022-02-14 Optuna 3.0 的预发布版本可用!早期采用者可能希望升级并提供反馈,以便更顺畅地过渡到即将到来的完整版本。您可以通过pip install -U --pre optuna. 在这里找到最新的

  • 2021-10-11 Optuna 3.0 路线图发布以供审查。请查看对 Optuna 的计划改进,并在 github 问题中分享您的反馈。也欢迎 PR 贡献!

主要特征

Optuna 具有以下现代功能:

基本概念

我们使用以下术语研究试验

  • 研究:基于目标函数的优化
  • 试验:目标函数的单次执行

请参考下面的示例代码。研究的目标是通过多次试验(例如 )找出最佳的超参数值集(例如regressor和)。Optuna 是为优化研究的自动化和加速而设计的框架。svr_cn_trials=100

在 Colab 中打开

import ...

# Define an objective function to be minimized.
def objective(trial):

    # Invoke suggest methods of a Trial object to generate hyperparameters.
    regressor_name = trial.suggest_categorical('regressor', ['SVR', 'RandomForest'])
    if regressor_name == 'SVR':
        svr_c = trial.suggest_float('svr_c', 1e-10, 1e10, log=True)
        regressor_obj = sklearn.svm.SVR(C=svr_c)
    else:
        rf_max_depth = trial.suggest_int('rf_max_depth', 2, 32)
        regressor_obj = sklearn.ensemble.RandomForestRegressor(max_depth=rf_max_depth)

    X, y = sklearn.datasets.fetch_california_housing(return_X_y=True)
    X_train, X_val, y_train, y_val = sklearn.model_selection.train_test_split(X, y, random_state=0)

    regressor_obj.fit(X_train, y_train)
    y_pred = regressor_obj.predict(X_val)

    error = sklearn.metrics.mean_squared_error(y_val, y_pred)

    return error  # An objective value linked with the Trial object.

study = optuna.create_study()  # Create a new study.
study.optimize(objective, n_trials=100)  # Invoke optimization of the objective function.

例子

示例可以在optuna/optuna-examples中找到。

集成

集成模块,允许修剪或提前停止没有希望的试验,可用于以下库:

网络仪表板(实验性)

optuna-dashboard正在开发新的 Web 仪表板。它仍然是实验性的,但在许多方面要好得多。欢迎功能请求和错误报告!

管理研究 使用交互式图表进行可视化
管理研究 optuna 实时图

optuna-dashboard通过 pip安装:

$ pip install optuna-dashboard
$ optuna-dashboard sqlite:///db.sqlite3
...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.

安装

Optuna 在Python Package IndexAnaconda Cloud上可用。

# PyPI
$ pip install optuna
# Anaconda Cloud
$ conda install -c conda-forge optuna

Optuna 支持 Python 3.6 或更高版本。

此外,我们还在 DockerHub 上提供了 Optuna docker镜像

沟通

贡献

任何对 Optuna 的贡献都非常受欢迎!

如果您是 Optuna 的新手,请查看良好的第一个问题。它们相对简单、定义明确,通常是您熟悉贡献工作流程和其他开发人员的良好起点。

如果您已经为 Optuna 做出过贡献,我们推荐其他的贡献欢迎问题

有关如何为项目做出贡献的一般指南,请查看CONTRIBUTING.md

参考

秋叶拓哉、佐野翔太郎、柳濑俊彦、太田健、小山正典。2019. Optuna:下一代超参数优化框架。在 KDD ( arXiv ) 中。