首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Optuna多目标优化的最佳参数

Optuna多目标优化的最佳参数
EN

Stack Overflow用户
提问于 2021-01-22 02:54:18
回答 1查看 1.2K关注 0票数 0

使用Optuna执行单目标优化时,可以使用以下方法获取研究的最佳参数:

代码语言:javascript
运行
复制
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}

如果我想要执行多目标优化,这将变成例如:

代码语言:javascript
运行
复制
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.而失败

如何获得多目标优化的最佳参数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-22 07:56:10

在多目标优化中,您通常会得到多个最佳试验,而不是一组试验。这个集合通常被称为帕累托前沿。你可以通过study.best_trials获得这个帕累托前沿,或试验列表,然后查看每个单独试验的参数,即study.best_trials[some_index].params

例如,给定最小化f1和最大化f2的方向,您可能会得到一个f1值较小(好)但同时f2值较小(不好)的试验,而另一个试验可能同时具有较大的f1 (不好)和f2 (好)值。这两个试验都可以从study.best_trials返回。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65833998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档