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

SHAPやLIMEなどの説明AI(XAI)のご紹介 / SHAP LIME PDP Gra...

smorce
August 19, 2021

SHAPやLIMEなどの説明AI(XAI)のご紹介 / SHAP LIME PDP Grad-CAM

*************************************************************
# 要約
*************************************************************
・SHAP のアルゴリズムを説明
・SHAPに近い手法「LIME」との比較及び考察も記載
・SHAP 以外の手法で算出した Feature Importance との比較及び考察も記載
・オープンソースのデータ及びコードを使ってハンズオン
 ┗テーブルデータ and 画像データに適用
・SHAP 以外の画像説明モデル Grad-CAM, Guided Grad-CAM の紹介

smorce

August 19, 2021
Tweet

Other Decks in Programming

Transcript

  1. © smorce 2021.08.19 S H A P や L I

    M E な ど の 説 明 A I ( X A I ) の ご 紹 介
  2. © smorce アジェンダ 1. 説明可能なAI(Explainable AI ; XAI)の動向 2. SHAPとは

    3. ハンズオン 4. ⻑所と短所 5. 注意点 6. 参考⽂献 APPENDIX
  3. © smorce 4 1. 説明可能なAI(Explainable AI ; XAI)の動向 XAI の研究動向

    Adadi and Berrada(2018) より引⽤ XAI に関する論⽂数の推移
  4. © smorce 5 1. 説明可能なAI(Explainable AI ; XAI)の動向 XAI の注⽬度が上がっている

    機械学習を解釈する技術〜予測⼒と説明⼒を両⽴する 実践テクニック 単⾏本(ソフトカバー) – 2021/8/4 XAI(説明可能なAI)--そのとき⼈⼯知能はどう考えたのか? (AI/Data Science実務選書) 単⾏本 – 2021/7/14 XAI に関する書籍も販売
  5. © smorce 7 • ⾼度で複雑な予測モデルの出⼒を加法的線形モデル(説明可能モデル)に変換するこ とで解釈できるようにした局所的な統合フレームワーク • 対象サンプルの周囲のデータ空間でのみ有効な線形回帰モデルを獲得して説明した いモデルを解釈する為、Local surrogate

    model (局所的な代理モデル) アプロー チの⼀種(LIMEも同じ仲間) SHAPの概念 • 協⼒ゲーム理論の Shapley Value(シャープレイ値) を機械学習に応⽤したオープ ンソースのライブラリ u シャープレイ値は、協⼒ゲーム理論において複数プレイヤーの協⼒によっ て得られた利得を各プレイヤーに公正に分配するための⼿段の⼀つ u 協⼒ゲーム理論のモチベーション︓単体では測れない「プレイヤーの協⼒ 効果」が存在するため、組み合わせまで考慮した各プレイヤーの限界貢献 度を使って公平に利得を分配したい u 協⼒ゲーム理論の「利得」を機械学習では「予測」に置き換える • SHAP値はそれぞれの説明変数がモデルの予測値に、どの⽅向に、どれだけ影響を 与えたかを表す SHAPとは • 局所的なサンプルに注⽬することでローカルの視点で説明性・解釈性を得られると 同時に、対象レコードを全体に拡張することによって機械学習モデルの説明性や解 釈性もグローバルに解釈できる(局所的・⼤域的な解釈が可能)。なおかつ、モデ ルに⾮依存の形で解釈することができる為、モデルの精度を犠牲にしない SHAPの⼤き なメリット 2. SHAPとは 概要
  6. © smorce 8 協⼒ゲーム理論の考えを応⽤ 2. SHAPとは アイデア︓協⼒ゲーム理論の考えを応⽤する A B C

    D 特徴量のセット 各特徴量が協⼒(寄与)してyが決まる ⽬的変数 y インスタンスの特徴量の値は、協⼒するプレイヤーの⼀員 として振る舞う あるインスタンス x に対する yを予測するにあたって、 各特徴量がどれだけ協⼒してくれたのか、を知りたい︕ →各特徴量の予測への貢献度を計算したい︕ 【モチベーション】 局所的(ローカル)な説明 (例) y=23を予測するにあたって、(A,B,C,D)=(20,9,-6.7,1) だった時、 各特徴量が予測にどれだけ貢献したのかを知りたい︕
  7. © smorce 9 2. SHAPとは 線形回帰モデルのように各特徴量の貢献度を分解する 【モチベーション】 あるインスタンスの予測値 f(x) に対して、なぜモデルはそのような予測をしたのかを知りたい

    モデルの平均的な予測結果 E[f(X)] と、あるインスタンスに対する予測 f(x) の差分を 各特徴量の貢献度 ϕi(ファイ) に分解すると良いのでは︖ ※「SHapley Additive exPlanationsで機械学習モデルを解釈する」より引⽤ SHapley Additive exPlanationsで機械学習モデルを解釈する - Speaker Deck 貢献度ϕiの総和に分解
  8. © smorce 10 2. SHAPとは ⾼度で複雑な予測モデルの出⼒を加法的線形モデル(説明可能モデル)に変換する ・Additive feature attribution methods

    と呼ばれる⽅法で説明可能モデル g を構築 ・予測における各特徴量の貢献度は係数 ϕi として考える ・特徴量空間は簡素化し、バイナリ変数への変換に限定する。 したがって説明可能モデルはバイナリ変数の線形関数となる Additive feature attribution method バイナリ変数のサイズ i 番⽬の特徴量が存 在するなら1、 存在しないなら0 i 番⽬の特徴量 z′i の貢献度とみなす モデルの平均的な予測結果(=期待値)をベースラインとする ※期待値とは「全ての可能性を考えたときに予測される平均的な値」
  9. © smorce 11 2. SHAPとは ⾼度で複雑な予測モデルの出⼒を加法的線形モデル(説明可能モデル)に変換する ・Additive feature attribution methods

    と呼ばれる⽅法で説明可能モデル g を構築 ・予測における各特徴量の貢献度は係数 ϕi として考える ・特徴量空間は簡素化し、バイナリ変数への変換に限定する。 したがって説明可能モデルはバイナリ変数の線形関数となる Additive feature attribution method 特徴量をバイナリ変数 zʼに簡素化 【例】 [10,2,-91,1,64,1,1,0,0,0]→[1,1,1,1,1,1,1,0,0,0] バイナリ変数は連合ベクトルとも呼ぶ。 gは説明に使うモデル。 興味があるインスタンス x は全て1になる。 表形式データでは、個別の特徴量を、 画像データでは、画素はスーパーピクセルとしてグループ化されたものとして、値が存在するなら1、存在しないなら0とする。 すべての特徴量の効果を ⾜し合わせることで元の モデルの出⼒を表現する
  10. © smorce 12 2. SHAPとは 各特徴量毎の貢献度 ϕi の計算と望ましい3つの性質 上記の式で計算すると、各特徴量の貢献度 ϕi

    は⼀意に求まる(=説明可能モデルを同定できる)ことが ゲーム理論により⽰されている。 貢献度 ϕi は、Shapley Value が持つ望ましい性質を満たすことも証明されている。 (つまり、Shapley Value と等価) ϕi は、以下のように決めると、望ましい以下の3つの性質を満たす。 ものすごい計算コストがかかる 性質1︓局所正確性の担保(Local accuracy) ϕi の和 g(z′ )は説明したいモデルの出⼒値 f(x) と等しい 性質2︓⽋損情報の無意味性の担保(Missingness) 特徴量 xi を常に0として情報⽋損させた時、その場合の対応する貢献度 ϕi は必ず0になる。 性質3︓オリジナルモデル⽐較との⼀貫性の担保(Consistency) あるモデルで重要性の⾼い因⼦は、対応する Additive feature attribution method での線形モデルでの 重要性も相対的に⾼くなるという性質。 特徴量 xi の限界寄与が(他の特徴に関係なく)増加または同じままになるようにモデルが変更された場合、 ϕi も増加または同じままになる。
  11. © smorce 13 2. SHAPとは 特徴量の解像度(Cardinality) によって Feature Importance にバイアスが⽣じる

    性質3︓オリジナルモデル⽐較との⼀貫性の担保(Consistency) あるモデルで重要性の⾼い因⼦は、対応する Additive feature attribution method での線形モデルでの 重要性も相対的に⾼くなるという性質。 特徴量 xi の限界寄与が(他の特徴に関係なく)増加または同じままになるようにモデルが変更された場合、 ϕi も増加または同じままになる。 特徴量重要度にバイアスが⽣じる状況ご存知ですか︖ より引⽤ 特徴量の解像度(Cardinality)とは、対象の変数の多様性のこと。つまり性別のようなカテゴリカル変数よりは連続値の変数の ⽅が Cardinality は相対的に⾼く出やすい。 また、特徴量同⼠に強い相関関係があると、全く関係ない変数も重要な変数に引っ張られてしまいバイアスが⽣じる。 よって、決定⽊における Feature Importance は信憑性が薄いため、下記の性質3は特に嬉しい効果。
  12. © smorce 14 2. SHAPとは 貢献度 ϕi は Shapley Value

    と等しい ϕi(f,x) は Shapley Value と呼ばれるものに⼀致︕ ϕi は、以下のように決めると、望ましい以下の3つの性質を満たす。 協⼒ゲーム理論の Shapley Value は以下の計算式で計算される
  13. © smorce 15 2. SHAPとは Shapley Value の計算 限界貢献度を全ての組み合わせで平均化している =

    Shapley Value ある組み合わせにおけるプレイヤー i の貢献度合い = z′ にプレイヤー i が参加したときの限界貢献度 組み合わせ数の逆数
  14. © smorce 16 2. SHAPとは Shapley Value の例題 限界貢献を使⽤して各ゲームのプレーヤーの貢献を取得し、次にこれらの貢献の平均をとって そのプレーヤーの最終的な貢献を取得したものが

    Shapley Value Shapley Value の公式 組み合わせの数の逆数なので 1/6 例題)L、M、N の3⼈のバスケットボールプレーヤーがいる https://ichi.pro/kaishaku-kanona-kikai-gakushu-no-tame-no-shap-o-rikaisuru- 59272219919323 より引⽤ M に L が加わったケース 組み合わせの数は 3!=6通り ※Order=N,M,L が間違ってるがスルーして下さい プレイヤー L のシャープレイ値(得点貢献度) ϕi ※プレイヤーM,Nのシャープレイ値も同様に計算できる
  15. © smorce 17 2. SHAPとは Shapley Value の問題点 特徴量が10個だと、組み合わせの数は 10!

    = 約362万通り Shapley Value 即ち ϕi を計算できれば、各特徴量が予測モデルの結果に対して正負のどちらの⽅向に対して どれくらい寄与したかを把握することができる。 ただし、特徴量が増えていった場合に特徴量同⼠の組み合わせ数が膨⼤になり有限な時間で計算が終わらないといった問題が 発⽣する(特徴量が10個だと 10! = 約362万通り)。 そこで近似的に Shapley Value を算出する⼿段として SHAP が登場した。
  16. © smorce 18 2. SHAPとは 協⼒ゲーム理論のアイデアを機械学習に応⽤する プレイヤー L のシャープレイ値(得点貢献度) ϕi

    を求めた ※v(ϕ),v(L),v(M,N),v(L,M,N) などのことを"報酬"と呼ぶ 協⼒ゲーム理論 ◎ L、M、N の3⼈のバスケットボールプレーヤーがいる • 協⼒ゲーム理論では"報酬"からシャープレイ値を求めていたが、機械学習では報酬の代わりに"予測値"を使う • 特徴量 i が⼊ったときと⼊ってないときの予測値の差分をもって限界貢献度を計算し、 それをすべての順番に対して求めて平均を取ることで、その変数の予測に対する貢献度(シャープレイ値)を計算する 特徴量Lが⼊ったときの予測値 特徴量Lが⼊ってないときの予測値 限界貢献度 全ての組み合わせで限界貢献度を求めて平均化 = シャープレイ値
  17. © smorce 19 2. SHAPとは 協⼒ゲーム理論の限界貢献度 Shapley Value を機械学習に転⽤すると問題が起きる 協⼒ゲーム理論の限界貢献度

    Shapley Value を計算できることが分かった これを予測に対する各特徴量の貢献度と⾒なせばモデルの説明ができそう しかし、協⼒ゲーム理論には存在しない“機械学習”特有の問題が発⽣する︕
  18. © smorce 20 2. SHAPとは 機械学習の例題と特徴量が存在しない問題 アイスクリームの売上個数 = 気温 +

    湿度 + ⼊場者数 「気温」と「湿度」 → 予測値A 「気温」と「湿度」と「⼊場者数」 → 予測値B 予測値AとBの差分を⾒れば、 「⼊場者数」の限界貢献度が分かりそうだが… 気温(z1) 30°C 湿度(z2) 60% ⼊場者数(z3)1000⼈ アイスクリームの売上個数 (例 SHAPを⽤いて機械学習モデルを説明する l DataRobot より引⽤ 予測値Aが算出できない、という⼤きな問題が発⽣する︕ 予測モデルは3つの特徴量を使って作成したものなので、「気温のみで予測」「気温と湿度のみで予測」など 全ての変数が揃っていない場合の予測ができない︕ Shapley Value を特徴量の貢献度合いとして考えたかったが、機械学習に応⽤した時に 協⼒ゲーム理論にはなかった「特徴量が存在しないケース」という問題にぶち当たってしまった。 300個
  19. © smorce 21 2. SHAPとは 「特徴量が存在しないので予測値が出せない」問題を期待値で補完する 1)全変数が「ある」ときの予測値︓単純に全変数を予測モデルの⼊⼒値にすれば良い 情報があるとき 2)全変数が「ない」ときの予測値︓予測値の期待値を取ると、なんの情報もないときの予測値として補完できる 3)⼀部の変数が「ない」ときの予測値︓ない変数は期待値を取って消してしまう(周辺化;

    marginalization) 情報がないとき ポイントは"期待値"で考えること。 期待値とは「全ての可能性を考えたときに予測される平均的な値」のことなので、情報がないものは期待値で補完する。 ※3の例︓仮に z1 だけ分かっている場合、z2 と z3 に関しては期待値を取って効果を消し⾶ばす
  20. © smorce 22 2. SHAPとは 周辺化の計算例 周辺化(marginalization)とは︖ 積分することで選択した特徴量以外を消すこと。 実際には着⽬しない特徴量が取りうる全ての値での予測の期待値を取る。 Partial

    Dependence Plots と同じことをやっている。 例) x1だけありx2とx3がない場合、 x2とx3で積分して消す(x1だけ選択) 元のデータセット https://research.miidas.jp/2019/11/shap より引⽤ (周辺化の計算例) 着⽬する特徴量が特徴1で、特徴2,特徴3,特徴4が存在しないとき、 特徴1の値を固定して全インスタンスの予測値を算出。 そして、予測値の平均値を出す。 左記の例だと4つの平均値 f(0.22),f(0.52),f(0.33),f(0.39) を算出して いる。 これをさらに平均を取ったものが周辺化後の値。
  21. © smorce 23 2. SHAPとは SHAP値は Shapley Value の近似値 これで「特徴量が存在しないケース」も予測値を補完できたので、限界貢献度を近似できるよ

    うになった。 近似された限界貢献度を使って、全ての順序で限界貢献度を計算し平均値を取ったものを SHAP値 と呼ぶ。 SHAP値は存在しない特徴量を周辺化して補完して計算しているため、Shapley Value に近い 値になっている。 しかし、Shapley Value と同様に SHAP値を計算する上で「組み合わせの数が膨⼤で有限な時間で計算が終わらない」問題が 依然として残っている。 モデル毎に効率的な計算アルゴリズムを提案
  22. © smorce 24 2. SHAPとは 計算コストの問題を解決するアルゴリズム Shapley Value の近似結果 "SHAP値"

    を算出するアルゴリズムが Python で実装されている shap.KernelExplainer SVM などどんなモデルでもSHAP値を推定で きる。 近似⼿法である 線形LIME をベースに SHAP 値を推定する。 モデルを仮定しないためナイーブな計算となり、指数 時間で計算することになることから、膨⼤な時間がか かる shap.TreeExplainer ツリー系アンサンブルモデルにおける⾼速 で正確なShapley Value の算出 計算量が膨⼤になる Shapley Value だが、このアルゴリ ズムは正しい値を求めることができるのでSHAP値は使 ⽤していないはず︖ C++で実装。 XGBoost、LightGBM、CatBoost、scikit-learn tree model、 pyspark tree model をサポート。 shap.DeepExplainer ディープラーニングモデルにおける⾼速で 近似的なShapley Value の算出。 Deep learning ⽤の解釈⼿法である DeepLIFT に Shapley value を組み合わせた⼿法。 こちらは Shapley Value の近似値であるSHAP値で代替し ているはず︖ TensorflowとKerasをサポート、⼀部の機能ではPytorch も利⽤できる。 shap.LinearExplainer 線形モデル⽤。正確な Shapley Value を算出
  23. © smorce 25 2. SHAPとは SHAP値の計算⽅法︓Kernel SHAP と TreeSHAP SHAP値の計算⽅法として、紹介するアルゴリズム

    1. Kernel SHAP 2. TreeSHAP shap.KernelExplainer SVM などどんなモデルでもSHAP値を推定で きる。 近似⼿法である 線形LIME をベースに SHAP 値を推定する。 モデルを仮定しないためナイーブな計算となり、指数 時間で計算することになることから、膨⼤な時間がか かる shap.TreeExplainer ツリー系アンサンブルモデルにおける⾼速 で正確なShapley Value の算出 計算量が膨⼤になる Shapley Value だが、このアルゴリ ズムは正しい値を求めることができるのでSHAP値は使 ⽤していないはず︖ C++で実装。 XGBoost、LightGBM、CatBoost、scikit-learn tree model、 pyspark tree model をサポート。 shap.DeepExplainer ディープラーニングモデルにおける⾼速で 近似的なShapley Value の算出。 Deep learning ⽤の解釈⼿法である DeepLIFT に Shapley value を組み合わせた⼿法。 こちらは Shapley Value の近似値であるSHAP値で代替し ているはず︖ TensorflowとKerasをサポート、⼀部の機能ではPytorch も利⽤できる。 shap.LinearExplainer 線形モデル⽤。正確な Shapley Value を算出
  24. © smorce 26 2. SHAPとは SHAP値の計算⽅法︓Kernel SHAP アルゴリズム LIMEアルゴリズムをベースに SHAP値

    を計算する ”Kernel SHAP” LIMEの公式 Kernel SHAP ⽬的関数 損失関数(重み付き) サンプリングしたデータの重みを決めるカーネル関数 罰則項 損失関数(重み付き) サンプリングしたデータの重みを決めるカーネル関数 (SHAP kernel) ※M は連合の最⼤ サイズ、|z′| はイ ンスタンス z' 内の 1の数 「罰則項、損失関数、カーネル関数」を上記のように定めると 説明可能モデルに対して満たして欲しい3つの性質を満たす為、 LIMEのアルゴリズムでSHAP値(つまり、Shapley Value)を計算していることになる。
  25. © smorce 27 2. SHAPとは Kernel SHAP の計算⼿順 ⼿順は LIME

    の解釈⼿順と⾮常によく似ています。 例)このようなデータセットがあるとし、⻩⾊のインスタンス(⾏)を説明したい。 として線形モデルの係数を返す。
  26. © smorce 28 2. SHAPとは テーブルデータの場合の hx ランダムに 0,1 を⽣成する

    元のデータセット 0 は周辺からランダムにサンプリングされたデータインスタンスの値 で割り当てる ("特徴量の値が不在"であるということと、"特徴量の値は、データか らランダムで選ばれた特徴量で置き換えられる"ということが等価で ある為) 1 は⻩⾊インスタンスの値で割り当てる 説明したいモデル f に突っ込んで予測値を算出する。 これで教師データありのデータセットができる。
  27. © smorce 29 2. SHAPとは 画像データの場合の hx 全て1なら元の画像と同じになる 画像はスーパーピクセル(sp)で考える https://hacarus.github.io/interpretable-ml-book-ja/shap.html

    より引⽤ 0なら、相当する部分をグレーアウトするか、 周りのピクセルの平均の⾊を割り当てるか、 似たような⾊で割り当てるか →どの⽅法かは任意 スーパーピクセルとは︖ →類似した⾊を相互接続したピクセルのこと。各ピクセルをグレーなどのユーザ定義に置き換えてオフにできる(オフにする確率は指定可能)
  28. © smorce 30 2. SHAPとは 局所的な線形分類器「重み付き線形回帰モデル」を構築する 近傍データでサンプリングして作成した教師ありのデータセット このデータセットを使って局所的な線形分類器を構築するが、Kernel SHAP は誤差に重みをつけて学習させる。

    損失関数(重み付き) 重み 損失関数が⼩さくなるように 重み付き線形回帰モデル g のパラメータを学習させる ・LIME は、元のインスタンスにどのくらい近いかによって インスタンスの重みを決定するので、連合ベクトルの中の 1 が多いほど LIME の重みは⼤きくなる(=近傍データを 重視) ・SHAP は連合が Shapley Value の推定で得るであろう重 みに従って、サンプリングされたインスタンスに重み付け をする為、⼩さな連合(1が少ない)と⼤きな連合(1が多 い)が最も⼤きな重みをとる。(特徴量の貢献度がはっき り分かるインスタンスは重みが⼤きくなる) Kernel SHAP と LIME は誤差に対する重み付けが違う
  29. © smorce 32 2. SHAPとは TreeSHAP なら Shapley Value を正確かつ⾼速に計算する

    Kernel SHAPの問題点 Kernel SHAP が近似計算を含んでいるため正確性に⽋け、かつ、計算速度も遅い →翌年に TreeSHAP という、⾼速かつ正確に Shapley Value を計算できるアルゴリズムを開発 →Kernel SHAP は指数時間を要求するが、⽊構造をうまく活かして“⽊の深さの⼆乗”の多項式時間で抑えた。 なおかつ、正確に Shapley Value を計算する。 Kernel SHAP TreeSHAP 計算時間 → M︓連合ベクトルの最⼤サイズ T︓⽊の数 L︓⽊の中の最⼤の葉の数 D︓⽊の中の最⼤の深さ Kernel SHAP は存在しない特徴量を周辺分布の期待値で補っていたが、 TreeSHAPは条件付き期待値を使って関数の値を定義する。 決定⽊なら、順序まで考慮したあらゆる組み合わせ(順列組み合わせ)に対する予測の期待値を計算できる。
  30. © smorce 33 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする https://ichi.pro/shap-pa-to-3-tsuri-shap-64844289527195 より引⽤ サンプルサイズ s = 10
  31. © smorce 34 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする サンプルサイズ s = 10 特徴量が全く存在しないNULLモデル(ベースライン)は予測の平均値 ϕ0 =(50 * 2 + 30 * 2 + 20 * 1 + 10 * 5)/ 10 = 23
  32. © smorce 35 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする ベースライン︓23 順列組み合わせ 「x→ y→ z」の場合 【変数xのみで分類】 特徴xのみを含むモデルの予測は20。 このシーケンスでのxの限界寄与は ϕˣ¹ = 20–23 = -3 x = 150
  33. © smorce 36 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする ベースライン︓23 順列組み合わせ 「x→ y→ z」の場合 次に、先程のモデルに特徴yを追加することを考えるが、 yを追加しても、選択したインスタンスiの予測は変更されないため、 yの限界寄与は 20–20 = 0。 zも同じ理由で 20–20 = 0。 の予測値20
  34. © smorce 37 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする ベースライン︓23 順列組み合わせ 「y→ z→ x」の場合 最初のノードn1はxを分割変数として使⽤しますが、これは x がまだ使⽤できないため、 予測を(4/10)*(左の⼦ノードn2からの予測)+(6/10)*(右の⼦からの予測)として計算する。 (4/10) (6/10)
  35. © smorce 38 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする ベースライン︓23 順列組み合わせ 「y→ z→ x」の場合 最初のノードn1はxを分割変数として使⽤しますが、これは x がまだ使⽤できないため、 予測を(4/10)*(左の⼦ノードn2からの予測)+(6/10)*(右の⼦からの予測)として計算する。 ノードn2からの予測︓50 y = 75 より
  36. © smorce 39 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする ベースライン︓23 順列組み合わせ 「y→ z→ x」の場合 【ノードn3からの予測】 分割変数としてxを使⽤しているので同様に、n3 =(1/6)* 20 +(5/6)* 10 = 70/6 が予測値。
  37. © smorce 40 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする ベースライン︓23 順列組み合わせ 「y→ z→ x」の場合 (4/10)* 50 +(6/10)*(70/6)= 27(予測値更新) したがって、このシーケンスにおけるyの限界寄与 ϕʸ² = 27–23 = 4。 (4/10)×予測値50 (6/10)×予測値70/6
  38. © smorce 41 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする ベースライン︓23 順列組み合わせ 「y→ z→ x」の場合 次に先程のモデルに特徴zを追加するが、 zはツリーの内部ノードのいずれでも分割変数として使⽤されないため、 限界寄与0
  39. © smorce 42 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする ベースライン︓23 順列組み合わせ 「y→ z→ x」の場合 次に先程のモデルに特徴zを追加するが、 zはツリーの内部ノードのいずれでも分割変数として使⽤されないため、 限界寄与0
  40. © smorce 43 2. SHAPとは TreeSHAP の計算例 例題 (x, y,

    z) = (150, 75, 200)で与えられる インスタンス i のSHAP値 予測値 t = 20 とする ベースライン︓23 順列組み合わせ 「y→ z→ x」の場合 次に先程のモデルに特徴xを追加する。これは x= 150 より予測値20 このシーケンスでのxの限界寄与はϕˣ² = 20–27 = -7
  41. © smorce 45 2. SHAPとは 全てのあり得る部分集合 S を同時に⽊へ押し込むことで計算時間を短縮 決定⽊を使えば、順序まで考慮したあらゆる組み合わせ(順列組み合わせ)に対する予測の期待値を計算でき そう。

    →期待値が分かれば、特徴量を追加した後と追加する前の差分によって、その特徴量の限界貢献も計算でき る。 問題点は、この⼿順をありうる特徴量の部分集合 S のそれぞれに対して適⽤しなければならないこと。 →正確に計算できても計算時間の問題が残る。 計算時間短縮のアイデア 全てのあり得る部分集合 S を同時に⽊へ押し込むことで計算時間を短縮する。 Shapley Value の加法性のおかげで、アンサンブル⽊の Shapley Value は、 個別の⽊の Shapley Value の (加重) 平均となる。
  42. © smorce 46 2. SHAPとは SHAP のサンプルデータセット SHAPライブラリにはサンプルのデータセットもついてくるので簡単に試すことができる • imagenet50(display=False,

    resolution=224): • 50種類の画像のデータ (Classification) • boston(display=False): • 住宅価格のデータ (Regression) • linnerud(display=False): • ⽣理学的特徴と運動能⼒のデータ (multivariate regression) • imdb(display=False): • 映画レビューのデータ (Classification) • diabetes(display=False): • 糖尿病患者のデータ (Regression) • communitiesandcrime(display=False): • 犯罪のデータ ? など https://gist.github.com/kiwamizamurai/71587ddd573127a9a56aae57174bacc0#file-shap-lime-ipynb より引⽤
  43. © smorce 47 2. SHAPとは 使い⽅ Python処理フロー 1. 説明⽤のクラスオブジェクトを作成 2.

    説明に⽤いるSHAP値を計算(説明に⽤いるための説明可能モデルを作成) 3. 結果を図や数値として出⼒ • 図を出⼒するには、shap.initjs()による初期化が必要 実務での使い⽅ 「現実世界は不均衡なデータが⼤半である」という前提で、 マイナークラスに対して個別に解釈して施策を打つことができる。 例えば、あるサービスの超ロイヤルユーザに対して One to Oneマーケティングを仕掛けるなど。 効果的な変数に対して カスタマイズした施策を 打つ
  44. © smorce 48 2. SHAPとは 例題 サンプルごとにSHAP値をみる force_plot ・⼦宮頸がんのリスクを予測 ・TreeSHAP(モデル:ランダムフォレスト,

    周辺分布) (+) (ー) 【⼥性A】 性感染症(STD)などの リスク増加効果は、年齢 などの減少効果によって 相殺される 【⼥性B】 51歳と34年間の喫煙は、 癌の予測リスクを⾼める ベースライン(平均予測確率) https://hacarus.github.io/interpretable-ml-book-ja/shap.html の例題から引⽤
  45. © smorce 49 2. SHAPとは 例題 決定⽊のように予測の過程を可視化し、サンプルごとに影響⼒をみる decision_plot ・⼦宮頸がんのリスクを予測 ・TreeSHAP(モデル:ランダムフォレスト,

    周辺分布) どのサンプルが、どの特徴量から、どれぐらいの影響を受けて最終的な予測値になったのか⼀⽬でわかります。 間違えて予測された1サンプルをみる、みたいな使い⽅。 また、feature_order='hclust'とすると、同じような予測パターンのサンプルを近くに表⽰してくれます。 予測を間違えたサンプル
  46. © smorce 50 2. SHAPとは 例題 全サンプルのSHAP値をみるsummary_plot(plot_type="bar") ・⼦宮頸がんのリスクを予測 ・TreeSHAP(モデル:ランダムフォレスト, 周辺分布)

    ホルモン避妊薬の使⽤年数は 最も重要な特徴量であり、予 測される癌の可能性の絶対値 を2.4%変動させます (x軸での0.024) ・SHAP 特徴量重要度 (SHAP Feature Importance)を算出することでグローバルな影響⼒を確認できる ・特徴量ごとの「SHAP値の絶対値」の平均をとり、重要度の降順に特徴量を並べ替えプロットする 特徴量は予測全体への影響⼒が⼤きい順に上から並べられる 2.4%
  47. © smorce 51 2. SHAPとは 例題 全サンプルのSHAP値をみるsummary_plot ・⼦宮頸がんのリスクを予測 ・TreeSHAP(モデル:ランダムフォレスト, 周辺分布)

    ホルモン避妊薬使⽤年数が低 いと予測される癌のリスクは 低減し、⾼いとリスクが増加 する。 ただし、あらゆる効果はモデ ルの振る舞いを説明するもの であり、必ずしも実世界での 要因とは限らないことを注意。 (つまり、因果関係を表してい る訳ではない) ・特徴量ごとのSHAP値の分布を知ることができる
  48. © smorce 52 2. SHAPとは 例題 dependence_plot ・⼦宮頸がんのリスクを予測 ・TreeSHAP(モデル:ランダムフォレスト, 周辺分布)

    ホルモン避妊薬使⽤年数が短いほど 予測される確率を下げ、 ⻑いほど予測される確率を増加させ ている。 ・変数間の関係性や、変数と予測値との関係性をより詳細に捉えられる(ただし、下記の例だと変数間の関係性は表⽰されていない) ・PDP や ALE plot の代替⼿法。PDP や ALE plot が平均効果を⽰すのに対して、SHAP dependence は y 軸⽅向のばらつきも⽰せる
  49. © smorce 53 2. SHAPとは 例題 dependence_plot ・⼦宮頸がんのリスクを予測 ・TreeSHAP(モデル:ランダムフォレスト, 周辺分布)

    ホルモン避妊薬の使⽤年数は性感染症と相 互作⽤する。 0年付近でSTDの発⽣がある場合は予測さ れる癌のリスクが増加する(⾚丸) 避妊薬を数年に渡り使⽤した場合、STD の発⽣は予測されたリスクを減少させる傾 向にある(⻘丸) ※ただし、因果関係を説明している訳では ない ・特に特徴量に相互作⽤がある場合には、dependence plot は y 軸⽅向に更にばらつくはず (相互作⽤効果とは、個々の特徴量の影響を考慮した後の追加の複合的な特徴量の効果) SHAPでは個々の効果を考慮した後の純粋な 相互作⽤効果を得ることができる。 右軸にはデフォルトで相互作⽤が⼀番はっき り現れる変数が⾃動で選ばれる。
  50. © smorce 54 2. SHAPとは 例題 Shapley Value でクラスタリングする force_plot

    ・⼦宮頸がんのリスクを予測 ・TreeSHAP(モデル:ランダムフォレスト, 周辺分布) それぞれのx軸の位置はデータのインスタ ンス。 ⾚の SHAP 値は予測を増加させ、⻘の値 は予測を減少させる。右にある⽬⽴つクラ スタは、癌のリスクが⾼いと予測されたグ ループ。 論⽂では、hierarchical agglomerative clustering(階層的凝集型クラスタリング) を使っている。 SHAP値を使った教師ありクラスタリング クラスタリングは普通、特徴量を基に⾏われるが、特徴量が異なるスケールを持つことがよくある。そのような異なる⽐較 ができない特徴量を持つインスタンスの間の距離を計算することは困難。 そこで、SHAP clustering は各インスタンスの Shapley Value を使ってクラスター化する。 これは、説明の類似性によってインスタンスをクラスター化することを意味している。 全てのSHAP値は同じ単位のため任意のクラスター⼿法が使⽤可能で、クラスタリングの類似度を元に各データを横軸に並べ て配置する。 ※SHAP値の計算には特徴量と教師データが必要なので、教師ありクラスタリングとしている
  51. © smorce 56 3. ハンズオン 使⽤するテーブルデータ データ区分 オープンデータ(テーブルデータ) 公開サイト UCI

    Machine Learning Repository https://archive.ics.uci.edu/ml/index.php 使⽤するデータ ソウル⾃転⾞シェアリング需要データセット https://archive.ics.uci.edu/ml/datasets/Seoul+Bike+Sharing+Demand インスタンスの数 8760 属性の数 14 ⽋損値 該当なし 寄付⽇ 2020-03-01 要約 レンタサイクルは待ち時間が短くなるため、適切なタイミングで⼀般の⼈々が利⽤できるようにす ることが重要です。結局、レンタサイクルの安定供給を市に提供することが⼤きな関⼼事になりま す。重要なのは、レンタサイクルの安定供給のために毎時必要な⾃転⾞数を予測することです。 データセットには、天気情報(気温、湿度、⾵速、視程、露点、太陽放射、降雪、降⾬)、1時間あ たりにレンタルされた⾃転⾞の数、および⽇付情報が含まれています。
  52. © smorce 57 3. ハンズオン one-hot encoding 軽く前処理したデータを使⽤(特徴量︓11個) ⽬的変数 height_1

    : 5635 height_2 : 2073 height_3 : 696 height_4 : 61 特徴量 ・・・ 多クラス分類問題 one-hot encoding ※LIMEやSHAPでは”one-hot encoding”が必須です。後でSUMするため、参照カテゴリも残しておいた⽅が良いです 少ない ↑ レンタル数 ↓ 多い
  53. © smorce 58 3. ハンズオン テストデータで検証 one-hot encodingしたデータでランダムフォレスト(Random Forest)を学習 テストデータでの当てはまり

    : 0.860 - 予測 height_1 height_2 height_3 height_4 実測 height_1 1599 95 8 0 height_2 118 460 35 0 height_3 10 71 121 8 height_4 0 0 9 6 混合⾏列
  54. © smorce 59 3. ハンズオン LIME 0番⽬のインスタンス i = 0

    分類確率 : [1. 0. 0. 0.] 分類結果 : height_1 正解: height_1 ・気温がマイナス6度だったことにより、height_1の確率を0.21押し上げた ・季節が冬だったことにより、height_1の確率を0.20押し上げた →冬でかなり寒い⽇だったため、レンタル数がほとんど伸びなかったと思われる
  55. © smorce 60 3. ハンズオン LIME 500番⽬のインスタンス i = 500

    分類確率 : [0.2 0.2 0.6 0. ] 分類結果 : height_3 正解: height_3 ・気温が28.3度だったことにより、height_3の確率を0.11押し上げた ・朝8時︖だったことにより、 height_3の確率を0.08押し上げた →夏の平⽇で気温もちょうど良かったことから、通勤や通学に利⽤されたと思われる Value は22時が正しいので なぜHour=8がTrueなのか分からない…。
  56. © smorce 61 3. ハンズオン LIME インスタンスの可視化 ★が i =

    0 のインスタンス 標準化後にPCAをして次元削減 周辺の•が擬似的(※)な近傍データ ※LIMEがサンプリングした近傍データの出し⽅が分からなかったので、興味のあるインスタンスに近いインスタンスを•にした ★が i = 500 のインスタンス LIMEの結果 解釈 周辺にクラス0(height_1)のデータしかないので height_1に100%分類されていると思われる 周辺にクラス0、クラス1、クラス2のデータもあるので、 height_1,height_2 にも分類される確率が存在していると 思われる クラス0 クラス1 クラス2 クラス3
  57. © smorce 62 3. ハンズオン KernelSHAP 0番⽬と500番⽬のインスタンス i = 0

    分類確率 : [1. 0. 0. 0.] 分類結果 : height_1 正解: height_1 i = 500 分類確率 : [0.2 0.2 0.6 0. ] 分類結果 : height_3 正解: height_3 ベースライン(平均予測確率) ベースライン(平均予測確率) ・気温がマイナス6度だったことにより、height_1の確率を押し上げた ・季節が冬だったことにより、height_1の確率を押し上げた →冬でかなり寒い⽇だったため、レンタル数がほとんど伸びなかったと思われる ・時間が22時台だったことにより、height_3の確率を押し上げた ・⽇射量が0.34だったことにより、height_3の確率を押し上げた ・気温が28.3度だったことにより、height_3の確率を押し上げた →夏の夜中の時間帯で気温もちょうど良かったことため、運動に利⽤されたと考えられる
  58. © smorce 63 3. ハンズオン TreeSHAP 対象レコードをテストデータ全体に拡張することによって特徴量重要度(feature importance)のように 機械学習モデルをグローバル(⼤域的)に解釈できる。単純に加法したものなので、ローカルな解釈と⼀致する。 ※Shapley

    Value は加法性が成り⽴つのでone-hotでバラした変数をSUMできる性質がある one-hot : sum 前 one-hot : sum 後 カテゴリカル変数である Hour, Seasons, Holiday をSUMして1つにまとめた 「気温」がそのクラスに分類される可能性の絶対値を約27%変動させる 「季節︓冬」がそのクラスに分類される可能性の絶対値を約14%変動させる 時間、⽇射量、降⾬量が⾃転⾞のレンタル数に影響⼒を持つ様⼦が分かる 逆にSUMすると季節や気温の影響⼒が減少してしまった ⽇射量や気温の特徴量重要度の値が変わる理由が 良く分からない…。
  59. © smorce 64 3. ハンズオン TreeSHAP one-hot : sum 前

    one-hot : sum 後 特徴量重要度(feature importance)を加算させず分布にして⾒ることもできる。クラスごとに分布を出すことができる。 この例では height_1 クラスを⾒ており、右にいくほどheight_1に分類される確率が⾼くなる。 気温が低いほどheight_1に分類される確率が⾼くなり、気温 が⾼いとheight_1に分類されづらくなる 季節が冬であるとheight_1に分類される確率が⾼くなり、季 節が冬でないとheight_1に分類されづらくなる 時間は⾚と⻘が全体に分布していることから解釈が難しい ⽇射量は値が⼩さいとheight_1に分類されやすくなったり、分類されづ らくなったりする。値が⾼くなると分類結果に影響を与えづらくなる 季節は夏や冬になるとheight_1に分類されやすくなり、春や秋になると height_1に分類されづらくなる
  60. © smorce 65 3. ハンズオン 特徴量ごとの分布 one-hot : sum 前

    気温が低いほどheight_1に分類される確率が⾼くなり、気温 が上がっていくとheight_1に分類されづらくなる。25度を 超えたあたりでheight_1に分類される確率が上がってくる。 one-hot : sum 後 特徴量ごとに分布をみることもできる。 height_1の場合 解釈が難しいのと、sumすると気温の特徴量重要 度の値が変わる理由が良く分からない…。
  61. © smorce 66 3. ハンズオン 交互作⽤のある変数の抽出 one-hot : sum 後

    気温と交互作⽤する上位3つの特徴量を抽出することもできる。直感的に気温と関連のありそうな変数がピックアップされた。 height_1の場合 ⼀位︓視程 ⼆位︓湿度 三位︓露点温度 - 摂⽒ ※視程とは⾁眼で⽬標物を⾒分けられる最⼤距離のこと。 安定な⼤気中(たとえば早朝の⼤気)ではほこりや微⼩ ⽔滴が地⾯付近の空気中によどむため視程が悪い。⽔蒸 気が⽐較的少なく下層が不安定で⾵が強い気団中は視程 はよく,⽐較的安定で湿った⼩笠原気団の中では視程は 悪い。 ※露点温度は⽔蒸気が多いと⾼くなり、少ないと 低くなる。すなわち、空気中の⽔分量を⽰す値の こと。
  62. © smorce 67 3. ハンズオン 擬似的な決定⽊ 決定⽊のようなグラフも出⼒できる。今回は予測を間違えたサンプルを点線にした。 height_1の場合(サンプルサイズ︓10) one-hot :

    sum 前 分類確率︓[0.9, 0.1, 0. , 0. ] → height_1に分類 正解︓height_2 誤分類したサンプル(点線)をピックアップ 1サンプルのみを表⽰させると、特徴量の値も表⽰されます (誤分類)
  63. © smorce 68 3. ハンズオン 擬似的な決定⽊ height_1(不正解) さきほどの誤分類したサンプルを不正解クラスと正解クラスで⽐較 (height_1は前ページと同じグラフ) Hour_1がheight_1の確率を⼤きく下げる⼀⽅、height_2に分類する確率を⼤きく上げる⽅向に寄与している

    逆に、気温や露点温度が低いことがheight_2に分類する確率を⼤きく下げる⼀⽅、 height_1に分類する確率を⼤きく上げる⽅向に寄与している →モデルが「気温や露点温度が低いことで⾃転⾞のレンタル数が伸びないだろう」と予測したことが分かる。 またheight_2の出発点が0.1と⾮常に低く、初めからheight_2に分類される確率が低かったことが分かるのでモデル改善のヒントになるかもしれない。 (例えば、⽬的変数の偏りを軽減するなど) height_2(正解) 分類確率︓[0.9, 0.1, 0. , 0. ] → height_1に分類 正解︓height_2
  64. © smorce 69 3. ハンズオン 予測の典型的なパターンを抽出 予測の典型的なパターンを確認することもできる。分類結果が height_4 になっているサンプルだけ抽出した。 height_4

    (特徴量の効き⽅が同じ) 誤分類したサンプルだけピックアップして点線表⽰(サンプルサイズ︓8) height_4(不正解) height_4の場合(サンプルサイズ︓14) 予測 ['height_4' 'height_4' 'height_4' 'height_4' 'height_4' 'height_4' 'height_4' 'height_4' 'height_4' 'height_4' 'height_4' 'height_4' 'height_4' 'height_4ʼ] 正解 ['height_3' 'height_4' 'height_3' 'height_3' 'height_3' 'height_4' 'height_4' 'height_3' 'height_4' 'height_4' 'height_3' 'height_3' 'height_3' 'height_4ʼ] →14件中8件を誤分類している サンプルによって特徴量の効き⽅に多少の違いがあるが、10時台、気温、⽇射量、露点温度 - 摂⽒、⾵速、湿度あたりが 誤分類の原因になっていると思われる。
  65. © smorce 70 3. ハンズオン 使⽤する画像データ データ区分 オープンデータ(フルカラーの画像データ) 公開サイト The

    CIFAR-10 dataset https://www.cs.toronto.edu/~kriz/cifar.html 使⽤するデータ CIFAR-10データセット(Canadian Institute For Advanced Research) インスタンスの数 5万枚の訓練データ⽤(画像とラベル) 1万枚のテストデータ⽤(画像とラベル) ラベル ラベル「0」︓ airplane(⾶⾏機) ラベル「1」︓ automobile(⾃動⾞) ラベル「2」︓ bird(⿃) ラベル「3」︓ cat(猫) ラベル「4」︓ deer(⿅) ⽋損値 該当なし 寄付⽇ April 8, 2009 要約 主に画像認識を⽬的としたディープラーニング/機械学習の研究や初⼼者向けチュートリアルで使 われている。CIFAR-10は上記の通り10クラス(種類)となっており⼿軽に扱えるが、より複雑な 内容として100クラス版であるCIFAR-100も提供されている。 基本的に⾃由に使⽤できる(※ライセンスは指定されていない。CC(Creative Commons)でいう 「パブリック・ドメイン・マーク 1.0」相当と考えられる。 24bit RGBフルカラー、幅32×⾼さ32ピクセルの画像データ。 ラベル「5」︓ dog(⽝) ラベル「6」︓ frog(カエル) ラベル「7」︓ horse(⾺) ラベル「8」︓ ship(船) ラベル「9」︓ truck(トラック)
  66. © smorce 71 3. ハンズオン LIMEで画像データを説明 CIFAR10 の画像を使⽤(Deep Learning model:

    ResNet, Accuracy: 85%) 分類結果TOP5 : car , truck , dog , cat , horse 分類結果TOP5 : horse , dog , cat , deer , frog class : car class : horse ⼊⼒ 出⼒ 解釈 緑が分類に寄与した部分、⾚が分類を邪魔した部分 LIMEはスーパーピクセル単位で出⼒される ・⻑い四本脚と尻尾 ・横⻑の胴体 ・縦⻑の頭 が⾺と判断されたと思われる ・⾞体の上部 ・⾞体の後部 ・後輪 が⾞と判断されたと思われる 逆に ・側⾯ が分類を邪魔したノイズになって いる(ドアが開いていることが影響 している気がする)
  67. © smorce 72 3. ハンズオン SHAPで画像データを説明 CIFAR10 の画像を使⽤(Deep Learning model:

    ResNet, Accuracy: 85%) 分類結果TOP5 : car , truck , dog , cat , horse 分類結果TOP5 : horse , dog , cat , deer , frog class : car class : horse ⼊⼒ 出⼒ ⾚⾊が分類に寄与した部分、⻘⾊が分類を邪魔した部分 car truck horse dog 解釈 SHAP は ピクセル単位の出⼒なので、 良く分からない ⾺に分類されるには 騎⼿が寄与していそう 逆に⽝では 騎⼿はノイズになっている
  68. © smorce 74 4. ⻑所と短所 ⻑所 ・SHAP値が Shapley Value の全ての⻑所を反映しており、

    ゲーム理論において "確かな理論的根拠" を持つ ・予測は特徴量の中で公平に分配されている為、各特徴量の寄与度を正確に把握できる ・平均の予測と、個々の予測を⽐較することで対照的な説明ができる (どの特徴量がどのように効いているか) ・SHAPは LIME と Shapley Value をつなげる為、両⽅の⼿法をより理解するためにとても有⽤ ・⼈気のある決定⽊ベースのモデルに対しては Shapley Value を⾼速かつ正確に計算できる なお、⾼速に計算でき加法性が成⽴することから、⼤域的なモデルの解釈も可能とする ・⼤域的なモデルの解釈も Shapley Value の積み上げなので、局所的な解釈と⼀致する。 つまり、共通の基盤で解釈できる
  69. © smorce 75 4. ⻑所と短所 ⻑所 ・Shapley Value による説明が線形モデルのような特徴量の効果の総和として表されるため、 モデルに⾮依存な形で各特徴量の貢献度を直感的に理解できる。

    https://www.datarobot.com/jp/blog/explain-machine-learning-models-using-shap/ より引⽤ ・LIMEやSHAPの利点は、モデルの精度を犠牲にせずに複雑なモデルの解釈性を⾼められる こと ・LIMEやSHAPは、適⽤するにあたって機械学習モデル⾃体に⼿を加える必要は無い。 よって、モデルの種類を問わず、あらゆる機械学習モデルに適⽤できるため、サクッとモデ ルの切り替えも可能
  70. © smorce 76 4. ⻑所と短所 短所 ・Kernel SHAP は計算に時間がかかる。 SHAP

    特徴量重要度 を算出するには多くのインスタンスに対して Shapley Value を 計算する必要がある為、実⽤的ではない。 ・Kernel SHAP は特徴量の依存関係を無視する。 周辺分布からランダムサンプリングした時に、特徴量間に相互関係がある場合 ありそうもないデータ点に過剰な重みを与える事につながる。 →TreeSHAP は、条件付きの予測を明⽰的にモデリングする事でこの問題を解決している。 ・TreeSHAP は直感的ではない特徴量の属性を作り出す可能性がある。 TreeSHAP は条件付き期待予測に従うように変更されてるため、 予測に影響を与えない特徴量に対しても、 TreeSHAP は⾮ゼロの値を持つ可能性がある。
  71. © smorce 78 5. 注意点 TreeSHAPの注意点︓SHAP値を計算する時はバリアンスを⼩さくする⼯夫を⼊れる “SHAP値がばらつくことがあるので、バリアンス(分散)を⼩さくする⼯夫を⾏ったほうがいい 信頼性の観点から、なるべく出⼒値のバリアンスを下げる⼯夫を⾏った⽅がよいと思います。 特にTree系モデルの問題なのですが、⼊⼒するデータセットの違いによってモデルの構造が⼤きく変化しま す。

    シードを変えて複数回CV(cross validation)してSHAP値を計算する実験を⾏ってみると、 同じサンプルでもSHAP値が割とバラついたりします。 そのため、シードを変えて複数回CVを⾏なって結果を平均するなど バリアンスを⼩さくする処理を⾏った⽅が良いと思います。” https://tebasakisan.hatenadiary.com/entry/2019/02/20/190357 より引⽤
  72. © smorce 81 6. 参考⽂献 引⽤⽂献とおすすめ資料 [1] 5.10 SHAP (SHapley

    Additive exPlanations) https://hacarus.github.io/interpretable-ml-book-ja/shap.html [2] [2018] Consistent Individualized Feature Attribution for Tree Ensembles #17 https://github.com/yoheikikuta/paper-reading/issues/17 [3] BlackBox モデルの説明性・解釈性技術の実装 https://www.slideshare.net/DeepLearningLab/blackbox- 198324328?ref=https://blog.masahiko.info/ [4] SHAP を⽤いて機械学習モデルを説明する https://www.datarobot.com/jp/blog/explain-machine-learning-models-using-shap/ [5] SHAP(SHapley Additive exPlanations)で機械学習モデルを解釈する https://dropout009.hatenablog.com/entry/2019/11/20/091450 [6] 機械学習モデルの判断根拠の説明 https://www.slideshare.net/SatoshiHara3/ss-126157179 [7] 機械学習モデルの予測値を解釈する「SHAP」と協⼒ゲーム理論の考え⽅ https://logmi.jp/tech/articles/322738
  73. © smorce 82 6. 参考⽂献 引⽤⽂献とおすすめ資料 [8] 説明可能AIが社会から必要とされる理由、その研究動向・応⽤事例について https://blog.albert2005.co.jp/2020/06/26/sunvey-on-explainable-ai/ [9]

    解釈可能な機械学習のためのSHAPを理解する https://ichi.pro/kaishaku-kanona-kikai-gakushu-no-tame-no-shap-o-rikaisuru- 59272219919323 [10] SHAPパート3︓ツリーSHAP https://ichi.pro/shap-pa-to-3-tsuri-shap-64844289527195 [11] 説明モデルSHAP概説+説明モデルを要因分析に使う時のメモ https://tebasakisan.hatenadiary.com/entry/2019/02/20/190357 [12] なぜ決定⽊だとSHAP値を正確に計算できるの? https://qiita.com/hyt-sasaki/items/49355cb6e9775fe998a6 [13] SHAP値で解釈する前にPermutation ImportanceとPDPを知る https://research.miidas.jp/2019/11/shap [14] Feature Importanceを知る https://research.miidas.jp/2020/01/feature-importance
  74. © smorce 83 6. 参考⽂献 引⽤⽂献とおすすめ資料 [15] 【記事更新】私のブックマーク「説明可能AI」(Explainable AI) https://www.ai-gakkai.or.jp/resource/my-bookmark/my-bookmark_vol34-no4/

    [16] 【記事更新】私のブックマーク「機械学習における解釈性(Interpretability in Machine Learning)」 https://www.ai-gakkai.or.jp/resource/my-bookmark/my-bookmark_vol33-no3/ [17] 機械学習における解釈性について https://engineering.mercari.com/blog/entry/2019-12-24-070000/ [18] 説明可能AIの実現⽅法︓LIME、SHAP https://technomado.jp/column/ai/8296/ [19] SHAPの全メソッドを試してみた https://own-search-and-study.xyz/2019/10/05/shap-all-methods/
  75. © smorce 89 APPENDIX Partial Dependence Plot でモデルの振る舞いを確認 学習データ テストデータ

    ある特徴量が変化したとき、どのように予測に影響を与えるのかを評価する⼤域的な解釈⽅法 height_1の場合 ・気温が上がるにつれてheight_1に分類される確率が減少している(SHAPと同じ傾向) ・インプットとアウトカムの⾮線形な関係を捉えられている
  76. © smorce 90 APPENDIX SHAP以外の特徴量重要度(Feature Importance)の⽐較 ※Permutation Importance︓特徴量の値を並び替えることで、特徴量と真の結果との関係性を壊し、これによる予測誤差の増加を測定する⼿法 ※Boruta︓統計的に有意(5%)といえる特徴量を算出する⼿法。特徴量の重要度をランキングでしか出せないので数値は擬似的に算出 Permutation

    Importance Gini Importance Boruta Shadow Importance Gini Importance は気温と相関がありそうな特徴量の重要度が引き上げられることで、2位〜4位にあまり差がないのかもしれない。 ⼀⽅で、Permutation Importance は全ての交互作⽤を考慮して算出できるため、Feature Importance に差がついていると考え られる。また、相関関係が⾼そうな視程が除外され「季節︓冬」が⼊ってきていることからも、適切な重要度を表現しているように 思える。 Boruta Shadow Importance は重要度を算出できないので、特徴量間で相対的な解釈ができない。 • モデル • ランダムフォレスト(Random Forest) • Gini Importance • 順番に︓気温→露点温度→湿度→⽇射量→⾵速→視程 • Permutation Importance • 順番に︓気温→⽇射量→湿度→露点温度→⾵速→季節︓冬 • Boruta Shadow Importance • 順番なし︓気温, ⽇射量, 湿度, 露点温度, ⾵速, 視程 SHAP Feature Importance 1.気温 2.季節︓冬 3.⽇射量 4.湿度 5.露点温度 6.⾵速
  77. © smorce 92 APPENDIX SHAP以外の画像説明モデルとの⽐較 ⾞ ⾺ 下記5モデルで⽐較 • alexnet

    • vgg CNNの可視化技術 Grad-CAM • resnet • densenet • squeezenet alexnet squeezenet vgg resnet densenet 深いレイヤーを可視化
  78. © smorce 93 APPENDIX SHAP以外の画像説明モデルとの⽐較 Grad-CAM と guided backpropagation の両者の結果を重ね合わせた

    Guided Grad-CAM Guided GradCAM は Grad CAM より解像度⾼く注⽬箇所を可視化する⽅法として提案されており、 各モデル(alexnet, vgg, resnet)がどの部分に注⽬したのか、より分かりやすくなった。