Explainer noyau SHAP

Explainable AI en Python

Fouad Trad

Machine Learning Engineer

Explainer noyau SHAP

 

  • Calcule les valeurs SHAP pour tout modèle

    • K plus proches voisins
    • Réseaux de neurones
    • Modèles arborescents
  • Plus lent que les explainers propres à un type

Image montrant que les explainers SHAP se répartissent 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

Maladie cardiaque

age sex chest_pain_type blood_pressure ecg_results thalassemia target
52 1 0 125 1 3 0
53 1 0 140 0 3 0
70 1 0 145 1 3 0
61 1 0 148 1 3 0
62 0 0 138 1 2 0

 

mlp_clf : perceptron multicouche qui prédit le risque de maladie cardiaque

Explainable AI en Python

Frais d'assurance

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

 

mlp_reg : perceptron multicouche qui prédit les frais d'assurance

Explainable AI en Python

Créer des explainers à noyau

MLPRegressor
import shap


explainer = shap.KernelExplainer( # Fonction de prédiction du modèle, # Résumé représentatif de l'ensemble de données )
MLPClassifier
import shap


explainer = shap.KernelExplainer( # Fonction de prédiction du modèle, # Résumé représentatif de l'ensemble de données )
Explainable AI en Python

Créer des explainers à noyau

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  # Résumé représentatif de l'ensemble de données
)


MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  # Résumé représentatif de l'ensemble de données
)


Explainable AI en Python

Créer des explainers à noyau

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  shap.kmeans(X, 10)
)


shap_values_reg = explainer.shap_values(X)
MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  shap.kmeans(X, 10)
)


shap_values_cls = explainer.shap_values(X)
Explainable AI en Python

Importance des variables

MLPRegressor
mean_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X.columns, mean_reg)

Image montrant un diagramme à barres des importances des variables pour la régression, où le tabagisme et l'âge dominent la prédiction des frais.

MLPClassifier
mean_cls = np.abs(shap_values_cls[:,:,1]).mean(axis=0)

plt.bar(X.columns, mean_cls)

Image montrant un diagramme à barres des importances des variables pour la classification, où le type de douleur thoracique et la thalassémie dominent la prédiction.

Explainable AI en Python

Comparer aux approches propres au modèle

Régression linéaire
plt.bar(X.columns, np.abs(lin_reg.coef_))

Image montrant un diagramme à barres des importances des variables avec un modèle de régression linéaire ; le tabagisme et l'âge dominent la prédiction des frais.

Régression logistique
plt.bar(X.columns, np.abs(log_reg.coef_[0]))

Image montrant un diagramme à barres des importances des variables pour la classification, où le type de douleur thoracique est le facteur le plus influent.

Explainable AI en Python

Passons à la pratique !

Explainable AI en Python

Preparing Video For Download...