SHAP値で機械学習モデルの予測結果の解釈性を高める

Kaggle

背景

近年、機械学習アルゴリズムの複雑化に伴い、予測結果が説明できないことが大きな課題になってます。

今回は、機械学習の予測結果を解釈するための方法の一つである、SHAP値について勉強したのでメモ程度に残しておきます。

なるべく数式は使わずに記事書くので、数学的な背景知りたい方はごめんなさい。

SHAP公式SHAP値論文



SHAP値

SHAP値とは

SHAP値はSHapley Additive exPlanationsの略称です。

fitした機械学習のモデルにそれぞれの特徴量がどのように寄与をしたかを説明する値です。

オフィシャルで用意されている概要図が下記です。

SHAP概要図


feature importanceとの違い

特徴量の影響度を測る指標としてfeature importnceが存在しますが、

feature importnceは、モデルを作成する前に、どの特徴量が重要であるかを知るための指標(大域的な説明を与えるアプローチ)

SHAPは、作成したモデルに対して、各特徴量がどのように予測に寄与しているかを知るための指標(局所的な説明を与えるアプローチ)

という風に使う場面は分かれております。

使ってみた

データインポート、SHAPの適用

まずは、SHAPのライブラリをpip installしていきます。


データセットは前回と同様のcancerデータセット、モデルはXGBoostを利用します。

なお、今回利用する「TreeExplainer」は、決定木系のアルゴリズムに適用できるメソッドです。モデルのアルゴリズムによって利用するメソッドが変わるので注意です。


summary_plot

前準備が終了したので、寄与度を可視化していきます。

最初にsummary_plotを利用して、目的変数に対する特徴量の寄与度をみてみましょう。

横軸にSHAP値、縦軸に特徴量の項目、プロットの色が特徴量の値を表しており、縦軸の上位の項目ほどモデルへの寄与度が高いことを表しています。

今回のモデルでは、‘worst concave points’、’mean concave points’などがモデルへの貢献度が高いと表示されています。

また、cancerデータセットは2クラス分類問題であるので上位の特徴量はすべて大きく2つの塊に分かれていることがわかります。

dependence_plot

次に先ほど上位に表示された、‘worst concave points’、’mean concave points’特徴量をdependence_plot機能で確認していきます。

 こちらは、横軸に特徴値の値を、縦軸に同じ特徴量に対するShap値をプロットしております。

2クラス分類問題である場合、特徴量とShap値がきれいに分かれているほど、目的変数への影響度も高いと考えられます。

今回でいうと、’mean concave points’の特徴量は特徴量が0.05の辺りでSHAP値が2分割されているため、寄与度が高い特徴量といえそうです。

force_plot

最後に、Shap値と特徴変数の寄与度を視覚化するforce_plotの機能を試します。

この機能では、1サンプル毎の予測結果を可視化できます。

予測の過程をみても特定の特徴量が支配的に効いているのではなくまんべんなく多くの特徴量が寄与していることがわかります。

すべてのデータに対する計算過程を見たければ下記のように記述します。


まとめ

SHAPを使うと機械学習とモデルと対話するように分析が可能です。

業務などでモデルの解釈性の説明が必要な際には使ってみてください。


参考文献

SHAP値で解釈する前にPermutation ImportanceとPDPを知る – Miidas Research
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
Gradient Boostingは近年Kaggleなどのコンペティションで注目を集めている分類や回帰問題に対するアルゴリズムの一つである。XGBoost, LightGBM, CatBoostなどが有名ではあるが、それらを土台にして近年はDeepGBMやNGBoostといった新規アルゴリズムの登場、汎化理論解析の進…
The Science Behind InterpretML: SHAP
Learn more about the research that powers InterpretML from SHAP creator, Scott Lundberg from Microsoft Research Learn More: Azure Blog Responsible MLAzure ML T...
機械学習における解釈性について
こんにちは。Merpay Advent Calendar 2019 の24日目は、メルペイ Machine Learning チームの @yuhi が機械学習における解釈性についてお送りします。機械学習における解釈性とはなぜ解釈性が必要なの

コメント

タイトルとURLをコピーしました