超参数优化框架
optuna的Python项目详细描述
optuna:一个超参数优化框架
Website |Docs |Install Guide |Tutorial
optuna是一个自动超参数优化软件框架,特别是 用于机器学习。它具有一个命令式的define by run样式的用户api。感谢我们 define by runapi,使用optuna编写的代码具有很高的模块性,并且 optuna可以动态地构造超参数的搜索空间。
主要功能
Optuna具有以下现代功能:
- 并行分布式优化
- 删减没有希望的试验
- 轻量级、多用途和平台无关的体系结构
基本概念
我们使用术语study和trial如下:
- 研究:基于目标函数的优化
- 试验:单次执行目标函数
请参考下面的示例代码。一项研究的目标是找出
通过多次试验得出的超参数值(例如classifier
和svm_c
)(例如,
n_trials=100
)。Optuna是为自动化和加速
优化研究。
import...# Define an objective function to be minimized.defobjective(trial):# Invoke suggest methods of a Trial object to generate hyperparameters.regressor_name=trial.suggest_categorical('classifier',['SVR','RandomForest'])ifregressor_name=='SVR':svr_c=trial.suggest_loguniform('svr_c',1e-10,1e10)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.load_boston(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)returnerror# A 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,请按如下方式使用pip
:
$ pip install optuna
Optuna支持Python2.7和Python3.5或更新版本。
贡献
欢迎对Optuna的任何贡献!当您发送拉取请求时,请按照 contribution guide。
许可证
麻省理工学院许可证(见LICENSE)。
参考
Takuya Akiba、Shotaro Sano、Toshihiko Yanase、Takeru Ohta和Masanori Koyama。2019年。 optuna:下一代超参数优化框架。在kdd中(出现)。