Slide 1

Slide 1 text

SHapley Additive exPlanationsで 機械学習モデルを解釈する 2020/1/16 Data Gateway Talk vol.5 森下光之助(@dropout009)

Slide 2

Slide 2 text

1.モチベーション 2.協⼒ゲーム理論とShapley Value 3.Shapley Valueを機械学習へ応⽤ 4.実際の分析例 5.まとめ

Slide 3

Slide 3 text

2 モチベーション

Slide 4

Slide 4 text

モチベーション︓予測値の「理由付け」 例︓ローン審査 ローンの審査を機械学習モデルを⽤いて⾏っているとする モデルは申込者がきちんとローンを返しそうかどうかを予測する → モデルはAさんはローンの返済確率が低いと予測 → なぜ「返済確率が低い」と予測したか、理由が知りたい

Slide 5

Slide 5 text

もうちょっと抽象化すると 𝑿 = 𝑋!, … , 𝑋" #を特徴量とした機械学習モデル𝑓 𝑿 について考える → あるインスタンスの予測値𝑓 𝒙 に対して、なぜモデルはそんな予測をした かを知りたい → モデルの平均的な予測結果𝔼[𝑓 𝑿 ]と、あるインスタンスに対する予測𝑓 𝒙 の差分を各特徴量の貢献度𝝓𝒋 に分解するといいのでは︖ 𝑓 𝒙 − 𝔼 𝑓 𝑿 = - %&! " 𝜙% 𝑓 𝒙 = 𝜙' + - %&! " 𝜙% 𝜙! ≔ 𝔼[𝑓(𝑿)] Additive Feature Attribution Method

Slide 6

Slide 6 text

貢献度による差分の分解 モデルの平均的な予測結果𝔼[𝑓 𝑿 ]と、あるインスタンスに対する予測𝑓 𝒙 の 差分を各特徴量の貢献度で分解する 例︓年収予測 予測の平均値は年収500万なのにこの個⼈は年収1000万と予測された → 500万の差分はどこから⽣まれている︖ 0 500 1000 学歴︓修⼠ 専⾨︓CS 役職︓課⻑ 英語︓話せない +200 +200 +300 -200

Slide 7

Slide 7 text

どうやって効果を分解する︖線形モデルの場合 𝔼[𝑓 𝑿 ]と𝑓 𝒙 の差分を各特徴量の貢献度で分解する → 線形モデル 𝑓 𝑿 = 𝛼 + ∑%&! " 𝛽%𝑋% だと簡単に分解できそう 𝜙' = 𝔼 𝑓 𝑿 = 𝛼 + ∑%&! " 𝛽% 𝔼[𝑋% ] なので 𝑓 𝑥 − 𝔼 𝑓 𝑿 = 𝛼 + - %&! " 𝛽% 𝑥% − 𝛼 + - %&! " 𝛽% 𝔼 𝑋% = 𝛽! 𝑥! − 𝔼 𝑋! + ⋯ + 𝛽" 𝑥" − 𝔼 𝑋" 𝜙! 𝜙"

Slide 8

Slide 8 text

⾮線形モデルを分解するには︖ 線形モデルは分解できそうだが、 モデルが複雑だとどう分解すればいいか明らかでない 協⼒ゲーム理論のShapley Valueから考え⽅を借りてくる = SHapley Additive exPlanations (SHAP)

Slide 9

Slide 9 text

8 協⼒ゲーム理論と Shapley Value

Slide 10

Slide 10 text

アルバイトゲーム A君、B君、C君の3⼈がアルバイトをする • アルバイトは単独でやってもいいし、チームを組んでやってもいい • 1⼈で働いた場合 • A君が1⼈でやると6万円 • B君が1⼈でやると4万円 • C君が1⼈でやると2万円 • 2⼈で働いた場合 • A君とB君が2⼈でやると合計で20万円 • A君とC君が2⼈でやると合計で15万円 • B君とC君が2⼈でやると合計で10万円 • 3⼈で働いた場合 • 合計で24万円がもらえる 参加者 報酬 A君 6 B君 4 C君 2 A君B君 20 A君C君 15 B君C君 10 A君B君C君 24

Slide 11

Slide 11 text

報酬をフェアに配分するには︖ A君B君C君の3⼈全員で働いて得た報酬24万円をどうやって配分する︖ → より貢献度の⾼い⼈に多くの報酬を分配するのがフェアな分配のひとつに なりそう → 各⼈の貢献度をどうやって計る︖ → 限界貢献度という概念を導⼊︕ 参加者 報酬 A君 6 B君 4 C君 2 A君B君 20 A君C君 15 B君C君 10 A君B君C君 24

Slide 12

