Visualiser l'explicabilité SHAP

Explainable AI en Python

Fouad Trad

Machine Learning Engineer

Ensemble de données

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

model: régleur aléatoire (random forest) pour prédire les frais

import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
Explainable AI en Python

Diagramme d'importance des caractéristiques

  • Montre la contribution de chaque caractéristique à la sortie du modèle
shap.summary_plot(shap_values, X, plot_type="bar")

Diagramme d'importance des caractéristiques montrant que le statut de fumeur est le plus important.

Explainable AI en Python

Nuée d'abeilles (beeswarm)

  • Affiche la distribution des valeurs SHAP
  • Met en évidence la direction et l'ampleur de chaque caractéristique sur la prédiction
    • Rouge → valeur de caractéristique élevée
    • Bleu → valeur de caractéristique faible
    • Valeur SHAP > 0 → augmente le résultat
    • Valeur SHAP < 0 → diminue le résultat

Nuée d'abeilles montrant la distribution des valeurs SHAP pour chaque caractéristique, avec des couleurs indiquant les valeurs des caractéristiques.

Explainable AI en Python

Nuée d'abeilles (beeswarm)

  • Affiche la distribution des valeurs SHAP
  • Met en évidence la direction et l'ampleur de chaque caractéristique sur la prédiction
    • Rouge → valeur de caractéristique élevée
    • Bleu → valeur de caractéristique faible
    • Valeur SHAP > 0 → augmente le résultat
    • Valeur SHAP < 0 → diminue le résultat

Même nuée d'abeilles montrant que des valeurs élevées de la caractéristique « smoker » ont des valeurs SHAP positives.

Explainable AI en Python

Nuée d'abeilles (beeswarm)

  • Affiche la distribution des valeurs SHAP
  • Met en évidence la direction et l'ampleur de chaque caractéristique sur la prédiction
    • Rouge → valeur de caractéristique élevée
    • Bleu → valeur de caractéristique faible
    • Valeur SHAP > 0 → augmente le résultat
    • Valeur SHAP < 0 → diminue le résultat
shap.summary_plot(shap_values, X, 
                  plot_type="dot")

Même nuée d'abeilles montrant que des valeurs faibles de la caractéristique « smoker » ont des valeurs SHAP négatives.

Explainable AI en Python

Diagramme de dépendance partielle

  • Montre la relation entre la caractéristique et le résultat prédit
  • Montre l'effet de la caractéristique sur tout son intervalle
  • Vérifie si la relation est conforme aux attentes

Diagramme de dépendance partielle générique montrant une relation décroissante entre une caractéristique et un résultat.

Explainable AI en Python

Diagramme de dépendance partielle

  • Pour chaque échantillon :
    • Faire varier la valeur de la caractéristique choisie
    • Garder les autres caractéristiques constantes
    • Prédire le résultat
  • Moyenne des résultats sur tous les échantillons
shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

Diagramme de dépendance partielle pour la caractéristique age montrant que lorsque l'âge augmente, la valeur prédite augmente.

Explainable AI en Python

Diagramme de dépendance partielle

  • Pour chaque échantillon :

    • Faire varier la valeur de la caractéristique choisie
    • Garder les autres caractéristiques constantes
    • Prédire le résultat
  • Moyenne des résultats sur tous les échantillons

shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

Même diagramme de dépendance partielle mettant en évidence la distribution des valeurs d'âge dans l'ensemble de données.

Explainable AI en Python

Passons à la pratique !

Explainable AI en Python

Preparing Video For Download...