SHapley Additive exPlanationsで機械学習モデルを解釈する

SHapley Additive exPlanationsで機械学習モデルを解釈する

2020年1月16日に行われたData Gateway Talk vol.5での発表資料です。
https://data-gateway-talk.connpass.com/event/155457/

この発表をログミーさんに記事化して頂きました。
こちらには資料の口頭での補足も入っています。
https://logmi.jp/tech/articles/322738

7a0892afffbcbd35fd84d46508b3a914?s=128

Mitsunosuke Morishita

January 16, 2020
Tweet

Transcript

  1. SHapley Additive exPlanationsで 機械学習モデルを解釈する 森下光之助(@dropout009)

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

  3. 2 モチベーション

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

  5. もうちょっと抽象化すると = $, … , ' (を特徴量とした機械学習モデル について考える → あるインスタンスの予測値

    に対して、なぜモデルはそんな予測をした かを知りたい → モデルの平均的な予測結果[ ]と、あるインスタンスに対する予測 の差分を各特徴量の貢献度 に分解するといいのでは︖ − = 1 23$ ' 2 = 5 + 1 23$ ' 2 5 ≔ [()] Additive Feature Attribution Method
  6. 貢献度による差分の分解 モデルの平均的な予測結果[ ]と、あるインスタンスに対する予測 の 差分を各特徴量の貢献度で分解する 例︓年収予測 予測の平均値は年収500万なのにこの個⼈は年収1000万と予測された → 500万の差分はどこから⽣まれている︖ 0

    500 1000 学歴︓修⼠ 専⾨︓CS 役職︓課⻑ 英語︓話せない +200 +200 +300 -200
  7. どうやって効果を分解する︖線形モデルの場合 [ ]と の差分を各特徴量の貢献度で分解する → 線形モデル = + ∑23$ '

    22 だと簡単に分解できそう 5 = = + ∑23$ ' 2 [2 ] なので − = + 1 23$ ' 2 2 − + 1 23$ ' 2 2 = $ $ − $ + ⋯ + ' ' − ' $ '
  8. ⾮線形モデルを分解するには︖ 線形モデルは分解できそうだが、 モデルが複雑だとどう分解すればいいか明らかでない 協⼒ゲーム理論のShapley Valueから考え⽅を借りてくる = SHapley Additive exPlanations (SHAP)

  9. 8 協⼒ゲーム理論と Shapley Value

  10. アルバイトゲーム 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
  11. 報酬をフェアに配分するには︖ A君B君C君の3⼈全員で働いて得た報酬24万円をどうやって配分する︖ → より貢献度の⾼い⼈に多くの報酬を分配するのがフェアな分配のひとつに なりそう → 各⼈の貢献度をどうやって計る︖ → 限界貢献度という概念を導⼊︕ 参加者

    報酬 A君 6 B君 4 C君 2 A君B君 20 A君C君 15 B君C君 10 A君B君C君 24
  12. 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
  13. 参加順の効果を打ち消すため限界貢献度を平均 参加順は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
  14. 平均的な限界貢献度 = Shapley Value 平均的な限界貢献度のことをShapley Valueと⾔う Shapley Valueを⽤いた報酬を分配が尤もらしい分配のひとつとなっている • 11.5

    + 8 + 4.5 = 24万円できれいに分配ができている • より貢献度が⾼い⼈により多くの報酬が渡る 参加者 Shapley Value A君 11.5 B君 8 C君 4.5
  15. Shapley Valueの⼀般的な求め⽅ 2 = 1 ⊆ℳ∖{2} ||! |ℳ| − ||

    − 1 ! |ℳ|! ∪ − () • ⼈のプレイヤー ℳ = {1, 2, … , } がゲームに参加する • はℳからプレイヤーを除いた参加者の組み合わせ • たとえばA君B君C君3⼈のケースで、A君のShapley Valueを考える場合 ∅ , , , , が該当 組み合わせの出現しやすさ にプレイヤーが参加したときの限界貢献度 ※ ⋅ は報酬を表す関数 限界効果を全ての組み合わせで平均 = Shapley Value
  16. 15 Shapley Valueを 機械学習へ応⽤

  17. モデルに投⼊した特徴量 = $, … , ' (をゲームのプレイヤーと⾒⽴てて、 あるインスタンスの予測値への特徴量の貢献度2 をShapley Valueで測る

    Shapley Valueを機械学習に応⽤する = SHAP 2 = 1 ⊆ℳ∖{2} ||! |ℳ| − || − 1 ! |ℳ|! ∪ − () 特徴量のありなしでの予測の差分 → 特徴量が「ない」ときの予測値をどう作る︖
  18. 例︓ • 特徴量は ($, Q, R) の3つ • あるインスタンスではそれぞれ $

    , Q , R という値をとっている 問題︓ • 全変数が「ある」ときの予測値︓ 1, 2, 3 = ($, Q, R) • 全変数が「ない」ときの予測値︓ ∅ = [($, Q, R)] • $ 以外が「ない」ときの予測値︓ 1 = ? ? ? 特徴量が「ない」ときの予測値をどう作る︖ 1 = $ , Q , R = U $ , Q , R Q , R Q R → 「ない」変数は周辺化して消してしまう
  19. 平均的な予測値[($, Q, R)] から$, Q, R の順で変数を追加していく 特徴量を順次追加していき限界貢献度を計算 [ $,

    Q, R ] [ $, Q, R ] $, Q, R = ($ , Q , R ) Δ$ [ $, Q, R ] 0 ΔQ ΔR 5 特徴量の追加が予測値に与える影響 = 限界貢献度 限界貢献度Δ2 は特徴量追加の順番によって変わる → 全ての順序で限界貢献度を計算し平均 = SHAP Value
  20. 19 実際の分析例

  21. ボストンの不動産価格予測モデルを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 ターゲット 特徴量
  22. 学習済みモデルから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を計算
  23. Waterfall Plot︓「なぜモデルはこの予測値を出したか」を可視化する shap.waterfall_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])

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

  25. Summary Plot︓特徴量の重要度を可視化する shap.summary_plot(shap_values, X) Feature Importancef = 1 1 h3$

    i 2 h
  26. 25 まとめ

  27. まとめ 26 • SHAPを⽤いることで、機械学習モデルが「なぜその予測値を出したのか」 を各特徴量の貢献度に分解して解釈することができる。 • SHAPは協⼒ゲーム理論のShapley Valueの考え⽅を応⽤している。貢献度 の分解において、Shapley Valueはいくつかの望ましい性質を持っている。

    • SHAPは各インスタンスに対して使えるlocalな解釈⼿法だが、適切な粒度 で集計・可視化することで、Partial Dependenceや変数重要度のように globalな解釈⼿法としても⽤いることができる。 • データそのものではなくモデルの振る舞いを解釈していること、あくまで モデルの⼀側⾯を解釈しているに過ぎないことには注意が必要。
  28. 参考⽂献 • 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).