Explicabilité SHAP

IA explicable en Python

Fouad Trad

Machine Learning Engineer

Introduction à SHAP

  • SHAP → SHapley Additive exPlanations
  • Technique indépendante du modèle
  • Utilise les valeurs de Shapley (théorie des jeux)
  • Les valeurs SHAP quantifient la contribution des variables aux prédictions

Logo SHAP

IA explicable en Python

Répartir le profit entre musicien·ne·s

Image d’un groupe de musique.

IA explicable en Python

Explainers SHAP

 

  • Calculer les valeurs SHAP
  • TreeExplainer → modèles d’arbres

Image montrant que les explainers SHAP se divisent entre des explainers généraux (tout modèle) et des explainers spécifiques optimisés par type de modèle.

IA explicable en Python

Jeu de données d’admissions

Score GRE Score TOEFL Classement université SOP LOR CGPA Probabilité d’admission 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
IA explicable 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)
IA explicable en Python

Comprendre la sortie SHAP

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

Image montrant des valeurs SHAP sous forme de tableau ayant les mêmes dimensions que le dataframe X (nombre d’échantillons, nombre de variables).

IA explicable en Python

Comprendre la sortie SHAP

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

Image montrant des valeurs SHAP sous forme de 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]
IA explicable 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 régression et classification, soulignant que les scores CGPA et GRE sont les plus influents pour prédire l’admission.

IA explicable en Python

Passons à la pratique !

IA explicable en Python

Preparing Video For Download...