Aller au contenu principal

Module 8 — Fuite de données : les cas les plus fréquents

Le cours sur l'apprentissage supervisé a introduit la fuite du point de vue de la validation : comment mesurer sans se tromper. Ce module la traite du point de vue de la construction des variables : comment fabriquer, sans le vouloir, une variable qui sait déjà la réponse. C'est le risque professionnel majeur de l'ingénierie des variables, parce qu'une fuite ne provoque aucune erreur — elle produit un excellent score et un modèle inutilisable.

Définition et pourquoi c'est indétectable par les métriques

Il y a fuite dès qu'une variable contient une information indisponible au moment réel de la prédiction. La conséquence est perverse : plus la fuite est forte, meilleur est le score. Validation croisée, jeu de test mis sous scellés, tous les garde-fous du cours 04 restent aveugles, car la fuite est présente dans les données elles-mêmes, donc dans le test aussi.

Aucune métrique ne vous sauvera. Seul un raisonnement sur la nature des variables le fera.

Famille 1 — La variable postérieure à la cible

La plus fréquente. Une variable dont la valeur n'existe qu'après l'événement prédit, ou qui en est une conséquence.

Objectif de prédictionVariable qui fuitPourquoi
un patient sera-t-il hospitalisédurée du séjourn'existe qu'après l'hospitalisation
un client va-t-il se désabonnerdate de clôture du comptec'est le désabonnement lui-même
une transaction est-elle frauduleusemontant rembourséconséquence du constat de fraude
un prospect va-t-il signernuméro de contratcréé par la signature

Le test à appliquer à chaque variable est toujours le même, et il faut se le poser à voix haute : « au moment précis où je dois produire cette prédiction, cette information est-elle déjà disponible dans mes systèmes ? » Si la réponse est non, la variable est à écarter, quel que soit son pouvoir prédictif — c'est justement ce pouvoir qui doit inquiéter.

Famille 2 — Le prétraitement calculé sur tout le jeu de données

La plus discrète, et elle traverse tous les modules précédents. Calculer une statistique sur l'ensemble des données avant le découpage injecte de l'information du test dans l'entraînement :

  • moyenne, écart-type, minimum ou maximum d'une mise à l'échelle (module 3) ;
  • médiane ou mode d'une imputation (module 2) ;
  • moyennes par catégorie d'un encodage par la cible (module 4) ;
  • vocabulaire et poids IDF d'une vectorisation de texte (module 6).

L'effet est plus faible que celui d'une variable postérieure, mais bien réel : le score annoncé est systématiquement optimiste. La parade est structurelle et se trouve au module 10.

Famille 3 — La fuite temporelle

Spécifique aux données ordonnées dans le temps, et déjà rencontrée au module 7 : une fenêtre glissante incluant la ligne courante, un rolling sans shift(1), ou une agrégation calculée sur la totalité de la période alors que le modèle prédira au fil de l'eau.

À quoi s'ajoute le découpage lui-même : un découpage aléatoire sur des données temporelles fait apprendre le futur pour valider sur le passé. C'est TimeSeriesSplit qu'il faut, comme vu au cours 04.

Famille 4 — L'identifiant qui encode l'information

Cas subtil et fréquent. Un identifiant censé être neutre porte parfois une information involontaire : des numéros de dossier attribués séquentiellement, où les cas d'un certain type ont été saisis dans la même plage ; un identifiant patient dont le préfixe indique le service d'admission. Le modèle apprend alors la logique d'attribution des identifiants, pas le phénomène.

Le réflexe : ne pas donner les identifiants bruts au modèle, et se méfier de toute variable technique inexplicablement prédictive.

Enquêter : les signaux d'alerte

Trois symptômes doivent déclencher une vérification immédiate :

  • une performance trop belle : 98 % là où l'état de l'art plafonne à 80 %. La joie est le mauvais réflexe ; l'enquête est le bon ;
  • une variable qui domine massivement l'importance des variables. Examinez-la : est-elle une conséquence de la cible ?
  • un saut brusque de performance après l'ajout d'une variable. Que sait cette variable qu'elle ne devrait pas savoir à cet instant ?

Une méthode simple et efficace : entraîner un modèle avec la variable suspecte seule. Si elle atteint à elle seule un score presque parfait, il n'y a plus de doute.

Le contrôle décisif reste toutefois humain : faire décrire par le métier comment et quand chaque donnée est produite. La plupart des fuites se voient en écoutant la description du processus de collecte, pas en regardant une matrice de corrélation.

Le coût réel d'une fuite

Une fuite ne se paie pas par une erreur mais par une décision. Le projet est validé, présenté, mis en production sur la foi d'un score exceptionnel — et le modèle s'effondre au contact du réel. Le préjudice n'est pas technique, il est de crédibilité : c'est la confiance dans l'équipe et dans la démarche qui est atteinte, souvent durablement. D'où l'intérêt de vérifier avant d'annoncer, jamais après.

En résumé

  • Une fuite est une information indisponible au moment de la prédiction ; elle améliore le score, ce qui rend toutes les métriques aveugles.
  • Quatre familles : variable postérieure à la cible, prétraitement sur tout le jeu, fuite temporelle, identifiant informatif.
  • Le test à appliquer à chaque variable : cette information est-elle déjà disponible à l'instant de la prédiction ?
  • Signaux d'alerte : score trop beau, variable qui domine, saut brusque de performance ; et le meilleur contrôle reste la description métier du processus de collecte.

Module suivant : la sélection de variables, pour réduire un ensemble devenu trop large sans perdre de signal.