Module 2 — Valeurs manquantes : suppression, imputation, indicateur
Aucun jeu de données réel n'est complet. Un capteur tombe en panne, un client refuse de renseigner ses revenus, un formulaire change de version. La plupart des algorithmes refusant les valeurs manquantes, il faut décider quoi en faire — et ce choix, apparemment technique, peut introduire un biais qu'aucune validation ne révélera.
La première question n'est pas « comment remplir » mais « pourquoi ça manque »
C'est le réflexe qui distingue le traitement correct du bricolage. Le mécanisme du manque détermine ce qu'on a le droit de faire :
| Mécanisme | Signification | Conséquence |
|---|---|---|
| MCAR | manque complètement au hasard | l'imputation est sans biais |
| MAR | le manque dépend d'autres variables observées | imputation possible en s'appuyant sur elles |
| MNAR | le manque dépend de la valeur manquante elle-même | l'imputation biaise ; le manque est informatif |
Le cas MNAR est le plus fréquent et le plus dangereux. Si les hauts revenus refusent davantage de déclarer leur revenu, remplacer les manquants par la moyenne tire mécaniquement la distribution vers le bas, et le modèle apprend une réalité qui n'existe pas. Ici, le fait même que la valeur manque porte de l'information — d'où l'indicateur de manque, plus bas.
En pratique on ne prouve pas le mécanisme, on l'instruit : comparer les lignes complètes et incomplètes sur les autres variables, et demander au métier comment la donnée est collectée. Une explication du processus de collecte vaut mieux qu'un test statistique.
Stratégie 1 — Supprimer
On peut supprimer les lignes incomplètes. Simple, sans hypothèse, mais coûteux : avec 5 % de manquants répartis sur dix variables, on peut perdre le tiers des observations. Et surtout, si le manque n'est pas MCAR, on supprime préférentiellement un certain profil et on biaise l'échantillon.
On peut aussi supprimer la colonne, ce qui devient raisonnable au-delà de 50 ou 60 % de manquants — mais pas avant d'avoir vérifié que le manque lui-même n'est pas prédictif.
Stratégie 2 — Imputer
Imputer, c'est remplacer par une valeur plausible. Du plus simple au plus élaboré :
from sklearn.impute import SimpleImputer, KNNImputer
SimpleImputer(strategy="median") # numerique, robuste aux aberrants
SimpleImputer(strategy="most_frequent") # categoriel
SimpleImputer(strategy="constant", fill_value="Inconnu") # categorie explicite
KNNImputer(n_neighbors=5) # d'apres les observations similaires
La médiane est préférable à la moyenne dès qu'il y a des valeurs extrêmes, pour la même raison qu'au cours précédent. Pour une variable catégorielle, créer une catégorie « Inconnu » est souvent supérieur à l'imputation par le mode : on n'invente pas d'information, et le modèle peut apprendre un comportement propre à ce groupe.
Les méthodes par modèle (KNNImputer, ou l'imputation itérative) exploitent les corrélations entre variables et sont plus fidèles quand le manque est MAR. Leur prix : plus de calcul, un risque de surajustement, et une transformation moins facile à expliquer.
Toutes ces méthodes partagent une limite structurelle : elles réduisent la variance de la variable, puisqu'elles concentrent des valeurs sur une même estimation. Les corrélations apparaissent alors légèrement plus fortes qu'elles ne le sont.
Stratégie 3 — Ajouter un indicateur de manque
C'est la réponse au cas MNAR, et elle est trop peu utilisée. On impute la variable et l'on crée une colonne binaire signalant que la valeur était absente :
SimpleImputer(strategy="median", add_indicator=True)
Le modèle dispose alors des deux informations : une valeur exploitable, et le fait qu'elle a été reconstituée. Si le manque est prédictif — le client qui ne déclare pas son revenu, le patient qui n'a pas fait l'examen — le modèle peut s'en servir. Le coût est d'une colonne ; le gain, sur des données réelles, est fréquemment net.
Calculer la médiane sur l'ensemble du jeu de données puis découper en train et test injecte de l'information du test dans l'entraînement. Le score obtenu est optimiste et non reproductible. La médiane doit être calculée sur les données d'entraînement seules, puis appliquée au test. La parade structurelle est la chaîne de traitement du module 10, qui rend l'erreur impossible.
En résumé
- La question première est pourquoi la valeur manque : MCAR, MAR ou MNAR — ce dernier étant le plus fréquent et le plus piégeux.
- Supprimer est sans hypothèse mais coûteux, et biaise l'échantillon dès que le manque n'est pas aléatoire.
- Imputer par la médiane, le mode ou une catégorie « Inconnu » ; les méthodes par modèle conviennent au cas MAR, au prix de la simplicité, et toute imputation réduit la variance.
- L'indicateur de manque conserve l'information portée par l'absence elle-même ; et l'imputation se calcule sur l'entraînement seul, sous peine de fuite.
Module suivant : la mise à l'échelle, seconde transformation de base, et les cas où elle est indispensable ou inutile.