Slide 12 text

A君の限界貢献度 = A君が参加したときの報酬の増加分 A君についての限界貢献度を考える • 「誰もいない」→「A君のみ」 • 6 - 0 = 6万円 • 「B君のみ」→「A君とB君」 • 20 - 4 = 16万円 • 「C君のみ」→「A君とC君」 • 15 - 2 = 13万円 • 「B君とC君」→「A君とB君とC君」 • 24 - 10 = 14万円 A君の限界貢献度はA君が参加する順番に依存する 参加者 報酬 A君 6 B君 4 C君 2 A君B君 20 A君C君 15 B君C君 10 A君B君C君 24

Slide 13

Slide 13 text

参加順の効果を打ち消すため限界貢献度を平均 参加順は3!=6通りなので、各⼈の平均的な限界貢献度は A君︓(6 + 6 + 16 + 14 + 13 + 14) / 6 = 11.5万円 B君︓(14 + 9 + 4 + 4 + 9 + 8) / 6 = 8万円 C君︓(4 + 9 + 4 + 6 + 2 + 2) / 6 = 4.5万円 参加順 A君の 限界貢献度 B君の 限界貢献度 C君の 限界貢献度 A君→B君→C君 6 14 4 A君→C君→B君 6 9 9 B君→A君→C君 16 4 4 B君→C君→A君 14 4 6 C君→A君→B君 13 9 2 C君→B君→A君 14 8 2

Slide 14

Slide 14 text

平均的な限界貢献度 = Shapley Value 平均的な限界貢献度のことをShapley Valueと⾔う Shapley Valueを⽤いた報酬を分配が尤もらしい分配のひとつとなっている • 11.5 + 8 + 4.5 = 24万円できれいに分配ができている • より貢献度が⾼い⼈により多くの報酬が渡る 参加者 Shapley Value A君 11.5 B君 8 C君 4.5

Slide 15

Slide 15 text

Shapley Valueの⼀般的な求め⽅ 𝜙* = # 𝒮⊆ℳ∖{*} |𝒮|! |ℳ| − |𝒮| − 1 ! |ℳ|! 𝑣 𝒮 ∪ 𝑗 − 𝑣(𝒮) • 𝑀⼈のプレイヤー ℳ = {1, 2, … , 𝑀} がゲームに参加する • 𝒮はℳからプレイヤー𝑗を除いた参加者の組み合わせ • たとえばA君B君C君3⼈のケースで、A君のShapley Valueを考える場合 ∅ , 𝐵 , 𝐶 , 𝐵, 𝐶 が該当 組み合わせの出現しやすさ 𝒮にプレイヤー𝑗が参加したときの限界貢献度 ※ 𝑣 ⋅ は報酬を表す関数 限界効果を全ての組み合わせで平均 = Shapley Value

Slide 16

Slide 16 text

15 Shapley Valueを 機械学習へ応⽤

Slide 17

Slide 17 text

モデルに投⼊した特徴量𝑿 = 𝑋!, … , 𝑋" #をゲームのプレイヤーと⾒⽴てて、 あるインスタンスの予測値への特徴量𝑗の貢献度𝜙% をShapley Valueで測る Shapley Valueを機械学習に応⽤する = SHAP 𝜙* = # 𝒮⊆ℳ∖{*} |𝒮|! |ℳ| − |𝒮| − 1 ! |ℳ|! 𝑣 𝒮 ∪ 𝑗 − 𝑣(𝒮) 特徴量𝑗のありなしでの予測の差分 → 特徴量が「ない」ときの予測値をどう作る︖

Slide 18

Slide 18 text

例︓ • 特徴量は (𝑋!, 𝑋-, 𝑋.) の3つ • あるインスタンスではそれぞれ 𝑥! , 𝑥- , 𝑥. という値をとっている 問題︓ • 全変数が「ある」ときの予測値︓ 𝑣 1, 2, 3 = 𝑓(𝑥!, 𝑥-, 𝑥.) • 全変数が「ない」ときの予測値︓ 𝑣 ∅ = 𝔼[𝑓(𝑋!, 𝑋-, 𝑋.)] • 𝑥! 以外が「ない」ときの予測値︓ 𝑣 1 = ? ? ? 特徴量が「ない」ときの予測値をどう作る︖ 𝑣 1 = 𝔼 𝑓 𝑥! , 𝑋- , 𝑋. = E 𝑓 𝑥! , 𝑥- , 𝑥. 𝑝 𝑥- , 𝑥. 𝑑𝑥- 𝑑𝑥. → 「ない」変数は周辺化して消してしまう

Slide 19

Slide 19 text

