Intelligence artificielle et Machine Learning: méthodes, algorithmes et applications

Auteur: Mohamed CHINY Durée necessaire pour le cours de Intelligence artificielle et Machine Learning: méthodes, algorithmes et applications Niveau recommandé pour le cours de Intelligence artificielle et Machine Learning: méthodes, algorithmes et applications Supports vidéo non disponibles pour ce cours Exercices de renforcement non disponibles pour ce cours Quiz non disponibles pour ce cours

Leçon 27: Analyse en Composantes Principales PCA: Réduction de dimension non supervisée

Toutes les leçons

Intelligence artificielle et Machine Learning: méthodes, algorithmes et applications

Leçon 1
Intelligence artificielle: Définition, histoire et évolution
Leçon 2
Types d'apprentissage: supervisé, non supervisé et par renforcement
Leçon 3
Qu'est-ce qu'un dataset? Tout commence par les données
Leçon 4
Analyse exploratoire des données (EDA)
Leçon 5
Apprentissage supervisé - La régression
Leçon 6
Apprentissage supervisé - La classification
Leçon 7
Comment un modèle de Machine Learning apprend-il?
Leçon 8
Régression linéaire simple avec NumPy, scikit-learn et Matplotlib
Leçon 9
Régression linéaire multiple avec les DataFrames de Pandas
Leçon 10
Séparation du jeu de données en ensembles d'entraînement et de test
Leçon 11
Régression linéaire multiple avec découpage des données en train set et test set
Leçon 12
Classification supervisée avec la régression logistique
Leçon 13
Naive Bayes pour la classification: un modèle probabiliste génératif
Leçon 14
k-Nearest Neighbors (k-NN): Algorithme de classification non paramétrique basé sur les distances
Leçon 15
L'arbre de décision (decision tree): un outil puissant de classification
Leçon 16
Classification avec les Support Vector Machines (SVM)
Leçon 17
L'ensemble learning - Combiner plusieurs modèles pour une performance accrue
Leçon 18
Le Boosting: principe et mise en pratique avec XGBoost
Leçon 19
Random Forest, une application du Bagging en Ensemble Learning
Leçon 20
Le stacking: unir des modèles différents pour plus de performance
Leçon 21
La validation croisée: découper les données pour un meilleur apprentissage du modèle
Leçon 22
Recherche par grille avec validation croisée (GridSearchCV)
Leçon 23
Apprentissage non supervisé: Explorer et regrouper les données sans supervision
Leçon 24
Clustering avec k-means - Un pilier de l'apprentissage non supervisé
Leçon 25
Le clustering par densité avec l'algorithme DBSCAN
Leçon 26
Isolation Forest: identification des anomalies en apprentissage non supervisé
Leçon 27
Analyse en Composantes Principales PCA: Réduction de dimension non supervisée

Simplifier sans perdre l’information avec PCA

PCA: Principal Component Analysis

La PCA (Principal Component Analysis ou Analyse en Composantes Principales) est une technique statistique de réduction de dimension utilisée en apprentissage non supervisé. Elle consiste à transformer un ensemble de variables initiales, souvent corrélées entre elles, en un nouvel ensemble de variables non corrélées appelées composantes principales. Ces composantes sont ordonnées de façon à ce que les premières capturent la plus grande part de la variance des données. L’idée est donc de condenser l’information en quelques axes tout en minimisant la perte d’information, ce qui facilite la visualisation, l’analyse et parfois améliore l’efficacité des modèles de machine learning.

Dans la pratique, PCA calcule la matrice de covariance des données, puis en extrait les vecteurs propres (directions principales) et les valeurs propres (importance de chaque direction). Les données sont ensuite projetées sur ces axes principaux. Par exemple, dans le dataset Iris (4 variables initiales), PCA permet de réduire à 2 dimensions tout en conservant l’essentiel de la variance. Cette projection rend visible la structure des données et montre que les espèces d’Iris se distinguent naturellement, ce qui illustre la puissance de PCA pour révéler des patterns cachés.

PCA appliquée au dataset Iris: réduction de dimension et visualisation

Dans le cas du dataset Iris, on dispose de 4 variables (longueur et largeur des sépales et pétales), ce qui rend leur visualisation simultanée difficile. L’Analyse en Composantes Principales (PCA) permet de projeter ces données dans un espace de dimension réduite en cherchant les axes qui capturent le maximum de variance.

