Explicabilité SHAP

Explainable AI en Python

Fouad Trad

Machine Learning Engineer

Introduction à SHAP

  • SHAPSHapley Additive exPlanations
  • Méthode agnostique au modèle
  • Utilise les valeurs de Shapley en théorie des jeux
  • Les valeurs SHAP → quantifient la contribution des variables aux prédictions

Logo de SHAP

Explainable AI en Python

Répartir les profits entre membres du groupe

Image d'un groupe de musique.

Explainable AI en Python

Explainers SHAP

 

  • Calculer les valeurs SHAP
  • Tree explainers → modèles arborescents

Image montrant que les explainers SHAP se divisent entre des explainers généraux, applicables à tout modèle, et des explainers propres à un type, optimisés pour certains modèles.

Explainable AI en Python

Ensemble de données d'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 : prédit la probabilité d'admission
  • rf_class : prédit l'acceptation
  • X : dataframe des variables explicatives
Explainable AI en Python

Calculer les valeurs SHAP

import shap
Régression
explainer_reg = shap.TreeExplainer(rf_reg)

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

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

Comprendre la sortie SHAP

Régression
print(shap_values_reg.shape)  
(400, 6)

Image montrant que les valeurs SHAP forment un tableau ayant les mêmes dimensions que le dataframe X (nombre d'échantillons, nombre de variables).

Explainable AI en Python

Comprendre la sortie SHAP

Régression
print(shap_values_reg.shape)  
(400, 6)

Image montrant que les valeurs SHAP forment un tableau ayant les mêmes dimensions que le dataframe X (nombre d'échantillons, nombre de variables).

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

Sélectionner les valeurs de la classe positive

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

Importance des variables

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)

Image montrant l'importance des variables pour la régression et la classification, où les notes CGPA et GRE sont les plus influentes pour prédire l'admission.

Explainable AI en Python

Passons à la pratique !

Explainable AI en Python

Preparing Video For Download...