Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

SHAP

概要

SHAP(SHapley Additive exPlanations)は、ゲーム理論の Shapley 値に基づく特徴量重要度の計算手法です(Lundberg & Lee, 2017)。 各パラメータが予測値にどれだけ寄与したかを、すべての特徴量の組み合わせ順序の平均として厳密に定義します。

Importance チャートでは TreeSHAP(Lundberg et al., 2020)を使用し、Random Forest の各木で Shapley 値を厳密かつ効率的に計算します。 Tunny Dashboard は Shapley 値を自前で計算せず、LightGBM が提供する TreeSHAP 機能(predict_contrib)を利用しています(後述)。 グローバル重要度は、訓練データ(80% スプリット)の各サンプルの ϕj(x)|\phi_j(x)| を平均し、合計が 1 になるよう正規化します。

他手法との違い

比較軸 SHAP (TreeSHAP) MDI RF-ANOVA
理論的根拠 Shapley 公理(効率性・対称性・線形性・ダミー性) 不純度減少量の集計 葉ボックス上の分散分解(fANOVA)
測定対象 予測値への各パラメータの貢献量 学習中の分岐品質 学習後の葉ボックスに対する分散分解
バイアス 高カーディナリティバイアスなし 高カーディナリティ特徴量に過大評価傾向あり 交互作用を単一パラメータの主効果には帰属しない
計算コスト 木の葉数 × 深さ² に比例(効率的) 木構築と同等 木構築 + 木ごとの分散分解(葉数に依存)
局所解釈可能性 ◎(サンプルごとの寄与量も計算可能) ✕(グローバルのみ) ✕(グローバルのみ)

数式

Shapley 値の定義

パラメータ jj の Shapley 値 ϕj(x)\phi_j(x) は、すべての部分集合 SF{j}S \subseteq F \setminus {j} に対して:

ϕj(x)=SF{j}S!(FS1)!F![f(S{j})f(S)]\phi_j(x) = \sum_{S \subseteq F \setminus {j}} \frac{|S|!,(|F| - |S| - 1)!}{|F|!} \left[f(S \cup {j}) - f(S)\right]

ここで:

  • FF:全特徴量の集合
  • f(S)f(S):特徴量集合 SS のみ既知とした場合の期待予測値

f(S)=E[f^(x)xS]f(S) = \mathbb{E}\left[\hat{f}(x) \mid x_S\right]

Shapley 値は以下の公理を満たす唯一の解です:

  • 効率性jϕj(x)=f^(x)E[f^]\sum_j \phi_j(x) = \hat{f}(x) - \mathbb{E}[\hat{f}]
  • 対称性:寄与が同等の特徴量には同じ値が割り当てられます
  • 線形性:複数モデルの線形和への重要度は各モデルの重要度の和に等しいです
  • ダミー性:予測に影響しない特徴量の重要度は 0

グローバル SHAP 重要度

訓練データ(80% スプリット、サイズ NN)の各サンプル xix_i の局所 Shapley 値の絶対値を平均し、合計が 1 になるよう正規化します。 ここで ϕj(xi)\phi_j(x_i) はアンサンブル全体(全木の合算値)としての寄与であり、木ごとに分解した値ではありません:

ϕj=1Ni=1Nϕj(xi)j1Ni=1Nϕj(xi)\tilde{\phi}j = \frac{\displaystyle\frac{1}{N} \sum{i=1}^{N} |\phi_j(x_i)|}{\displaystyle\sum_{j'} \frac{1}{N} \sum_{i=1}^{N} |\phi_{j'}(x_i)|}j=jN1i=1Nϕj(xi)N1i=1Nϕj(xi)


TreeSHAP について

Tunny Dashboard は Shapley 値を自前で計算せず、LightGBM が提供する predict_contrib 機能を利用します。 LightGBM は内部で TreeSHAP(Lundberg et al. 2020)を実装しており、木モデルに対する Shapley 値を厳密かつ多項式時間(単一の木で O(LD2)O(L \cdot D^2)LL: 葉数、 DD: 深さ)で計算します。

