使用 SHAP 的在地可解釋性

Python 的 Explainable AI

Fouad Trad

Machine Learning Engineer

全域 vs. 在地可解釋性

全域可解釋性
  • 模型整體行為
  • 不解釋單一樣本

教授向全班說明整體表現。

在地可解釋性
  • 解釋特定資料點的預測
  • 對敏感情境至關重要

教授向特定學生說明其成績的原因。

1 Images generated by DALL-E
Python 的 Explainable AI

心臟病資料集

age sex chest_pain_type blood_pressure ecg_results thalassemia target
52 1 0 125 1 3 0
53 1 0 140 0 3 0
70 1 0 145 1 3 0
61 1 0 148 1 3 0
62 0 0 138 1 2 0

 

knn: KNN 分類器預測心臟病風險

Python 的 Explainable AI

使用 SHAP 的在地可解釋性

explainer = shap.KernelExplainer(knn.predict_proba, shap.kmeans(X, 10))

test_instance = X.iloc[0, :]
shap_values = explainer.shap_values(test_instance)
print(shap_values.shape)
(6, 2)
Python 的 Explainable AI

SHAP 瀑布圖

  • 顯示各特徵如何拉高或拉低模型預測

瀑布圖顯示多個特徵及其對預測的貢獻。

Python 的 Explainable AI

SHAP 瀑布圖

  • 顯示各特徵如何拉高或拉低模型預測

相同瀑布圖,標示作為預測起點的基準值。

Python 的 Explainable AI

SHAP 瀑布圖

  • 顯示各特徵如何拉高或拉低模型預測

相同瀑布圖,說明往右推的特徵會提高預測,往左推的特徵會降低預測。

Python 的 Explainable AI

繪製瀑布圖

shap.waterfall_plot(

shap.Explanation(
values=shap_values[:,1],
base_values=explainer.expected_value[1],
data=test_instance,
feature_names=X.columns
)
)
Python 的 Explainable AI

多筆樣本的瀑布圖

圖中有四個瀑布圖,各自對應一個樣本,顯示不同樣本以不同路徑達到模型決策。

Python 的 Explainable AI

一起來練習吧!

Python 的 Explainable AI

Preparing Video For Download...