optuna.importance.FanovaImportanceEvaluator

class optuna.importance.FanovaImportanceEvaluator(*, n_trees=64, max_depth=64, seed=None)[source]

fANOVA 重要度評価器

An Efficient Approach for Assessing Hyperparameter Importance で提案された fANOVA アルゴリズムを実装しています。

fANOVA は、パラメータ設定から COMPLETE トライアルの目的値を予測する ランダムフォレスト回帰モデルを構築します。このモデルの予測精度が高いほど、 本クラスが算出する重要度の信頼性も向上します。

Note

本クラスは 1000 トライアル以上のスタディに対して 1 分以上の処理時間を要します。 より高速な実装として optuna-fast-fanova ライブラリを 公開しています。これを使用することで、数秒以内に重要度を算出できます。

Note

本アルゴリズムの実行には scikit-learn パッケージが必要です。

Note

fANOVA の性能は基礎となるランダムフォレストモデルの予測精度に依存します。 高精度な予測を得るためには、ハイパーパラメータ探索空間を広くカバーする必要があります。 RandomSampler などの探索指向サンプラーの使用を推奨します。

Note

原論文の引用方法については、 https://automl.github.io/fanova/cite.html を参照してください。

Parameters:
  • n_trees (int) – フォレスト内の決定木の数

  • max_depth (int) – 決定木の最大深さ

  • seed (int | None) – フォレストのランダム性を制御します。決定論的な動作が必要な場合は、 None 以外の値を指定してください。

メソッド

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

具体的な評価器の実装方法については、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]