Découpage des données et fuite
Il y a fuite de données (data leakage) lorsque l'entraînement, la construction des variables, la sélection ou l'évaluation utilisent des informations qui ne seraient pas légitimement disponibles lors de l'utilisation cible, rendant les résultats indûment optimistes. Une précision d'entraînement élevée n'est pas à elle seule une fuite, et une variable de substitution (proxy) forte n'est pas nécessairement une information illégitime.
Définir la frontière d'information
unit prediction object
prediction_time when the output must be made
horizon how far ahead the target lies
available_info information genuinely available and allowed then
label_time when the label occurs, matures, and may be revised
split_key entities, groups, and times that must not cross sets
La légitimité s'évalue par rapport à l'ensemble d'information au déploiement . Le simple fait qu'un champ existe dans une base de données ne signifie pas qu'il existait au moment de la prédiction ou que son utilisation est autorisée.
Types de fuites
Une variable de substitution disponible au déploiement peut rester un raccourci, un biais ou une corrélation fragile sans pour autant être une fuite. Utilisez des tests par sous-groupes, des interventions et des évaluations sous dérive plutôt que de requalifier chaque problème en fuite.
Découper pour simuler l'usage réel
La stratification préserve la proportion des classes ; elle n'empêche pas les chevauchements de groupes, de temps ou de doublons.
Voir l’image en grandLe test est réservé dès le départ, à droite. À gauche, chaque ligne utilise un pli bleu pour valider et les plis verts pour ajuster. Réajustez aussi le prétraitement dans chaque ensemble d’entraînement. Le test intervient après la sélection, pour l’évaluation finale. Les cinq plis illustrent la méthode, sans imposer ce découpage à toute tâche.
Invariant de pipeline
Pour des indices d'entraînement et des indices de validation , toute transformation apprise doit satisfaire
Cela inclut la mise à l'échelle, l'imputation, le vocabulaire, l'ACP, la sélection de variables, le codage de cible (target encoding), le suréchantillonnage et l'augmentation de données apprise. La validation croisée réajuste chaque transformation par pli. La validation croisée imbriquée (nested CV) utilise une boucle externe pour l'évaluation et une boucle interne pour la sélection ; sélectionner des variables globalement avant la CV constitue toujours une fuite.
Une petite transformation ajustée sur l’entraînement
Le guide scikit-learn sur les fuites applique la même règle : apprendre le prétraitement sur l’entraînement, puis le réutiliser sans modification. Si les valeurs d’entraînement sont 2 et 4, et la validation contient 100, le centrage apprend 3 et transforme la validation en 97. Un centrage global apprendrait et laisserait la validation modifier la représentation des lignes d’entraînement.
train = [("A", 2.0), ("B", 4.0)]
valid = [("C", 100.0)]
assert {g for g, _ in train}.isdisjoint(g for g, _ in valid)
center = sum(x for _, x in train) / len(train)
assert [x - center for _, x in train] == [-1.0, 1.0]
assert [x - center for _, x in valid] == [97.0]
Ce découpage miniature représente de nouvelles entités. Prédire les visites futures de patients connus peut légitimement utiliser leur historique disponible ; un test sans patients communs répond plutôt à la question des patients inconnus. Pour tester de futurs nouveaux patients, fixez une date limite, ne gardez à l’entraînement que les lignes antérieures dont les labels sont déjà matures, puis évaluez les lignes ultérieures de patients absents de l’entraînement. Signalez les patients revenants exclus : cette restriction change la population.
Un pipeline évite les erreurs d’ajustement entre plis, pas toutes les fuites internes à l’entraînement. Le codage de cible peut inclure le propre label d’une ligne dans sa variable ; utilisez un codage hors pli ou un ordre temporel adapté. Le rééchantillonnage ne modifie que l’entraînement, jamais la prévalence de validation ou de test.
Exemple appliqué : réadmission à 30 jours
Le système doit prédire au moment de la sortie d'hospitalisation si un patient sera réadmis dans les 30 jours. Une conception défaillante découpe aléatoirement les séjours, utilise des états de facturation finalisés après la fenêtre de 30 jours, sélectionne les codes médicaux sur l'ensemble des données, choisit les modèles selon la ROC-AUC de test et ajuste les seuils selon le rappel de test.
Une conception plus rigoureuse gèle la liste des champs disponibles à l'instant de prédiction ; groupe par patient et réserve une cohorte temporelle ultérieure ; ajuste l'imputation, le vocabulaire et la sélection uniquement sur l'entraînement ; choisit le modèle et le seuil sur la validation ; exécute le test une seule fois avec des découpages par hôpital, par période et par sous-groupe ; et exclut les exemples dont les étiquettes à 30 jours ne sont pas encore matures.
Un score inférieur peut simplement révéler que l'ancien système s'appuyait sur l'identité ou sur des informations futures, et non que le système corrigé est devenu moins performant.
Sondes de détection de fuites
- enregistrez l'heure de l'événement, de l'ingestion et de la révision pour chaque variable ;
- entraînez séparément les variables suspectes et tracez les performances anormales ;
- supprimez les identifiants et les variables de substitution à forte cardinalité ;
- auditez les doublons exacts et quasi-doublons ;
- exécutez des contrôles par permutation des étiquettes ;
- vérifiez par assertions qu'aucun groupe ne traverse les ensembles et que les transformations ne sont jamais ajustées sur le test ;
- obtenez un nouvel ensemble de réserve après des inspections répétées du benchmark.
Les tests par permutation ne détectent pas toutes les fuites : si une variable directement codée sur l'étiquette est permutée conjointement avec celle-ci, leur relation peut subsister. Associez toujours les contrôles au lignage des données.
Distinctions
Le surapprentissage (overfitting) apprend le bruit de l'échantillon au sein d'un pipeline valide. La fuite traverse une frontière d'information. La dérive de distribution modifie la distribution au déploiement. La confusion (confounding) fausse une interprétation causale. Ces quatre phénomènes peuvent coexister.
prediction_time: explicit
label_horizon_and_maturity: explicit
unit_and_group_key: explicit
split_algorithm_and_seed: versioned
all_learned_transforms_fit_on_train_only: true
test_used_for_selection: false
duplicate_and_overlap_audit: complete
feature_availability_lineage: reviewed
known_residual_risks: listed
Cette note se concentre sur la prédiction supervisée hors ligne. Les expériences en ligne, l'apprentissage par renforcement, l'apprentissage fédéré et l'apprentissage continu introduisent en plus des fuites d'intervention, de rétroaction et de politique.