mmschlk/shapiq

Shapley Values and Shapley Interactions for Machine Learning

shapiq – 機械学習のためのシャープレイ相互作用定量化

概要 – shapiq は、人気の高いSHAPエコシステムを拡張し、シャープレイ相互作用値を提供するPythonライブラリです。従来のSHAPは各特徴量に単一の重要度スコア(「主効果」)を与えますが、shapiq は特徴量のグループがどのように相乗効果または干渉するかを定量化できます。ゲーム理論の言葉では、これらは高次のシャープレイ相互作用インデックスと呼ばれます。

主な機能

  • 任意次数の相互作用推定 – ペア、トリプル、… ユーザー指定の次数まで(クイックスタートではデフォルトで最大4)の相互作用スコアを計算します。ライブラリには、高次元データ用のスパースな「ProxySPEX」メソッドを含む、いくつかの近似器が用意されています。
  • ドロップインSHAP互換性 – 従来のシャープレイ値インデックス("SV")を要求すると、shap パッケージとまったく同じ出力形式が得られるため、移行が簡単です。
  • 組み込みゲーム&ベンチマークスイート – shapiq_games は既製の「ゲーム」(例:TabPFN、CatBoost、画像ベースのゲーム)を提供し、shapiq_benchmark はこれらのタスクでアルゴリズムを比較できます。
  • 可視化ツール – 主効果と相互作用の両方に対するフォースプロットスタイルの可視化に加え、特徴量をノード、相互作用の強さをエッジとして表示するネットワークグラフも提供します。
  • モデル非依存 – 入力を予測にマッピングする任意の呼び出し可能オブジェクト(scikit-learnモデル、PyTorch、CatBoost、TabPFNなど)で動作します。

典型的なワークフロー

  1. データを読み込み、モデル(例:RandomForestRegressor)をトレーニングします。
  2. Explainer(例:TabularExplainer)をインスタンス化し、"k-SII" などの相互作用インデックスと max_order を選択します。
  3. explain(sample, budget=…) を呼び出します。budget は近似器が使用できるモデル評価の回数を制御します。
  4. 返された InteractionValues オブジェクトを検査するか、その plot_* メソッドを呼び出してフォースプロットやネットワーク図を表示します。

なぜ重要か – モデルが非線形関係を捉える場合(例:場所と広さがそれぞれ単独よりも合わさった方が重要となる住宅価格モデル)、特徴量相互作用の理解は重要です。shapiq は、相互作用項を手作業で作成することなく、これらの相乗効果を浮き彫りにするための原理に基づいたゲーム理論的方法を研究者に提供します。

インストール – pip install shapiq(または uv add shapiq)。オプションのエクストラ shapiq[games] および shapiq[benchmark] は、torch、tabpfn、catboost などの重い依存関係を引き込みます。

ステータス&コミュニティ – 積極的にメンテナンスされています(Python 3.12-3.15サポート、CIバッジ、テストカバレッジ)。貢献は歓迎されており、著者は付随するNeurIPS 2024論文の引用を提供しています。


上記の詳細はすべて、リポジトリのREADMEから直接取得されています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト