[英]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.