[英]Best parameters of an Optuna multi-objective optimization
使用Optuna执行单目标优化时,可以使用以下方法访问研究的最佳参数:
import optuna
def objective(trial):
x = trial.suggest_uniform('x', -10, 10)
return (x - 2) ** 2
study = optuna.create_study(direction='minimize')
study.optimize(objective, n_trials=100)
study.best_params # E.g. {'x': 2.002108042}
如果我想执行多目标优化,这将成为例如:
import optuna
def multi_objective(trial):
x = trial.suggest_uniform('x', -10, 10)
f1 = (x - 2) ** 2
f2 = -f1
return f1, f2
study = optuna.create_study(directions=['minimize', 'maximize'])
study.optimize(multi_objective, n_trials=100)
这可行,但命令study.best_params
失败并出现RuntimeError: The best trial of a 'study' is only supported for single-objective optimization.
如何获得多目标优化的最佳参数?
在多目标优化中,您通常会得到不止一个最佳试验,而是一组试验。 这个集合如果经常被称为帕累托前沿。 您可以通过study.best_trials
获取此 Pareto 前沿或试验列表,然后查看每个单独试验的参数,即study.best_trials[some_index].params
。
例如,给定最小化f1
和最大化f2
的方向,您最终可能会得到一个f1
值较小(好)但同时f2
值较小(坏)的试验,而另一个试验可能具有较大的值对于f1
(坏)和f2
(好)。 这两个试验都可以从study.best_trials
中返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.