En ramenant les 4 dimensions initiales à seulement 2 composantes principales, on obtient une représentation plus simple et lisible, tout en conservant l’essentiel de l’information. Cette réduction facilite la visualisation et révèle la structure des données, notamment la séparation naturelle entre les différentes espèces d’Iris.

Je propose le code suivante:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

iris = load_iris()
X = iris.data
y = iris.target

# Normalisation de données (important pour PCA)
X_scaled = StandardScaler().fit_transform(X)

# Appliquer PCA (réduction à 2 dimensions)
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

# Visualiser les données projetées
plt.figure(figsize=(8,6))
for target in np.unique(y):
   plt.scatter(
      X_pca[y == target, 0],
      X_pca[y == target, 1],
      label=iris.target_names[target]
   )
plt.xlabel("Composante principale 1")
plt.ylabel("Composante principale 2")
plt.title("Projection PCA du dataset Iris")
plt.legend()
plt.show()

# Variance expliquée par chaque composante
print("Variance expliquée :", pca.explained_variance_ratio_)
Après avoir importé les modules nécessaire, il est essentielle de normaliser les données en PCA, car elle met toutes les variables sur la même échelle (moyenne = 0, variance = 1 dans ce cas):
X_scaled = StandardScaler().fit_transform(X)
Sans cette normalisation (Z‑score normalization), les variables ayant de grandes amplitudes numériques domineraient le calcul des composantes principales, ce qui fausserait la projection. En standardisant les données, la PCA peut identifier les axes qui reflètent réellement la variance structurelle du jeu de données plutôt que simplement la différence d’unités ou de grandeurs.

Ensuite, on procède à la réduction de dimensions en PCA:
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
Ici, on demande à la PCA de conserver seulement 2 composantes principales. Le modèle calcule les axes qui expliquent le maximum de variance dans les données normalisées X_scaled et projette chaque observation sur ces deux axes.

Le résultat X_pca est donc une version condensée du dataset initial: au lieu de 4 dimensions (longueur/largeur sépales et pétales), on obtient 2 dimensions qui concentrent l’essentiel de l’information. Cela facilite la visualisation et met en évidence les structures latentes, comme la séparation naturelle entre les espèces d’Iris.

En fin, on projette les données sur ces deux composantes:
plt.figure(figsize=(8,6))
for target in np.unique(y):
   plt.scatter(
      X_pca[y == target, 0],
      X_pca[y == target, 1],
      label=iris.target_names[target]
   )
plt.xlabel("Composante principale 1")
plt.ylabel("Composante principale 2")
plt.title("Projection PCA du dataset Iris")
plt.legend()
plt.show()
On obtient une représentation 2D où les espèces d’Iris apparaissent relativement séparées, ce qui illustre comment la PCA permet de révéler la structure cachée des données tout en réduisant leur complexité.
PCA Principal Component Analysis - Unsupervized Learning
Dans ce graphique, les axes Composante principale 1 et Composante principale 2 correspondent aux deux directions de variance maximale trouvées par la PCA.
  • Composante principale 1 (PC1): est l’axe qui capture la plus grande part de la variance des données. Dans le cas d’Iris, il combine linéairement les quatre variables (longueur/largeur sépales et pétales) pour former une nouvelle dimension qui explique le maximum de différences entre les fleurs.
  • Composante principale 2 (PC2): est l’axe orthogonal au premier, qui capture la deuxième plus grande part de variance restante. Il complète PC1 pour donner une vue en deux dimensions qui conserve l’essentiel de l’information.

On affiche également la proportion de variance capturée par chaque composante principale:
print("Variance expliquée :", pca.explained_variance_ratio_)
En PCA, c’est un indicateur crucial: il permet de savoir combien d’information des données originales est conservée dans les nouvelles dimensions.
Variance expliquée : [0.72962445 0.22850762]
On voit que la Composante principale 1 explique environ 73% de la variance totale, tandis que la Composante principale 2 en explique environ 23%. Cela signifie qu’en réduisant les 4 dimensions initiales du dataset Iris à seulement 2 axes, on conserve plus de 96% de l’information.

Cette forte proportion justifie pleinement l’utilisation de la PCA: la projection en deux dimensions reste représentative des données originales et permet de visualiser clairement la structure et la séparation entre les espèces d’Iris, tout en simplifiant l’analyse.          
Leçon 27
Analyse en Composantes Principales PCA: Réduction de dimension non supervisée