昔、kaggleから宿題メールみたいなものが届いたんですよね。


ブラックボックス
機械学習も僕の知っている2年前に比べて色々と賑やかになってきました。決定木だとLightGBMやXGBOOSTありますし、ニューラルネットだとStacked LSTMやGANとかですねえ。そんな優秀なアルゴリズム達をどうやって理解すればいいんだろう?と言うのがブラックボックス問題です。例えば「ニューラルネットで学習させたけどこの重みの意味って、、、?」とか「この入力と出力の間の関係は、、?」とか「この変数って予測にプラスに働いたのか、、、?」などです。この記事ではそんなブラックボックスを少しでも理解するための方法をまとめます。
Permutation Importance
例えば決定木だとFeature Importanceがあります。これはモデルが使用する特徴量の重要度を数値化したものです。アルゴリズムに関してここでは触れませんがPlotはこんな感じです。

Partial Dependence Plots
上でどの特徴量が重要か分かりました。ではその特徴量と出力の間の関係知りたくなりますよね?そこでpartial dependence plotの登場です。参考文献にあるLINEさんのスライド見てあまりにも感動したんです。なんでかと言いますとこのアルゴリズムは選択した特徴量以外を周辺化で消すんですよね、その周辺化がまさに積分なんです。ベイズで出てくる周辺分布と同じようなことをしてるんです。

ではプロットを見てみます。データはirisです。

- x軸は変数の値
- y軸はbaseline(一番左の点)との予測(prediction)の比較
- 青枠は信頼区間
SHapley Additive exPlanations Value

LIME
SHAPアルゴリズムについてはLIMEというものがベースとなっているようです。


SHAP
話が少しそれましたがSHAPのアルゴリズムに移ります。これが非常に難しかった。。論文中にある「Simple Properties Uniquely Determine Additive Feature Attributions」の部分が肝です。LIMEに制約を設ける感じです。





これ以上は全くわからないのですいません、説明はここまでします。ここでは使えるようになることに集中します。
- https://github.com/slundberg/shap
- https://arxiv.org/abs/1602.04938
- https://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions.pdf



横軸が目的変数の値で縦軸が特徴変数の貢献度の高さです。赤が正の値を、青が負の値となります。例えば、s5は目的変数が大きく(右側)なるほど赤い分布となり、目的変数が小さく(左側)なるほど青い分布となります。つまり、目的変数とs5は正の相関があることがわかります。


Reference
- https://www.kaggle.com/dansbecker/permutation-importance
- https://speakerdeck.com/line_developers/machine-learning-and-interpretability
- http://alfredplpl.hatenablog.com/entry/2013/12/24/225420
- http://maruo51.com/2019/05/02/feature_importances_/
- https://dropout009.hatenablog.com/entry/2019/01/07/124214
- https://qiita.com/shin_mura/items/cde01198552eda9146b7
- https://slundberg.github.io/shap/notebooks/plots/dependence_plot.html
- https://www.slideshare.net/SatoshiHara3/ss-126157179