視覺化 SHAP 可解釋性

Python 的 Explainable AI

Fouad Trad

Machine Learning Engineer

資料集

age gender bmi children smoker charges
19 0 27.900 0 1 16884.92
18 1 33.770 1 0 1725.55
28 1 33.000 3 0 4449.46
33 1 22.705 0 0 21984.47
32 1 28.880 0 0 3866.85

model:隨機森林迴歸,用於預測 charges

import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
Python 的 Explainable AI

特徵重要度圖

  • 顯示各特徵對模型輸出的貢獻
shap.summary_plot(shap_values, X, plot_type="bar")

特徵重要度圖,顯示吸菸狀態是最重要的特徵。

Python 的 Explainable AI

蜂群圖(Beeswarm)

  • 顯示 SHAP 值分佈
  • 強調各特徵對預測的「方向」與「影響幅度」
    • 紅色 → 特徵值高
    • 藍色 → 特徵值低
    • SHAP 值 > 0 → 提高預測結果
    • SHAP 值 < 0 → 降低預測結果

蜂群圖,顯示各特徵的 SHAP 值分佈,顏色代表特徵值大小。

Python 的 Explainable AI

蜂群圖(Beeswarm)

  • 顯示 SHAP 值分佈
  • 強調各特徵對預測的「方向」與「影響幅度」
    • 紅色 → 特徵值高
    • 藍色 → 特徵值低
    • SHAP 值 > 0 → 提高預測結果
    • SHAP 值 < 0 → 降低預測結果

同一張蜂群圖,著重顯示「smoker」特徵的高特徵值有正的 SHAP 值。

Python 的 Explainable AI

蜂群圖(Beeswarm)

  • 顯示 SHAP 值分佈
  • 強調各特徵對預測的「方向」與「影響幅度」
    • 紅色 → 特徵值高
    • 藍色 → 特徵值低
    • SHAP 值 > 0 → 提高預測結果
    • SHAP 值 < 0 → 降低預測結果
shap.summary_plot(shap_values, X, 
                  plot_type="dot")

同一張蜂群圖,著重顯示「smoker」特徵的低特徵值有負的 SHAP 值。

Python 的 Explainable AI

部分相依圖(Partial dependence)

  • 顯示「特徵」與「預測結果」之間的關係
  • 呈現特徵在其數值範圍內的影響
  • 檢驗關係是否符合預期

一般的部分相依圖,顯示某特徵與結果呈現遞減關係。

Python 的 Explainable AI

部分相依圖(Partial dependence)

  • 對每個樣本:
    • 改變選定特徵的數值
    • 其餘特徵保持不變
    • 進行預測
  • 將所有樣本結果取平均
shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

age 特徵的部分相依圖,顯示隨著 age 上升,預測值上升。

Python 的 Explainable AI

部分相依圖(Partial dependence)

  • 對每個樣本:

    • 改變選定特徵的數值
    • 其餘特徵保持不變
    • 進行預測
  • 將所有樣本結果取平均

shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

同一張部分相依圖,著重顯示資料集中 age 數值的分佈。

Python 的 Explainable AI

一起來練習吧!

Python 的 Explainable AI

Preparing Video For Download...