小さくなって、これが最終的なこのインスタンスへの予測結果となります。ここで、先程のアルバイトゲームとの共通点が現れています。各特徴量を一つずつ条件付けていくことで予測値に与える限界的な効果を見ていますが、これはアルバイトゲームで言うところの限界貢献度に対応しています。順で条件づけていますが、当然別の順番で条件づけていくと予測値に与える限界的な効果は変化します。よって、考えうる全ての順序で限界効果を計算し、それを平均しなければなりません。Valueに対応します。Valueが持つ望ましい性質を満たすことが証明されています。Valueを計算するのは非常に計算コストがかかるので、実際の計算ではアルゴリズムごとの近似手法が用いられています。tree系のアルゴリズムに対してはTreeSAHPという高速なアルゴリズムが提案されています。Valueを簡単で高速に計算できるPythonパッケージにSHAPがあります。必要なパッケージを読み込みましょう。いくつかの可視化で必要データはshapパッケージにあるボストンの不動産価格のデータを用います。データセットの細かい説明はリンクをご確認下さい。Forestを使います。y)ここからがshapの使い方になります。shapにはいくつかのExplainerが用意されていて、まずはExplainerにモデルを渡すします。ForestなのでTreeExplainer()を使います。X)Explainerにはshap_values()メソッドが用意されています。Valueを計算できます。shapは高速な計算アルゴリズムが実装されており、特にこのデータセットは500行程度なのですぐに計算は終わりますが、計算コストは依然として高いので大きいデータセットのときは適当にサンプリングして渡す必要があります。Valueを確認してみます。これは`force_plot()`を使います。valueの25.64がこのインスタンスに対する予測値となります。このインスタンスは平均よりも高い値が予測されています。Valueで分解して可視化しています。このインスタンスはLSTATが4.98をとっていて、これはこのインスタンスの不動産価格に対して大きなプラスの要因となっています。逆に、RMは6.575となっていて、これはマイナス要因であることも見て取れます。プラスとマイナスを総合するとプラスの方が大きくなっていて、最終的には全体平均より3.13高い予測結果になっていることがわかります。ちなみにLSTATはその地域に住む低所得層の割合、RMは平均的な部屋の数です。Valueを変数ごとに平均して変数重要度のように使うこともできます。