optuna.importance.get_param_importances
- optuna.importance.get_param_importances(study, *, evaluator=None, params=None, target=None, normalize=True)[source]
指定されたスタディ内の完了済みトライアルに基づいて、パラメータの重要度を評価する関数です。
パラメータ重要度は辞書形式で返され、キーはパラメータ名、 値は対応する重要度スコアとなります。 重要度は非負の浮動小数点数で表現され、 値が大きいほどそのパラメータが重要であることを示します。 返される辞書は値の降順でソートされています。 デフォルトでは、重要度スコアの合計が1.0になるように正規化されます。
paramsがNoneの場合、すべての完了済みトライアルに共通して存在するすべてのパラメータが 評価対象となります。 これは条件付きパラメータが評価から除外されることを意味します。 条件付きパラメータの重要度を評価するには、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: