Formation ML / Unsupervised

PCA (Analyse en Composantes Principales)

Intermediaire 40 min 13 sections

Maitrisez la PCA pour reduire la dimensionnalite de vos donnees tout en preservant l'information essentielle.

Objectifs d'apprentissage

  • Comprendre le concept de reduction de dimensionnalite
  • Interpreter les composantes principales et la variance expliquee
  • Implementer PCA avec scikit-learn
  • Visualiser des donnees haute dimension en 2D

Prerequis

Notions de base en algebre lineaire (vecteurs, matrices)

Theorie

Pourquoi reduire la dimensionnalite?

La PCA (Principal Component Analysis) est une technique de reduction de dimensionnalite qui transforme des donnees a N dimensions en M dimensions (M < N).

Problemes des donnees haute dimension:

  • Difficulte de visualisation (>3D impossible)
  • "Fleau de la dimension" (distances deviennent similaires)
  • Overfitting (trop de features pour peu de donnees)
  • Temps de calcul eleve

Ce que fait la PCA:

  1. Trouve les directions de variance maximale
  2. Projette les donnees sur ces directions
  3. Garde les M premieres directions (composantes)

Avantages:

  • Reduit la complexite tout en preservant l'information
  • Supprime les correlations entre features
  • Facilite la visualisation
  • Peut ameliorer les performances des modeles

Limitations:

  • Transformation lineaire uniquement
  • Perte d'information (meme si minimisee)
  • Composantes moins interpretables
Theorie

Schema: Comment fonctionne la PCA

Principe geometrique:

