SHAP 可解釋性

Python 的 Explainable AI

Fouad Trad

Machine Learning Engineer

SHAP 入門

  • SHAPSHapley Additive exPlanations
  • 與模型無關的技術
  • 源自賽局理論的 Shapley 值
  • SHAP 值 → 量化特徵對預測的貢獻

SHAP 標誌

Python 的 Explainable AI

分配樂團成員的收益

樂團照片。

Python 的 Explainable AI

SHAP 解釋器

 

  • 計算 SHAP 值
  • 樹狀解釋器 → 樹模型

圖示說明 SHAP 解釋器分為可用於任何模型的一般解釋器,以及為特定模型最佳化的類型專用解釋器。

Python 的 Explainable AI

Admissions 資料集

GRE Score TOEFL Score University Rating SOP LOR CGPA Chance of Admit Accept
337 118 4 4.5 4.5 9.65 0.92 1
324 107 4 4 4.5 8.87 0.76 1
316 104 3 3 3.5 8 0.72 1
322 110 3 3.5 2.5 8.67 0.8 1
314 103 2 2 3 8.21 0.45 0

 

  • rf_reg:預測錄取機率
  • rf_class:預測是否錄取
  • X:包含特徵的 dataframe
Python 的 Explainable AI

推導 SHAP 值

import shap
迴歸
explainer_reg = shap.TreeExplainer(rf_reg)

shap_values_reg = explainer_reg.shap_values(X)
分類
explainer_class = shap.TreeExplainer(rf_class)

shap_values_class = explainer_class.shap_values(X)
Python 的 Explainable AI

理解 SHAP 輸出

迴歸
print(shap_values_reg.shape)  
(400, 6)

圖示:SHAP 值表格的維度與 X dataframe 相同(樣本數、特徵數)。

Python 的 Explainable AI

理解 SHAP 輸出

迴歸
print(shap_values_reg.shape)  
(400, 6)

圖示:SHAP 值表格的維度與 X dataframe 相同(樣本數、特徵數)。

分類
print(shap_values_class.shape)
(400, 6, 2)

選取正類別的值

positive_values = shap_values_class[:,:,1]
Python 的 Explainable AI

特徵重要度

mean_shap_values_class = np.abs(shap_values_class[:, :, 1]).mean(axis=0)
mean_shap_values_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X_train.columns, mean_shap_values_class) plt.bar(X_train.columns, mean_shap_values_reg)

圖示:迴歸與分類的特徵重要度,顯示 CGPA 與 GRE 分數對錄取預測最具影響。

Python 的 Explainable AI

一起來練習吧!

Python 的 Explainable AI

Preparing Video For Download...