説明可能なAI⑤(具体的な貢献度を可視化)

各サンプルごとの説明変数について、具体的な貢献度を可視化してみます。

force_plot

force_plot関数は、SHAP値と特徴量の貢献度を視覚化することができます。

[Google Colaboratory]

1
2
3
4
5
shap.initjs()
row_index = X_test.index.get_loc(253)
shap.force_plot(base_value=explainer.expected_value,
shap_values=shap_values[row_index,:],
features=X_test.iloc[row_index,:])

まず、force_plotを使うための前処理メソッド(initjs)を実行します。(1行目)

次に確認したいデータの位置(253行目)を指定します。(2行目)

[実行結果]

上図のbase value(横軸)は、与えられたX_test(テストデータの説明変数)における予測値の平均で、全データ共通の指標です。

それに対し、各説明変数のSHAP値を足し引きした結果、最終的に予測結果がf(x)になるという見方となります。

赤色が価格の上昇に貢献、青色が価格の減少に貢献した説明変数になります。

今回はbase valueが22.75で、各説明変数のSHAP値を足し引きした結果、28.55に予測したことが確認できます。

253行目のデータについては、RMが高くLSTATが低いので、その点では価格の上昇に貢献していますが、PTRATIOが価格の減少に貢献した結果、最終的な予測値が低くなったことが分かります。