簡體   English   中英

Optuna 多目標優化的最佳參數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM