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édiction | Variable qui fuit | Pourquoi |
|---|---|---|
| un patient sera-t-il hospitalisé | durée du séjour | n'existe qu'après l'hospitalisation |
| un client va-t-il se désabonner | date de clôture du compte | c'est le désabonnement lui-même |
| une transaction est-elle frauduleuse | montant remboursé | conséquence du constat de fraude |
| un prospect va-t-il signer | numéro de contrat | créé 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.
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.