optuna.importance.get_param_importances

optuna.importance.get_param_importances(study, *, evaluator=None, params=None, target=None, normalize=True)[source]

指定されたスタディ内の完了済みトライアルに基づいて、パラメータの重要度を評価する関数です。

パラメータ重要度は辞書形式で返され、キーはパラメータ名、 値は対応する重要度スコアとなります。 重要度は非負の浮動小数点数で表現され、 値が大きいほどそのパラメータが重要であることを示します。 返される辞書は値の降順でソートされています。 デフォルトでは、重要度スコアの合計が1.0になるように正規化されます。

paramsNone の場合、すべての完了済みトライアルに共通して存在するすべてのパラメータが 評価対象となります。 これは条件付きパラメータが評価から除外されることを意味します。 条件付きパラメータの重要度を評価するには、params 引数に パラメータ名のリストを指定できます。 この場合、すべての指定パラメータを含む完了済みトライアルのみが評価対象となります。 該当するトライアルが見つからない場合は、エラーが発生します。

指定されたスタディに完了済みトライアルが含まれていない場合、エラーが発生します。

Note

params 引数に空のリストが指定された場合、空の辞書が返されます。

See also

重要度を可視化するには plot_param_importances() 関数を参照してください。

Parameters:
  • study (Study) – 最適化済みのスタディオブジェクト

  • evaluator (BaseImportanceEvaluator | None) –

    重要度評価に使用するアルゴリズムを 指定する評価器オブジェクト デフォルトでは FanovaImportanceEvaluator が使用されます。

    Note

    FanovaImportanceEvaluator は 1000件以上のトライアルを含むスタディに対して1分以上の処理時間を要します。 より高速な実装として optuna-fast-fanova ライブラリが公開されており、 Cythonで高速化されたfANOVA実装を利用できます。 このライブラリを使用すると、数十秒でハイパーパラメータの重要度を取得可能です。 n_trials が10000件以上の場合、Cython実装でも1分以上かかるため、 代わりに PedAnovaImportanceEvaluator を使用することで、 1秒以内に評価を完了させることができます。

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

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

    重要度を評価する値を指定する関数 None で、study が単一目的最適化に使用されている場合、 目的関数値が使用されます。 study が多目的最適化に使用されている場合は、 target 引数を必ず指定してください。

    Note

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

  • normalize (bool) –

    重要度スコアの合計を1.0に正規化するかどうかを指定する ブール値オプション デフォルト値は True です。

    Note

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

Returns:

パラメータ名をキー、評価された重要度スコアを値とする dict オブジェクト

Return type:

dict[str, float]