Projet Pratique 3 : Réduction de Dimensionnalité - Visualisation et Classification d’Images
Mettre en pratique le PCA, t-SNE et UMAP
Author
Affiliation
Wilson Toussile
ENSPY & ESSFAR
1 Contexte du Projet
Vous travaillez sur un projet de reconnaissance d’images de chiffres manuscrits. Chaque image est de petite taille (8x8 pixels), mais si l’on considère chaque pixel comme une variable, nous avons déjà un jeu de données à 64 dimensions.
C’est un espace trop grand pour être visualisé par un humain, et l’entraînement d’un modèle sur autant de variables peut être coûteux et sujet au surapprentissage.
Votre mission est d’utiliser les techniques de réduction de dimensionnalité pour atteindre deux objectifs :
Visualiser la structure des données pour voir si les différents chiffres forment des groupes distincts.
Simplifier un modèle de classification en l’entraînant sur des données de plus faible dimension, et évaluer l’impact sur sa performance et sa vitesse.
2 Objectifs de l’Atelier
Ce projet vous guidera à travers un workflow complet intégrant la réduction de dimensionnalité :
Analyse Exploratoire Visuelle : Utiliser des techniques non-linéaires (t-SNE ou UMAP) pour créer une “carte” 2D des données et observer la séparation des classes.
Modélisation de Référence : Entraîner un classifieur sur les 64 variables originales pour établir une performance de base.
Réduction de Dimension avec PCA : Appliquer l’Analyse en Composantes Principales pour compresser l’information en un plus petit nombre de variables.
Modélisation sur Données Réduites : Entraîner le même classifieur sur les données réduites.
Analyse Comparative : Comparer les deux approches en termes de performance (accuracy), de vitesse d’entraînement et de complexité du modèle.
3 Le Jeu de Données : Digits
Nous utiliserons le jeu de données digits, directement disponible dans Scikit-learn. Il contient 1797 images de chiffres manuscrits (de 0 à 9). Chaque image est représentée par un vecteur de 64 valeurs (les niveaux de gris de chaque pixel de l’image 8x8).
4 Atelier Pratique : Votre Mission Pas à Pas
4.1 Étape 1 : Chargement et Exploration Initiale
Chargez les données et visualisez quelques exemples de chiffres.
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsimport time# Données et pré-traitementfrom sklearn.datasets import load_digitsfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScalerfrom sklearn.decomposition import PCAimport umap.umap_ as umap# Modèle et métriquesfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score# Configurationsns.set_theme(style="whitegrid")# 1. Charger les donnéesdigits = load_digits()X, y = digits.data, digits.targetprint(f"Données chargées. Dimensions de X: {X.shape}")# 2. Visualiser quelques chiffresfig, axes = plt.subplots(2, 5, figsize=(12, 5), subplot_kw={'xticks':[], 'yticks':[]})for i, ax inenumerate(axes.flat): ax.imshow(X[i].reshape(8, 8), cmap='binary', interpolation='nearest') ax.set_title(f"Chiffre : {y[i]}")plt.show()
Données chargées. Dimensions de X: (1797, 64)
4.2 Étape 2 : Visualisation Non-Linéaire avec UMAP
Votre tâche : Appliquez UMAP (ou t-SNE) sur les données pour les projeter en 2D. Colorez les points en fonction de leur véritable étiquette (le chiffre de 0 à 9). Les classes semblent-elles bien séparées ?
4.3 Étape 3 : Modèle de Référence sur les Données Originales
Votre tâche : Entraînez un classifieur (la Régression Logistique est un bon choix) sur les 64 variables originales. Mesurez son temps d’entraînement et son exactitude (accuracy) sur le jeu de test.
(Indice : N’oubliez pas de mettre les données à l’échelle avec StandardScaler !)
4.4 Étape 4 : Réduction de Dimension avec PCA
Votre tâche :
Appliquez le PCA sur les données d’entraînement mises à l’échelle.
Déterminez combien de composantes sont nécessaires pour conserver 95% de la variance expliquée.
Utilisez le PCA ajusté pour transformer les ensembles d’entraînement et de test.
4.5 Étape 5 : Modèle sur Données Réduites
Votre tâche : Entraînez le même classifieur (Régression Logistique) sur les nouvelles données réduites par le PCA. Mesurez à nouveau son temps d’entraînement et son exactitude.
5 Étape 6 : Comparaison et Analyse
Votre tâche :
Créez un tableau ou un graphique qui compare les deux modèles (Référence vs. PCA) sur les critères suivants :
Nombre de variables utilisées.
Temps d’entraînement.
Accuracy sur le jeu de test.
Rédigez une conclusion : quels sont les avantages et les inconvénients de l’approche avec PCA dans ce cas précis ? Le compromis performance/efficacité en vaut-il la peine ?
6 Livrable Attendu
Un document Quarto complet (projet_reduction_dimension.qmd) contenant :
Votre code Python pour chaque étape.
Les visualisations (graphique UMAP/t-SNE, comparaison des performances).
Une analyse claire et argumentée des résultats, qui discute du compromis entre la performance prédictive, la vitesse de calcul et la complexité du modèle.