Accueil / Factory / Algos ML / Dépendance partielle (PDP) — factory / algos ML / explication globale des modèles

DÉPENDANCE PARTIELLE.

Une courbe qui montre comment la prédiction d'un modèle évolue quand une variable varie, toutes les autres étant prises telles qu'elles sont dans les données. On voit d'un coup d'œil si l'effet est linéaire, à seuil, en U ou nul. C'est le meilleur moyen de vérifier qu'un modèle opaque a appris quelque chose de cohérent avec le métier.

ExplicabilitéEffet des variablesModèle agnostiqueAssuranceNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceMontre fidèlement l'effet moyen appris par le modèle
InterprétabilitéUne courbe par variable, lisible par tout le monde
VitesseUne prédiction de toute la base par point de la courbe
Facilité de réglagePresque rien à régler : la variable et la grille de valeurs
Tolérance aux données brutesTrompeuse si la variable est très corrélée aux autres
EN 30 SECONDES

Pour savoir comment l'âge joue sur le tarif, on reprend tout le portefeuille et on fait comme si chaque assuré avait 18 ans, puis 19, puis 20… En moyennant les tarifs à chaque âge, on obtient la courbe de l'effet de l'âge, le reste du profil étant inchangé.

1. On choisit une grille de valeurs

Par exemple tous les âges de 18 à 84 ans, ou 20 à 50 points régulièrement espacés pour une variable continue.

2. On force la variable à chaque valeur

Pour chaque âge de la grille, on remplace l'âge de tous les contrats par cette valeur, sans toucher aux autres variables, et on fait prédire le modèle.

3. On moyenne et on trace

La moyenne des prédictions à chaque âge donne la courbe PDP. Les courbes individuelles, une par contrat (courbes ICE), montrent si tout le monde suit la moyenne.

LE CAS MÉTIER

tarification · assurance auto
EN ENTRÉE

Un modèle de fréquence à valider

Une Random Forest prédit le nombre de sinistres par an de 6 000 contrats, d'après l'âge, la puissance, la zone et le bonus-malus. Avant de s'en servir pour tarifer, l'actuaire veut vérifier ce que le modèle a appris sur l'âge.

EN SORTIE

La courbe de l'effet de l'âge

Sur le jeu d'exemple, la fréquence prédite est proche de 0,37 à 0,39 sinistre par an entre 21 et 24 ans, chute à 0,19 à 25 ans, puis se stabilise entre 0,10 et 0,12 à partir de 30 ans. Le modèle a appris un seuil net à 25 ans, que l'actuaire peut traduire en tranche tarifaire.

CE QU'ON MESURE

La cohérence métier, et les bords

La courbe doit avoir un sens métier. Aux extrémités, elle repose sur peu de contrats : ici, la valeur à 18 ans (0,29) est plus basse qu'à 21 ans, probablement un effet de bord du modèle, dont il faut se méfier. Les courbes ICE confirment que presque tous les contrats voient leur fréquence baisser entre 22 et 50 ans, avec une ampleur variable.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Vérifier qu'un modèle opaque a appris des effets cohérents avec le métier
  • Repérer des seuils et des effets non linéaires pour construire une grille ou des tranches
  • Présenter l'effet d'une variable clé à un comité, en une courbe
  • Étudier l'interaction de deux variables avec un PDP à deux dimensions

NON

  • Variables très corrélées (âge et ancienneté du permis) : la PDP invente des profils impossibles, préférer les courbes ALE
  • Effets très différents d'un individu à l'autre : la moyenne les masque, regarder les courbes ICE
  • Classer les variables par importance : utiliser l'importance par permutation
  • Conclure à un effet causal : la courbe décrit le modèle, pas le monde
LES 4 CHOIX QUI COMPTENT

Noms donnés pour R (pdp) et Python (scikit-learn, module inspection).

Grille : pred.grid / grid_resolution

Les valeurs auxquelles on force la variable. Pour l'âge, chaque année ; pour un montant, 20 à 50 points. Par défaut, scikit-learn coupe les 5 % extrêmes (percentiles).