flowchart TD D["Donnees Originales
(10 dimensions)"] V["Trouver les directions
de variance maximale"] PC["Composantes Principales
PC1, PC2, ... PC10"] S["Selectionner les top M
(ex: 2 composantes)"] R["Donnees Reduites
(2 dimensions)"] D --> V --> PC --> S --> R style R fill:#F7E64D,color:#1A1A1A

Variance expliquee:

flowchart LR subgraph Composantes ["Composantes"] PC1["PC1
65% variance"] PC2["PC2
25% variance"] PC3["PC3
7% variance"] PCN["...
3% variance"] end T["Total: 100%"] PC1 --> T PC2 --> T PC3 --> T PCN --> T KEEP["Garder PC1 + PC2
= 90% info"] style PC1 fill:#F7E64D,color:#1A1A1A style PC2 fill:#C09CF0,color:#1A1A1A style KEEP fill:#9B7AC4,color:#FFFFFF

La PCA trouve les axes qui "etirent" le plus les donnees.

Exemple concret avec code couleur - Projection PCA:

Donnee originale (3 dimensions):

  • $\textcolor{#3498db}{x_1 = 2.5}$ (taille en cm)
  • $\textcolor{#e67e22}{x_2 = 1.8}$ (largeur en cm)
  • $\textcolor{#9B7AC4}{x_3 = 3.2}$ (poids en g)

La PCA a trouve que PC1 = $\textcolor{#27ae60}{0.6} \cdot x_1 + \textcolor{#27ae60}{0.5} \cdot x_2 + \textcolor{#27ae60}{0.6} \cdot x_3$

Etape 1 - Projection sur PC1:

$PC1 = \textcolor{#27ae60}{0.6} \times \textcolor{#3498db}{2.5} + \textcolor{#27ae60}{0.5} \times \textcolor{#e67e22}{1.8} + \textcolor{#27ae60}{0.6} \times \textcolor{#9B7AC4}{3.2}$

$PC1 = \textcolor{#3498db}{1.50} + \textcolor{#e67e22}{0.90} + \textcolor{#9B7AC4}{1.92} = \textcolor{#27ae60}{\mathbf{4.32}}$

Interpretation:

  • 3 dimensions → 1 dimension ($\textcolor{#27ae60}{PC1 = 4.32}$)
  • Cette valeur resume 65% de l'information originale
  • La contribution de chaque feature: $\textcolor{#3498db}{1.50}$ (taille) + $\textcolor{#e67e22}{0.90}$ (largeur) + $\textcolor{#9B7AC4}{1.92}$ (poids)

Legende des couleurs:

  • $\textcolor{#3498db}{Bleu}$: Feature 1 / taille ($\textcolor{#3498db}{x_1}$)
  • $\textcolor{#e67e22}{Orange}$: Feature 2 / largeur ($\textcolor{#e67e22}{x_2}$)
  • $\textcolor{#9B7AC4}{Violet}$: Feature 3 / poids ($\textcolor{#9B7AC4}{x_3}$)
  • $\textcolor{#27ae60}{Vert}$: Poids de projection et resultat PC1
Avance Exercice manuel: A vous de calculer!

Objectif: Comprendre PCA a la main (centrage, variance, projection).

CONTEXTE

4 points en 2D :

Pointx1x2
A24
B46
C68
D810

PARTIE 1 : Centrage des donnees

1.1) Calculez la moyenne de x1 et x2

1.2) Calculez les coordonnees centrees de chaque point

PARTIE 2 : Variance

2.1) Calculez la variance de x1 centre

2.2) Calculez la variance de x2 centre

2.3) Calculez la covariance entre x1 et x2

PARTIE 3 : Interpretation

3.1) Les variables sont-elles correlees ?

3.2) Dans quelle direction la variance est-elle maximale ?

3.3) Si on reduit a 1D, combien de variance conserve-t-on approximativement ?

Avance Solution de l'exercice manuel

SOLUTION DETAILLEE

PARTIE 1 : Centrage des donnees

1.1) Moyennes :

$$\bar{x_1} = \frac{2+4+6+8}{4} = \textcolor{#9B7AC4}{5}$$

$$\bar{x_2} = \frac{4+6+8+10}{4} = \textcolor{#9B7AC4}{7}$$

1.2) Coordonnees centrees :

Pointx1 - 5x2 - 7
A-3-3
B-1-1
C+1+1
D+3+3

PARTIE 2 : Variance

2.1) Variance de x1 :

$$Var(x_1) = \frac{(-3)^2 + (-1)^2 + 1^2 + 3^2}{4} = \frac{9+1+1+9}{4} = \textcolor{#3498db}{5}$$

2.2) Variance de x2 :

$$Var(x_2) = \frac{9+1+1+9}{4} = \textcolor{#e67e22}{5}$$

2.3) Covariance :

$$Cov(x_1,x_2) = \frac{(-3)(-3)+(-1)(-1)+(1)(1)+(3)(3)}{4}$$

$$= \frac{9+1+1+9}{4} = \textcolor{#27ae60}{5}$$

PARTIE 3 : Interpretation

3.1) Correlation :

$$\rho = \frac{Cov}{\sqrt{Var_1 \cdot Var_2}} = \frac{5}{\sqrt{5 \times 5}} = \textcolor{#e74c3c}{1}$$

Correlation parfaite ! (points sur une droite)

3.2) Direction de variance max : La diagonale (45°)

$$PC_1 = (\frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}})$$

3.3) Variance conservee en 1D :

La variance totale = 5 + 5 = 10

Sur PC1 ≈ $\textcolor{#27ae60}{100\%}$ (correlation parfaite)

$\boxed{\text{1 composante suffit car les points sont alignes}}$

Legende : $\textcolor{#9B7AC4}{Violet}$: moyennes, $\textcolor{#3498db}{Bleu}$: Var(x1), $\textcolor{#e67e22}{Orange}$: Var(x2)

Code

Explorer les donnees haute dimension

Cliquez sur "Executer" pour voir le resultat
Code

Visualiser le probleme de la haute dimension

Cliquez sur "Executer" pour voir le resultat
Contenu verrouille section restante
6 / 13

Continuez votre apprentissage

Vous avez explore 6 sections de ce module. Connectez-vous pour debloquer le reste du cours, incluant les exercices pratiques et les solutions.

Console Python

Raccourcis clavier
Ctrl/Cmd+Enter Executer
Ctrl/Cmd+Shift+/ Commenter
Tab Indenter
Shift+Tab Desindenter
Ctrl/Cmd+Z Annuler
Ctrl/Cmd+Y Retablir
Ctrl+Enter pour executer
Cliquez sur "Executer" pour voir le resultat