Uitlegbaarheid met SHAP

Explainable AI in Python

Fouad Trad

Machine Learning Engineer

Introductie tot SHAP

  • SHAPSHapley Additive exPlanations
  • Model-agnostische techniek
  • Gebruikt Shapley-waarden uit de speltheorie
  • SHAP-waarden → kwantificeren feature-bijdragen aan voorspellingen

SHAP-logo

Explainable AI in Python

Winst verdelen onder bandleden

Afbeelding van een muziekgroep.

Explainable AI in Python

SHAP-explainers

 

  • Bereken SHAP-waarden
  • Tree explainers → voor boommomodellen

Afbeelding die toont dat SHAP-explainers zijn verdeeld in algemene explainers (voor elk model) en type-specifieke explainers (geoptimaliseerd per modeltype).

Explainable AI in Python

Toelatingsdataset

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: voorspelt kans op toelating
  • rf_class: voorspelt acceptatie
  • X: dataframe met features
Explainable AI in Python

SHAP-waarden afleiden

import shap
Regressie
explainer_reg = shap.TreeExplainer(rf_reg)

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

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

SHAP-uitvoer begrijpen

Regressie
print(shap_values_reg.shape)  
(400, 6)

Afbeelding met SHAP-waarden als tabel met dezelfde afmetingen als de X-dataframe (aantal rijen, aantal features)

Explainable AI in Python

SHAP-uitvoer begrijpen

Regressie
print(shap_values_reg.shape)  
(400, 6)

Afbeelding met SHAP-waarden als tabel met dezelfde afmetingen als de X-dataframe (aantal rijen, aantal features)

Classificatie
print(shap_values_class.shape)
(400, 6, 2)

Selecteer waarden van de positieve klasse

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

Feature-importance

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)

Afbeelding met feature-importance voor regressie en classificatie, waarbij CGPA en GRE als belangrijkste factoren voor toelating worden getoond.

Explainable AI in Python

Laten we oefenen!

Explainable AI in Python

Preparing Video For Download...