介绍
简单来说,OPtuna就是一个能够进行调整超参数的框架,它能够将自动调整超参数以及能够将超参数优化过程可视化,方便保存,分析。可拓展性较强。
使用方法
optuna的优化程序具体有三个组成部分。
- objective(目标函数),负责定义优化函数以及按照制定超参数的数值范围
- trial(单次实验),对应着objective的单次执行
- study(研究),负责管理优化,确定优化方式,实验总次数,时间结果的记录。
我们一般在objective函数中放置我们所需要优化的函数(一般为loss)
下列以文档中给出的例子为参考。(主要针对不同模型的参数进行设置,所以在objective里面设置即可)如果有其他的需求可以参考官方文档。
import optuna
import sklearn
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import load_digits
# 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('classifier', ['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 = RandomForestRegressor(max_depth=rf_max_depth)
X, y = load_digits(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(study_name='svm_test_optuna', direction='minimize') # Create a new study.
# 这里可以选择
study.optimize(objective, n_trials=10) # Invoke optimization of the objective function.
# 在这一步的时候需要运用pip install -U plotly>=4.0.0去安装plotly这个库进行每个trial的可视化
print(optuna.visualization.is_available())
# 如果需要运用到plot_optimization_history,需要在objective中加入step,但是目前我们没有
# trial.report(y, step=step)
# if trial.should_prune():
# raise optuna.TrialPruned()
# fig = optuna.visualization.plot_intermediate_values(study)
fig = optuna.visualization.plot_optimization_history(study)
fig.show()
print(study.best_params) # 最优参数
print(study.best_value) # 最有数值
print('successful')
返回的结果如下所示。
True
{‘classifier’: ‘SVR’, ‘svr_c’: 10748891.080318237}
0.5439382462559595
successful
参考资料
或许是东半球最好用的超参数优化框架: Optuna 简介
Optuna: 一个超参数优化框架(官方中文文档)
Optimize Your Optimization(官方网站)
Optuna: 一个超参数优化框架(官方英文文档)