optuna.terminator.EMMREvaluator

class optuna.terminator.EMMREvaluator(deterministic_objective=False, delta=0.1, min_n_trials=2, seed=None)[source]

Expected Minimum Model Regret (EMMR) と呼ばれる後悔量を評価するクラスです。

EMMRは最適化プロセスにおける「期待最小単純後悔」の上界として定義されます。

期待最小単純後悔は、最適化プロセスが真の最適解を発見した場合にのみ ゼロに収束する量です。

期待最小単純後悔と本アルゴリズムの詳細については、以下の論文を参照してください:

また、本評価器の解説記事を以下に掲載しています:

Parameters:
  • deterministic_objective (bool) – 目的関数が決定論的かどうかを示すブール値。 デフォルトは False です。

  • delta (float) – 終了判定基準に関連する浮動小数点数。デフォルトは 0.1。 このパラメータの詳細については、前述の論文を参照してください。

  • min_n_trials (int) – 終了判定基準を計算するための最小試行回数。デフォルトは 2。

  • seed (int | None) – EMMREvaluatorで使用する乱数シード。

使用例

import optuna
from optuna.terminator import EMMREvaluator
from optuna.terminator import MedianErrorEvaluator
from optuna.terminator import Terminator

sampler = optuna.samplers.TPESampler(seed=0)
study = optuna.create_study(sampler=sampler, direction="minimize")
emmr_improvement_evaluator = EMMREvaluator()
median_error_evaluator = MedianErrorEvaluator(emmr_improvement_evaluator)
terminator = Terminator(
    improvement_evaluator=emmr_improvement_evaluator,
    error_evaluator=median_error_evaluator,
)


for i in range(1000):
    trial = study.ask()

    ys = [trial.suggest_float(f"x{i}", -10.0, 10.0) for i in range(5)]
    value = sum(ys[i] ** 2 for i in range(5))

    study.tell(trial, value)

    if terminator.should_terminate(study):
        # 最適化プロセスが終了しました。
        break

Note

バージョン 4.0.0 で実験的機能として追加されました。インターフェースは予告なく変更される可能性があります。 詳細は https://github.com/optuna/optuna/releases/tag/v4.0.0 を参照してください。

メソッド

evaluate(trials, study_direction)