ICE : ice / kind

Les courbes individuelles révèlent les interactions : si elles se croisent ou divergent, l'effet dépend d'autres variables et la moyenne seule est trompeuse.

Échantillon : train

Le calcul coûte une prédiction de toute la base par point de grille. Sur de gros volumes, un échantillon de quelques milliers de lignes suffit.

Échelle de la prédiction

Pour un classifieur, choisir entre probabilité et log-odds. En probabilité, la lecture est plus naturelle, mais les effets semblent plus faibles près de 0 et de 1.

LE CODE MINIMAL

jeu d'exemple : sinistres.csv ↓
# Fréquence de sinistres selon l'âge : dépendance partielle (PDP) en R
library(ranger)
library(pdp)

sin <- read.csv("sinistres.csv")
sin$zone <- factor(sin$zone)
sin$frequence <- sin$nb_sinistres / sin$exposition  # fréquence annuelle

# Modèle boîte noire ; les contrats sont tirés en proportion de leur exposition
modele <- ranger(frequence ~ age_conducteur + puissance_cv + zone + bonus_malus, data = sin,
                 num.trees = 300, min.node.size = 50, case.weights = sin$exposition, seed = 42)

# PDP : on donne à TOUS les contrats l'âge 18, puis 19... 84 ans, et on moyenne les prédictions
courbe <- partial(modele, pred.var = "age_conducteur", train = sin,
                  pred.grid = data.frame(age_conducteur = 18:84))
print(round(courbe[courbe$age_conducteur %in% c(18, 21, 24, 25, 26, 30, 40, 50, 60, 70, 84), ], 3))

# ICE : la même chose contrat par contrat (200 contrats), à 22 ans puis à 50 ans
ice <- partial(modele, pred.var = "age_conducteur", train = sin[1:200, ], ice = TRUE,
               pred.grid = data.frame(age_conducteur = c(22, 50)))
a22 <- ice[ice$age_conducteur == 22, ]
a50 <- ice[ice$age_conducteur == 50, ]
ecart <- a22$yhat[order(a22$yhat.id)] - a50$yhat[order(a50$yhat.id)]
cat("Surcroît de fréquence à 22 ans vs 50 ans, déciles 1, 5 et 9 :", round(quantile(ecart, c(0.1, 0.5, 0.9)), 3), "\n")

QUESTIONS FRÉQUENTES

Qu'est-ce qu'un graphique de dépendance partielle ?

C'est une courbe qui montre la prédiction moyenne d'un modèle en fonction d'une variable, les autres variables gardant leurs valeurs observées. Elle a été proposée par Friedman en 2001 pour les modèles de gradient boosting et s'applique à tout modèle.

Quelle différence entre PDP et ICE ?

La PDP trace la moyenne des prédictions pour chaque valeur de la variable. Les courbes ICE (Individual Conditional Expectation) tracent la même chose individu par individu. La PDP est la moyenne des courbes ICE : quand celles-ci ont des formes différentes, la PDP cache une interaction.

Quand préférer les courbes ALE à la PDP ?

Quand la variable étudiée est fortement corrélée à d'autres. La PDP crée alors des combinaisons irréalistes, comme un conducteur de 20 ans avec 30 ans de permis. Les courbes ALE (Accumulated Local Effects) ne comparent que des individus proches de la réalité et restent fiables dans ce cas.

LES ALGOS VOISINS

à comparer avant de choisir
l'étape d'avant

Importance par permutation

Dit quelles variables comptent. La PDP montre ensuite comment elles jouent.

Voir la fiche →
l'effet individu par individu

SHAP

Les graphiques de dépendance SHAP donnent une information proche, contrat par contrat, et montrent la dispersion des effets autour de la moyenne.

Voir la fiche →
la courbe intégrée au modèle

Modèle additif généralisé (GAM)

Un modèle lisible dont chaque effet est déjà une courbe. Parfois suffisant, sans boîte noire.

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 →