Le shot data de vendredi sur le covariate shift (décalage de covariables) a été très apprécié par beaucoup d'entre vous.
Si tu es nouveau ici ou si tu l’as manqué, je t’invite fortement à le lire avant de continuer :
Dans ce shot data, je t’avais laissé avec une question :
Comment pouvons-nous détecter le covariate shift multivarié ?
C'est le sujet que nous allons aborder aujourd'hui.
Pour rappel, le covariate shift se produit lorsque la distribution des caractéristiques des données (les features ou covariables) évolue au fil du temps après le déploiement du modèle :

Évolution de la distribution des données au fil du temps
C'est un problème majeur, car nous déployons un modèle entraîné sur une distribution spécifique.
Mais peu à peu, le covariate shift s'installe et dégrade les performances du modèle, car l'environnement de production commence à l'évaluer sur une distribution différente :

Les approches courantes pour identifier ce décalage entre les données d'entraînement et les données de production incluent :
La comparaison de leurs statistiques descriptives (moyenne, médiane, etc.).
L'inspection visuelle des différences à l'aide de graphiques de distribution.
La réalisation de tests d'hypothèse.
La mesure des distances entre les distributions (distance de Bhattacharyya, test KS, etc.).
Mais le problème de ces approches est qu'elles ne peuvent détecter qu'un covariate shift univarié : elles ne fonctionnent que sur une seule feature à la fois.
Or, comme nous l'avons vu vendredi, les modèles en conditions réelles peuvent également subir un covariate shift multivarié, comme le montre clairement l'image ci-dessous :

Bleu → Données d'entraînement ; Rouge → Données de production.
D'après les graphiques KDE (en haut et à droite), il est clair que la distribution individuelle des deux variables reste presque identique.
Cependant, le nuage de points révèle que leur distribution conjointe lors de l'entraînement (en bleu) diffère de celle en production (en rouge).
Alors, comment détecter ce covariate shift multivarié ?
Pour commencer, il faut comprendre qu'il s'agit d'un problème complexe et qu'il n'existe pas d'approche unique (ou miracle) pour le gérer.
Voici quelques idées que j’utilise régulièrement et que j’ai également vues appliquées par d’autres experts.
Idée n°1 : La faible probabilité d'un covariate shift multivarié pur
Tant que l'on vérifie deux (voire trois) features à la fois, l'inspection visuelle peut suffire.
C’est pourquoi, en pratique, la majorité passe à côté des décalages dès qu’on dépasse trois dimensions.

Sélectionner <= 3 features pour détecter le covariate shift multivarié
La logique est la suivante : au-delà de trois features, il est très improbable que :
P(X1), P(X2), P(X3), P(X4), ...→ restent individuellement presque identiques.Mais que leur distribution conjointe
P(X1, X2, X3, X4, … )change radicalement.
Ainsi, il peut être raisonnable de limiter l'analyse multivariée à des combinaisons de une, deux ou trois variables à la fois.
Bien sûr, cela n'est pas une vérité absolue, ce qui nous amène à une deuxième approche :
Idée n°2 : La reconstruction de données
Il s'agit d'une approche à la fois élégante et très pratique que j'ai pu utiliser dans l'un de mes projets.
La reconstruction de données consiste à apprendre une transformation qui projette les données dans un espace de dimension plus faible, puis à reconstruire les données d’origine à partir de cette représentation.

L'objectif de la reconstruction est de recréer la donnée initiale après projection
Au passage, c'est exactement ce que font les Autoencodeurs.
Ce sont des réseaux de neurones qui apprennent à projeter les données dans un espace latent, puis à les reconstruire pour revenir à l’espace d’origine.

Utilisation des Autoencodeurs pour la reconstruction de données
L'objectif est de minimiser l'erreur de reconstruction.
C'est comme demander au modèle d'apprendre une fonction qui :
Prend des données en entrée.
Les projette en basse dimension.
Restitue exactement les données d'entrée.
Voici donc comment procéder :
Entraîne un autoencodeur sur le jeu de données initial afin qu’il apprenne à reconstruire au mieux cette distribution.
Utilise ensuite ce modèle sur les nouvelles données pour vérifier le covariate shift :
Une perte de reconstruction élevée indique que la distribution a changé.
Une perte de reconstruction faible indique que la distribution est globalement restée la même.

Cette approche est très intuitive.
Mais l'un de ses plus grands avantages est qu'elle ne nécessite pas de données étiquetées.
Par nature, les autoencodeurs apprennent à reconstruire directement les données.
C’est particulièrement utile en pratique, car les étiquettes des données de production ne sont généralement pas disponibles immédiatement — elles arrivent presque toujours avec un certain délai.
Par exemple, lorsque je travaillais sur un modèle de détection de fraude transactionnelle chez Mastercard, la banque émettrice pouvait mettre jusqu’à 45 à 50 jours pour nous renvoyer les labels de fraude sur les transactions.
Un délai énorme, n’est-ce pas ?
Mais grâce aux Autoencodeurs, nous pouvons tout de même calculer l'erreur de reconstruction sur ces données non étiquetées.
En réalité, l'utilisation d'Autoencodeurs n'est qu'un exemple.
D’autres techniques de reconstruction existent, comme l’Analyse en Composantes Principales (PCA).
Cependant, quelle que soit la méthode choisie, un point crucial mérite toute notre attention.
Comme nous l’avons vu :
Perte élevée → changement de distribution.
Perte faible → distribution stable.
Mais attention : l’interprétation de la perte de reconstruction reste relativement subjective et dépend du contexte.

Par exemple, si la perte de reconstruction est de 0,4, comment savoir si cette valeur est vraiment significative ?
Étant donné l’importance de ce sujet, je ne veux pas le traiter à la légère.
Nous approfondirons donc cette discussion dans un prochain shot data
Envie d'aller plus loin ? DataXp t'attend : formations et parcours pour progresser en data science, machine learning et IA.
En attendant, c’est à toi de jouer :
Comment interpréterais-tu l’erreur de reconstruction pour détecter un éventuel covariate shift ?
Quelles pourraient être les limites des approches basées sur la reconstruction pour identifier ce décalage ?
J’ai hâte de découvrir tes réponses ! :)


