optuna.pruners.ThresholdPruner

class optuna.pruners.ThresholdPruner(lower=None, upper=None, n_warmup_steps=0, interval_steps=1)[source]

トライアルの異常値を検出するプルーナー。

メトリクスが上限閾値を超えた場合、下限閾値を下回った場合、 または nan に達した場合にプルーニングを実行します。

使用例

from optuna import create_study
from optuna.pruners import ThresholdPruner
from optuna import TrialPruned


def objective_for_upper(trial):
    for step, y in enumerate(ys_for_upper):
        trial.report(y, step)

        if trial.should_prune():
            raise TrialPruned()
    return ys_for_upper[-1]


def objective_for_lower(trial):
    for step, y in enumerate(ys_for_lower):
        trial.report(y, step)

        if trial.should_prune():
            raise TrialPruned()
    return ys_for_lower[-1]


ys_for_upper = [0.0, 0.1, 0.2, 0.5, 1.2]
ys_for_lower = [100.0, 90.0, 0.1, 0.0, -1]

study = create_study(pruner=ThresholdPruner(upper=1.0))
study.optimize(objective_for_upper, n_trials=10)

study = create_study(pruner=ThresholdPruner(lower=0.0))
study.optimize(objective_for_lower, n_trials=10)
Parameters:
  • lower (float | None) – プルーナーがプルーニングを実行するかどうかを決定する最小値。 中間値がこの値より小さい場合にプルーニングを実行します。

  • upper (float | None) – プルーナーがプルーニングを実行するかどうかを決定する最大値。 中間値がこの値より大きい場合にプルーニングを実行します。

  • n_warmup_steps (int) – 指定されたウォームアップステップ数未満のステップではプルーニングが無効になります。

  • interval_steps (int) – プルーニングチェック間のステップ間隔(ウォームアップステップをオフセット)。 プルーニングチェック時点で値が報告されていない場合、 そのチェックは値が報告されるまで延期されます。値は少なくとも1である必要があります。

メソッド

prune(study, trial)

Judge whether the trial should be pruned based on the reported values.

prune(study, trial)[source]

報告された値に基づいてトライアルをプルーニングするかどうかを判断します。

このメソッドはライブラリのユーザーが直接呼び出すことを想定していません。代わりに、 optuna.trial.Trial.report()optuna.trial.Trial.should_prune() が 目的関数内でプルーニング機構を実装するためのインターフェースを提供します。

Parameters:
  • study (Study) – 対象のスタディオブジェクト。

  • trial (FrozenTrial) – 対象のトライアルオブジェクト(FrozenTrial)。 このオブジェクトを変更する前にコピーを作成してください。

Returns:

トライアルをプルーニングするかどうかを表すブール値。

Return type:

bool