微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Optuna 多目标优化的最佳参数

如何解决Optuna 多目标优化的最佳参数

使用 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)
    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 获取此帕累托前沿或试验列表,然后查看每个单独试验的参数,即 study.best_trials[some_index].params

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。