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) –
重要度を評価する値を指定する関数
None
でstudy
が単一目的最適化に使用されている場合、 目的値が使用されます。また、target=lambda t: t.duration.total_seconds()
のように 期間などの他のトライアル属性にも使用できます。Note
study
が多目的最適化に使用されている場合、この引数を指定します。 例えば、最初の目的のハイパーパラメータ重要度を取得するには、target=lambda t: t.values[0]
のように指定します。
- Returns:
パラメータ名をキー、評価された重要度を値とする
dict
- Return type: