Dimensionality Reduction
La réduction de dimensionnalité projette des données comportant de nombreuses caractéristiques dans un espace bien plus restreint tout en préservant leur structure, à l’aide de méthodes comme PCA, t-SNE, UMAP et les autoencodeurs.
La réduction de dimensionnalité transforme des données décrites par de nombreuses caractéristiques en une représentation comportant beaucoup moins de caractéristiques, tout en conservant les informations importantes, comme la variance des données, les distances entre les points ou leurs relations de voisinage. Une image couleur de 640x640 contient plus de 1,2 million de valeurs de pixels, un profil d’expression génique peut comporter 20 000 mesures, et une représentation vectorielle d’image compte souvent des centaines de dimensions. La réduction accélère les modèles d’apprentissage automatique, réduit le risque de surapprentissage, diminue le stockage nécessaire et permet de tracer les données en deux ou trois dimensions pour la visualisation de données.
Pourquoi réduire le nombre de dimensions#
Richard Bellman a forgé l’expression « fléau de la dimensionnalité » dans ses travaux sur la programmation dynamique pour décrire la difficulté croissante des problèmes à mesure que le nombre de dimensions augmente. Le volume de l’espace croît de façon exponentielle avec chaque nouvelle caractéristique ; une quantité fixe de données d’entraînement le couvre donc de plus en plus rarement. Dans des dimensions très élevées, les distances entre des points aléatoires deviennent presque égales, ce qui affaiblit les méthodes fondées sur la distance, comme les k plus proches voisins et le regroupement k-means.
Les données réelles occupent rarement tout l’espace qui leur est associé. Les images de chiffres manuscrits varient principalement selon l’épaisseur et l’inclinaison des traits, ainsi que quelques autres facteurs ; elles se trouvent donc près d’une surface de dimension bien inférieure, ou variété, au sein de l’espace des pixels. La réduction de dimensionnalité trouve des coordonnées sur cette surface et, comme elle ne nécessite pas d’étiquettes, la plupart des méthodes relèvent de l’apprentissage non supervisé.
Méthodes linéaires et non linéaires#
L’analyse en composantes principales (PCA), présentée par Karl Pearson en 1901, projette les données sur des axes orthogonaux classés selon la variance qu’ils capturent et conserve les premiers axes. Le ratio de variance expliquée indique le nombre de composantes nécessaires pour un jeu de données. L’analyse discriminante linéaire, proposée par Ronald Fisher en 1936, utilise les étiquettes de classe pour trouver les directions qui séparent le mieux les classes. La projection aléatoire multiplie les données par une matrice aléatoire, et le lemme de Johnson-Lindenstrauss garantit que les distances entre n points restent dans une tolérance choisie, avec un nombre de dimensions qui n’augmente qu’en fonction du logarithme de n.
Les méthodes non linéaires suivent des variétés courbes. Isomap et l’intégration localement linéaire, toutes deux publiées dans Science en 2000, préservent les distances le long de la variété et les voisinages linéaires locaux. t-SNE et UMAP rapprochent les points similaires sur une carte 2D ; ce sont donc les outils de référence pour visualiser des groupes de représentations vectorielles, même si les distances entre groupes éloignés sur ces cartes ont peu de sens. Les autoencodeurs apprennent un encodeur qui associe à chaque entrée un petit code dans un espace latent, ainsi qu’un décodeur qui la reconstruit. En 2006, Geoffrey Hinton et Ruslan Salakhutdinov ont montré que les autoencodeurs profonds produisent de meilleurs codes que PCA pour les images et les documents.
Cet exemple compresse des images de chiffres de 8 × 8 pixels, représentées par 64 caractéristiques, en conservant le moins de composantes principales possible pour garder 90 % de la variance, puis classe les chiffres avec les k plus proches voisins, avant et après :
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
X, y = load_digits(return_X_y=True) # 1,797 images of 8x8 pixels = 64 features
# Keep the fewest principal components that explain 90% of the variance
pca = PCA(n_components=0.90).fit(X)
print(f"Features: {X.shape[1]} -> {pca.n_components_}")
# Classify with k-nearest neighbors on the raw pixels and on the reduced features
raw = cross_val_score(KNeighborsClassifier(), X, y).mean()
reduced = cross_val_score(make_pipeline(PCA(n_components=0.90), KNeighborsClassifier()), X, y).mean()
print(f"Accuracy: {raw:.3f} with 64 features, {reduced:.3f} with {pca.n_components_}")Vingt et une composantes contiennent 90 % de la variance, et la précision validée par validation croisée passe seulement de 0,963 à 0,959 avec un tiers des caractéristiques. En ajustant l’ACP dans le pipeline, la projection est apprise uniquement à partir de chaque pli d’entraînement, ce qui évite toute fuite d’information depuis les plis de test.
Sélection et extraction de caractéristiques#
La sélection de caractéristiques conserve un sous-ensemble des colonnes d’origine, par exemple en supprimant les canaux de capteurs redondants, afin que les caractéristiques restantes gardent leur signification. La réduction de dimension au sens strict est l’extraction de caractéristiques : elle crée de nouvelles caractéristiques à partir de combinaisons des anciennes, ce qui permet généralement une meilleure compression, mais rend l’interprétation plus difficile. Les deux sont des étapes du prétraitement des données et de l’ingénierie des caractéristiques. Les réseaux profonds réalisent l’extraction pendant l’entraînement, en compressant les pixels sous forme d’embeddings, et l’apprentissage de représentations gigognes entraîne des embeddings dont les premières dimensions peuvent être utilisées seules, afin qu’une base de données vectorielle puisse stocker des vecteurs plus courts.
Utilisations en vision par ordinateur#
La vision par ordinateur s’appuie sur des représentations réduites à plusieurs étapes. Projeter des embeddings d’image en 2D avec t-SNE ou UMAP permet de voir si les classes se séparent et où se trouvent les valeurs aberrantes, et l’ACP ou la quantification vectorielle réduit la taille des embeddings utilisés par la recherche vectorielle, pour que des millions d’images tiennent en mémoire. Les modèles de segmentation d’instances YOLO26 intègrent cette idée à leur sortie : la tête calcule 32 masques prototypes par image à un quart de la résolution d’entrée et prédit seulement 32 coefficients par objet. Le masque de chaque objet est la somme pondérée des prototypes ; ainsi, un masque de 160 × 160 pour une entrée de 640 pixels, soit 25 600 valeurs, est encodé en 32 nombres.










