optuna.importance.PedAnovaImportanceEvaluator

class optuna.importance.PedAnovaImportanceEvaluator(*, baseline_quantile=0.1, evaluate_on_local=True)[source]

PED-ANOVA 重要度評価器

PED-ANOVA ハイパーパラメータ重要度評価アルゴリズムを実装

PED-ANOVA は COMPLETE トライアルの Parzen 推定器を ユーザ指定のベースラインよりも適切にフィットさせます。ユーザはクォンタイルで ベースラインを指定できます。重要度は、各ハイパーパラメータがベースラインよりも 優れた性能を達成する上でどれだけ重要かを示します。

PED-ANOVA アルゴリズムの詳細については、以下の論文を参照してください:

Note

PED-ANOVA の性能は、ベースラインを超えるトライアル数に依存します。分析を安定させるため、 少なくとも 5 トライアル以上をベースラインに含めることをお勧めします。

Note

元の研究 を参照してください。

Parameters:
  • baseline_quantile (float) – 上位 baseline_quantile クォンタイルの目的値を達成する重要性を計算します。 例えば、baseline_quantile=0.1 は、最適化中に上位 10% の性能を達成するのに 重要だったパラメータの情報を提供します。

  • evaluate_on_local (bool) – ローカル空間またはグローバル空間で重要度を測定するかどうか。 True の場合、重要度は最適化中の各パラメータの重要度を示します。 一方、evaluate_on_local=False は指定された search_space における 重要度を与えます。evaluate_on_local=True は、最適化中に探索空間を 変更する場合に特に便利です。

使用例

PED-ANOVA の使用例は以下の通りです:

import optuna
from optuna.importance import PedAnovaImportanceEvaluator


def objective(trial):
    x1 = trial.suggest_float("x1", -10, 10)
    x2 = trial.suggest_float("x2", -10, 10)
    return x1 + x2 / 1000


study = optuna.create_study()
study.optimize(objective, n_trials=100)
evaluator = PedAnovaImportanceEvaluator()
importance = optuna.importance.get_param_importances(study, evaluator=evaluator)

Note

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

メソッド

evaluate(study[, params, target])

Evaluate parameter importances based on completed trials in the given study.

evaluate(study, params=None, *, target=None)[source]

指定されたスタディの完了したトライアルに基づいてパラメータの重要度を評価します。

Note

このメソッドはライブラリユーザが直接呼び出すことを想定していません。

See also

具体的な evaluator がこのメソッドをどのように実装すべきかについては、 get_param_importances() を参照してください。

Parameters:
  • study (Study) – 最適化済みスタディ

  • params (list[str] | None) – 評価対象のパラメータ名のリスト None の場合、完了したすべてのトライアルに存在するパラメータが評価されます。

  • target (Callable[[FrozenTrial], float] | None) –

    重要度を評価する値を指定する関数 Nonestudy が単一目的最適化に使用されている場合、 目的値が使用されます。また、target=lambda t: t.duration.total_seconds() のように 期間などの他のトライアル属性にも使用できます。

    Note

    study が多目的最適化に使用されている場合、この引数を指定します。 例えば、最初の目的のハイパーパラメータ重要度を取得するには、 target=lambda t: t.values[0] のように指定します。

Returns:

パラメータ名をキー、評価された重要度を値とする dict

Return type:

dict[str, float]