Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

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

森下光之助

January 16, 2020
Tweet

More Decks by 森下光之助

Other Decks in Science

Transcript

  1. もうちょっと抽象化すると 𝑿 = 𝑋!, … , 𝑋" #を特徴量とした機械学習モデル𝑓 𝑿 について考える

    → あるインスタンスの予測値𝑓 𝒙 に対して、なぜモデルはそんな予測をした かを知りたい → モデルの平均的な予測結果𝔼[𝑓 𝑿 ]と、あるインスタンスに対する予測𝑓 𝒙 の差分を各特徴量の貢献度𝝓𝒋 に分解するといいのでは︖ 𝑓 𝒙 − 𝔼 𝑓 𝑿 = - %&! " 𝜙% 𝑓 𝒙 = 𝜙' + - %&! " 𝜙% 𝜙! ≔ 𝔼[𝑓(𝑿)] Additive Feature Attribution Method
  2. どうやって効果を分解する︖線形モデルの場合 𝔼[𝑓 𝑿 ]と𝑓 𝒙 の差分を各特徴量の貢献度で分解する → 線形モデル 𝑓 𝑿

    = 𝛼 + ∑%&! " 𝛽%𝑋% だと簡単に分解できそう 𝜙' = 𝔼 𝑓 𝑿 = 𝛼 + ∑%&! " 𝛽% 𝔼[𝑋% ] なので 𝑓 𝑥 − 𝔼 𝑓 𝑿 = 𝛼 + - %&! " 𝛽% 𝑥% − 𝛼 + - %&! " 𝛽% 𝔼 𝑋% = 𝛽! 𝑥! − 𝔼 𝑋! + ⋯ + 𝛽" 𝑥" − 𝔼 𝑋" 𝜙! 𝜙"
  3. アルバイトゲーム 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
  4. 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
  5. 参加順の効果を打ち消すため限界貢献度を平均 参加順は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
  6. 平均的な限界貢献度 = Shapley Value 平均的な限界貢献度のことをShapley Valueと⾔う Shapley Valueを⽤いた報酬を分配が尤もらしい分配のひとつとなっている • 11.5

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

    − 1 ! |ℳ|! 𝑣 𝒮 ∪ 𝑗 − 𝑣(𝒮) • 𝑀⼈のプレイヤー ℳ = {1, 2, … , 𝑀} がゲームに参加する • 𝒮はℳからプレイヤー𝑗を除いた参加者の組み合わせ • たとえばA君B君C君3⼈のケースで、A君のShapley Valueを考える場合 ∅ , 𝐵 , 𝐶 , 𝐵, 𝐶 が該当 組み合わせの出現しやすさ 𝒮にプレイヤー𝑗が参加したときの限界貢献度 ※ 𝑣 ⋅ は報酬を表す関数 限界効果を全ての組み合わせで平均 = Shapley Value
  8. モデルに投⼊した特徴量𝑿 = 𝑋!, … , 𝑋" #をゲームのプレイヤーと⾒⽴てて、 あるインスタンスの予測値への特徴量𝑗の貢献度𝜙% をShapley Valueで測る

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

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

    𝑋-, 𝑋. ] 𝔼[𝑓 𝑥!, 𝑥-, 𝑋. ] 𝔼 𝑓 𝑥!, 𝑥-, 𝑥. = 𝑓(𝑥! , 𝑥- , 𝑥. ) Δ! 𝔼[𝑓 𝑥!, 𝑋-, 𝑋. ] 0 Δ- Δ. 𝜙' 特徴量の追加が予測値に与える影響 = 限界貢献度 限界貢献度Δ% は特徴量追加の順番によって変わる → 全ての順序で限界貢献度を計算し平均 = SHAP Value
  11. ボストンの不動産価格予測モデルを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 ターゲット 特徴量
  12. 学習済みモデルから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を計算
  13. まとめ 26 • SHAPを⽤いることで、機械学習モデルが「なぜその予測値を出したのか」 を各特徴量の貢献度に分解して解釈することができる。 • SHAPは協⼒ゲーム理論のShapley Valueの考え⽅を応⽤している。貢献度 の分解において、Shapley Valueはいくつかの望ましい性質を持っている。

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