説明可能なAI⑪(waterfall_plotで貢献度を可視化)

waterfall_plot

waterfall_plotは、force_plotと表現方法が違うだけで同じように具体的な貢献度を可視化することができます。

[Google Colaboratory]

1
2
3
4
5
6
7
shap.initjs()
row_index = 2
for i in range(2):
print("Class ", i)
display(shap.plots._waterfall.waterfall_legacy(explainer.expected_value[i],
shap_values[i][row_index,:],
X_test.iloc[row_index,:]))

陽性と陰性でループさせて、各カテゴリごとのSHAP値でforce_plotを実行し、貢献度を表示しています。(3~7行目)

[実行結果]

force_plotでのbase_valueは、上図(陽性判定)でE[f(X)]=0.381と表示されています。

E[f(X)]を基点として下から上へSHAP値を足し引きして、最終的にf(x)=0.027になることが確認できます。

また下図(陰性判定)ではE[f(X)]=0.619と表示されています。

E[f(X)]を基点として下から上へSHAP値を足し引きして、最終的にf(x)=0.973になることが確認できます。

force_plotwaterfall_plotは、表現方法が異なるだけなので好きな方を利用するようにしましょう。