平均的な予測値𝔼[𝑓(𝑋!, 𝑋-, 𝑋.)] から𝑥!, 𝑥-, 𝑥. の順で変数を追加していく 特徴量を順次追加していき限界貢献度を計算 𝔼[𝑓 𝑋!, 𝑋-, 𝑋. ] 𝔼[𝑓 𝑥!, 𝑥-, 𝑋. ] 𝔼 𝑓 𝑥!, 𝑥-, 𝑥. = 𝑓(𝑥! , 𝑥- , 𝑥. ) Δ! 𝔼[𝑓 𝑥!, 𝑋-, 𝑋. ] 0 Δ- Δ. 𝜙' 特徴量の追加が予測値に与える影響 = 限界貢献度 限界貢献度Δ% は特徴量追加の順番によって変わる → 全ての順序で限界貢献度を計算し平均 = SHAP Value

Slide 20

Slide 20 text

19 実際の分析例

Slide 21

Slide 21 text

ボストンの不動産価格予測モデルをSHAPで解釈する import shap X, y = shap.datasets.boston() MEDV CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PT RATIO B LSTAT 24.0 0.0063 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 396.90 4.98 21.6 0.0273 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 396.90 9.14 34.7 0.0272 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 392.83 4.03 33.4 0.0323 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 394.63 2.94 36.2 0.0690 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 396.90 5.33 ターゲット 特徴量

Slide 22

Slide 22 text

学習済みモデルからSHAP valueを計算 model = RandomForestRegressor(n_estimators=100, n_jobs=-1, random_state=42) model.fit(X_train, y_train) explainer = shap.TreeExplainer(model, X) shap_values = explainer.shap_values(X) モデルを学習 学習済みモデルとデータからSHAP Valueを計算

Slide 23

Slide 23 text

Waterfall Plot︓「なぜモデルはこの予測値を出したか」を可視化する shap.waterfall_plot(explainer.expected_valu e, shap_values[0,:], X.iloc[0,:])

Slide 24

Slide 24 text

Dependence Plot︓特徴量と貢献度の関係を可視化する shap.dependence_plot("LSTAT", shap_values, X)

Slide 25

Slide 25 text

Summary Plot︓特徴量の重要度を可視化する shap.summary_plot(shap_values, X) Feature Importance/ = 1 𝑁 - 0&! 1 𝜙% 0

Slide 26

Slide 26 text

25 まとめ

Slide 27

Slide 27 text

まとめ 26 • SHAPを⽤いることで、機械学習モデルが「なぜその予測値を出したのか」 を各特徴量の貢献度に分解して解釈することができる。 • SHAPは協⼒ゲーム理論のShapley Valueの考え⽅を応⽤している。貢献度 の分解において、Shapley Valueはいくつかの望ましい性質を持っている。 • SHAPは各インスタンスに対して使えるlocalな解釈⼿法だが、適切な粒度 で集計・可視化することで、Partial Dependenceや変数重要度のように globalな解釈⼿法としても⽤いることができる。 • データそのものではなくモデルの振る舞いを解釈していること、あくまで モデルの⼀側⾯を解釈しているに過ぎないことには注意が必要。

Slide 28

Slide 28 text

参考⽂献 • Lundberg, Scott M., and Su-In Lee. "A unified approach to interpreting model predictions." Advances in Neural Information Processing Systems. 2017. • Lundberg, Scott M., Gabriel G. Erion, and Su-In Lee. "Consistent individualized feature attribution for tree ensembles." arXiv preprint arXiv:1802.03888 (2018). • Lundberg, Scott M., et al. "Explainable AI for Trees: From Local Explanations to Global Understanding." arXiv preprint arXiv:1905.04610 (2019). • Sundararajan, Mukund, and Amir Najmi. "The many Shapley values for model explanation." arXiv preprint arXiv:1908.08474 (2019). • Janzing, Dominik, Lenon Minorics, and Patrick Blöbaum. "Feature relevance quantification in explainable AI: A causality problem." arXiv preprint arXiv:1910.13413 (2019). • GitHub - slundberg/shap: A game theoretic approach to explain the output of any machine learning model. https://github.com/slundberg/shap. • Molnar, Christoph. "Interpretable machine learning. A Guide for Making Black Box Models Explainable.” (2019). https://christophm.github.io/interpretable-ml-book/. • Biecek, Przemyslaw, and Tomasz Burzykowski. "Predictive Models: Explore, Explain, and Debug." (2019). https://pbiecek.github.io/PM_VEE/. • SHAP(SHapley Additive exPlanations)で機械学習モデルを解釈する https://dropout009.hatenablog.com/entry/2019/11/20/091450. • 岡⽥ 卓. "ゲーム理論 新版. " 有斐閣. (2011).