各サンプルについて、SHAP 値は特徴量ごとの寄与 ϕj(x)\phi_j(x) とバイアス項(期待値 E[f^]\mathbb{E}[\hat{f}])に分解されますが、バイアス項はグローバル重要度の集計から除外します。

TreeSHAP の考え方

決定木では、ある特徴量が経路の分岐に「使われる(hot)」か「使われない(cold)」かで予測が変わります。 TreeSHAP は欠損特徴量の期待値 f(S)=E[f^(x)xS]f(S) = \mathbb{E}[\hat{f}(x) \mid x_S] を、各ノードの訓練サンプルの分岐比率(子ノードと親ノードのサンプル数の比)で近似することにより、 2F2^{|F|} 個の部分集合を列挙せずに Shapley 値を厳密に計算します(path-dependent TreeSHAP)。


計算の流れ

  1. 前処理。 NaN/Inf を含む行は除外します。行数が 1,000 を超える場合は、ランダムサンプリングで 1,000 行に削減します。
  2. ホールドアウト分割。 80/20 で分割します。
  3. Random Forest の学習。 訓練データで 64 本の回帰木からなる Random Forest を学習します(行・特徴量のサブサンプリング率はいずれも 0.8)。
  4. SHAP 寄与量の取得。 学習済みモデルを訓練データの全サンプルに適用して特徴量ごとの寄与 ϕj(xi)\phi_j(x_i) を取得し(バイアス項は除く)、各特徴量について mean ϕj(x)|\phi_j(x)| を集計して合計が 1 になるよう正規化します。
  5. R² の計算。 重要度の算出に使ったのと同じモデルで評価データを予測し、決定係数 R² を求めます。

重要度と R² は MDI 同様、同一のモデルから算出されます。 R² は「その重要度を出したモデルがどれだけ目的関数を説明できているか」を表す信頼度指標です。

ハイパーパラメータ

パラメータ 備考
木の本数 64 MDI と同じ
最大深さ 10 TreeSHAP の計算量 O(LD2)O(L \cdot D^2) を考慮して設定
最小リーフサンプル 2 MDI/RF-ANOVA と同じ
乱数シード 42 再現性確保
最大行数 1,000 MDI と同じ(TreeSHAP は N 倍計算量のため抑制)

R² の解釈

R² は、重要度を算出したのと同じランダムフォレストの、ホールドアウトデータ上の決定係数です:

R2=1i(yiy^i)2i(yiyˉ)2R^2 = 1 - \frac{\sum_i (y_i - \hat{y}_i)^2}{\sum_i (y_i - \bar{y})^2}

  • R20.8R^2 \geq 0.8(緑): モデルの当てはまりが良好です。重要度の信頼性が高いです
  • 0.5R2<0.80.5 \leq R^2 < 0.8(黄): やや低め。参考程度として扱います
  • R2<0.5R^2 < 0.5(赤): モデルが目的関数を説明できていません。重要度の信頼性が低いです

注意事項

計算コスト

TreeSHAP は各サンプルについて木のすべての葉を訪問するため、MDI や RF-ANOVA より計算時間が長いです。 そのため最大行数を 1,000 に制限しています。

局所解釈と大域解釈

Tunny Dashboard では mean ϕj(x)|\phi_j(x)| によるグローバル重要度を表示します。 個々のサンプルに対する符号付きの局所的な寄与量は、現在表示していません。

背景分布の近似

TreeSHAP は f(S)=E[f^(x)xS]f(S) = \mathbb{E}[\hat{f}(x) \mid x_S] を訓練サンプルの経路比率で近似します(interventional ではなく path-dependent)。 特徴量間に強い相関がある場合、外挿サンプルの影響で結果が不安定になることがあります。


計算コストの目安

試行数 N SHAP 計算時間の目安
50〜200 < 500ms
500 < 2,000ms
1,000+ < 5,000ms(1,000 行にダウンサンプリング)

参考文献

© 2026 hrntsm
Made with Fresh