Visualiser l’explicabilité SHAP

IA explicable en Python

Fouad Trad

Machine Learning Engineer

Jeu 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égression par forêt aléatoire pour prédire charges

import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
IA explicable en Python

Graphique d’importance des caractéristiques

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

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

IA explicable en Python

Graphique beeswarm

  • Affiche la distribution des valeurs SHAP
  • Met en évidence la direction et l’amplitude 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

Graphique beeswarm montrant la distribution des valeurs SHAP par caractéristique, avec des couleurs indiquant les valeurs des caractéristiques.

IA explicable en Python

Graphique beeswarm

  • Affiche la distribution des valeurs SHAP
  • Met en évidence la direction et l’amplitude 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 beeswarm montrant que les fortes valeurs de la caractéristique « smoker » ont des valeurs SHAP positives.

IA explicable en Python

Graphique beeswarm

  • Affiche la distribution des valeurs SHAP
  • Met en évidence la direction et l’amplitude 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 beeswarm montrant que les faibles valeurs de la caractéristique « smoker » ont des valeurs SHAP négatives.

IA explicable en Python

Courbe de dépendance partielle

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

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

IA explicable en Python

Courbe de dépendance partielle

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

Courbe de dépendance partielle pour la caractéristique age montrant que quand l’âge augmente, la valeur prédite augmente.

IA explicable en Python

Courbe de dépendance partielle

  • Pour chaque échantillon :

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

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

Même courbe de dépendance partielle mettant en évidence la distribution des valeurs d’âge dans le jeu de données.

IA explicable en Python

Passons à la pratique !

IA explicable en Python

Preparing Video For Download...