Accueil / Factory / Algos ML / SHAP — factory / algos ML / explication des prédictions

VALEURS SHAP.

SHAP découpe une prédiction en parts : de combien chaque variable a poussé le score vers le haut ou vers le bas, pour un client précis. C'est la méthode de référence pour expliquer un modèle complexe à un métier, à un client ou à un auditeur.

ExplicabilitéAudit de modèleExplication localeTous modèlesNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceFiabilité : valeurs exactes pour les arbres, approchées sinon
InterprétabilitéUne part par variable, et les parts s'additionnent jusqu'au score
VitesseSecondes sur des arbres, heures en mode universel (KernelSHAP)
Facilité de réglagePeu de choix, mais les données de référence changent les chiffres
Tolérance aux données brutesHérite des défauts du modèle, brouillé par les variables corrélées
EN 30 SECONDES

Une prime d'équipe à répartir. La méthode de Shapley, issue de la théorie des jeux, donne à chacun sa contribution moyenne sur toutes les compositions d'équipe possibles. SHAP applique la même règle aux variables d'un modèle.

1. On part du score moyen

La valeur de base est la prédiction moyenne du modèle sur une population de référence (en log-odds pour un classifieur). C'est le score d'un client « sans information particulière ».

2. On mesure l'apport de chaque variable

Pour chaque variable, on regarde de combien la prédiction bouge quand on connaît sa valeur, en moyenne sur tous les ordres possibles d'ajout des autres. Pour les modèles d'arbres, l'algorithme TreeSHAP fait ce calcul exactement et vite.

3. Tout s'additionne

Valeur de base + somme des contributions = score du client. Avec un classifieur XGBoost, l'addition se fait en log-odds, l'échelle interne du modèle, avant conversion en probabilité.

LE CAS MÉTIER

churn · explication d'un score client
EN ENTRÉE

Un modèle entraîné et un client

Un XGBoost score le risque de départ à partir de l'ancienneté, des appels au support, du montant, du contrat et des incidents. Un client ressort avec un score très élevé : pourquoi lui ?

EN SORTIE

Les raisons, chiffrées, client par client

Pour chaque client, la liste des variables avec leur poids : ce qui pousse vers le départ, ce qui retient. Le conseiller sait quoi aborder dans l'appel. La moyenne des valeurs absolues donne en plus l'importance globale des variables.

CE QU'ON MESURE

Additivité et bon sens métier

Base + contributions doit redonner exactement le score. Ensuite, un expert métier relit les explications : une variable absurde en tête signale souvent une fuite de données ou un biais dans le modèle.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Expliquer un score à la personne concernée ou au conseiller : refus de crédit, tarif d'assurance, alerte fraude
  • Documenter un modèle pour un audit, un comité des risques ou les exigences de l'AI Act sur les systèmes à haut risque
  • Déboguer un modèle : repérer une variable qui trahit la réponse ou un effet inattendu
  • Passer de « quelles variables comptent en général » à « pourquoi ce client-là »

NON

  • Décider d'une action sur une variable : SHAP explique le modèle, pas la réalité. Corrélation n'est pas causalité
  • Variables très corrélées (revenu et patrimoine) : le mérite se répartit de façon arbitraire, les regrouper ou en retirer une
  • Modèle qui n'est pas à base d'arbres, sur gros volume : le calcul universel (KernelSHAP) devient très lent, échantillonner
  • Prouver qu'un modèle est équitable : une explication propre ne corrige pas un biais présent dans les données
LES 3 CHOIX QUI COMPTENT

SHAP n'a pas d'hyperparamètre au sens classique. Trois décisions changent pourtant les chiffres affichés, elles doivent figurer dans la documentation du modèle.

predcontrib / TreeExplainer

Pour les modèles d'arbres (XGBoost, Random Forest, LightGBM), le calcul TreeSHAP est exact et rapide : predict(..., predcontrib = TRUE) avec xgboost ou lightgbm en R, shap.TreeExplainer en Python. Pour les autres modèles, KernelExplainer donne une approximation, lente.

Données de référence

La valeur de base dépend de la population de comparaison. Expliquer un score « par rapport à l'ensemble des clients » ou « par rapport aux clients acceptés » ne donne pas les mêmes contributions. Le choix doit être assumé et écrit.

Échelle : log-odds ou probabilité

Pour un classifieur XGBoost, les contributions s'additionnent en log-odds, pas en points de pourcentage. Pour parler en probabilité, TreeExplainer accepte model_output="probability", avec des données de référence en paramètre.

LE CODE MINIMAL

jeu d'exemple : clients_churn.csv ↓
# Pourquoi ce client va partir : SHAP en R
library(xgboost)

clients <- read.csv("clients_churn.csv")
X <- model.matrix(~ anciennete + appels_support + montant + contrat + incidents_3m, data = clients)[, -1]
dclients <- xgb.DMatrix(X, label = clients$churn)

set.seed(42)
params <- list(objective = "binary:logistic", eta = 0.05, max_depth = 4)
modele <- xgb.train(params = params, data = dclients, nrounds = 300)

# Valeurs SHAP : une colonne par variable + une colonne de base (en log-odds)
contrib <- predict(modele, dclients, predcontrib = TRUE)
proba <- predict(modele, dclients)

# Le client au score le plus élevé : ce qui pousse son score vers le haut
i <- which.max(proba)
cat("Client", clients$id_client[i], ": score de churn", round(proba[i], 2), "\n")
print(round(sort(contrib[i, colnames(X)], decreasing = TRUE), 3))

# Contrôle : base + contributions = score, en log-odds
cat("Somme des contributions :", round(sum(contrib[i, ]), 3), "| log-odds du score :", round(qlogis(proba[i]), 3), "\n")

# Importance globale : moyenne des valeurs SHAP absolues
print(round(sort(colMeans(abs(contrib[, colnames(X)])), decreasing = TRUE), 3))

QUESTIONS FRÉQUENTES

Qu'est-ce qu'une valeur SHAP ?

C'est la contribution d'une variable à une prédiction précise, par rapport à une prédiction moyenne. Une valeur positive pousse le score vers le haut, une valeur négative vers le bas. La somme des valeurs SHAP et de la valeur de base redonne exactement la prédiction.

SHAP ou LIME ?

SHAP repose sur les valeurs de Shapley, qui ont des garanties mathématiques : les contributions s'additionnent toujours jusqu'au score. Pour les modèles d'arbres, le calcul est exact et rapide. LIME est plus simple dans son principe, mais ses explications dépendent d'un échantillonnage aléatoire et peuvent changer d'une exécution à l'autre.

SHAP suffit-il pour être conforme à l'AI Act ?

Non, mais il y contribue. Pour les systèmes à haut risque, comme l'évaluation de la solvabilité ou le recrutement, l'AI Act exige documentation, transparence et contrôle humain. Il donne aussi aux personnes concernées un droit à l'explication des décisions (article 86). SHAP fournit la matière de ces explications, qu'il faut ensuite traduire en langage clair.

LES ALGOS VOISINS

à comparer avant de choisir
l'autre explication locale

LIME

Approche la prédiction par un petit modèle linéaire autour du client. Plus simple, mais les résultats varient d'un tirage à l'autre.

Voir la fiche →
la vue globale

Importance par permutation

Mélange une variable et mesure la perte de performance. Dit quelles variables comptent pour le modèle, pas pourquoi un client a tel score.

Voir la fiche →
le modèle à expliquer

XGBoost

Précis mais opaque. Avec TreeSHAP, chacun de ses scores devient explicable en quelques secondes.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →