0% ont trouvé ce document utile (0 vote)
185 vues29 pages

05 Slides ACP M8

L'analyse en composantes principales (ACP) est une méthode statistique utilisée pour analyser des ensembles de variables. L'ACP transforme des variables corrélées en nouvelles variables décorrélées les unes des autres. Le document décrit les étapes de l'ACP ainsi que son application à un jeu de données.

Transféré par

Gilles Dakouri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
185 vues29 pages

05 Slides ACP M8

L'analyse en composantes principales (ACP) est une méthode statistique utilisée pour analyser des ensembles de variables. L'ACP transforme des variables corrélées en nouvelles variables décorrélées les unes des autres. Le document décrit les étapes de l'ACP ainsi que son application à un jeu de données.

Transféré par

Gilles Dakouri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

L’analyse en Composantes principales

Stéphane Canu
[Link]@[Link]

M8 - Principes du traitement de l’information

March 10, 2015


Plan

1 Nature des variables statistiques

2 Description mono variable

3 Description d’un couple de variables

4 Description d’un ensemble de variables


Tableaux de données
Résumé graphique des données
Résumé statistique des données : l’analyse en composantes principales

Stéphane Canu (INSA Rouen - ASI) ACP March 10, 2015 2 / 26


Analyse en composante principale (ACP)

X⇒ A.C.P. ⇒ (U, V , λ)

Les 3 étapes de l’ACP


1 centrer et réduire les données Xn = (X - un*mX)./(un*sX)
2 calculer les valeurs et vecteurs propres [V,λ] = eig(Xn’*Xn)
3 projeter les observations U = Xn*V
Xn =
-0.3393 -0.5775 0.9802 -0.4268 -0.0513 0.9483 0.4674
-1.5740 0.0188 -0.0172 0.8806 -0.7188 1.5195 -0.0684
0.5678 -1.0150 1.9092 1.0828 -1.3888 1.7471 -0.2692
-0.9404 0.5585 1.2807 -0.1368 -0.9082 1.4323 -0.0584
-0.5138
-0.9136
-1.2495
0.4148
-0.2863
-0.9377
1.3217
1.0695
1.6086
-0.8962
0.1055
0.1441
-1.0307
-0.7645
-1.7061
0.2355
0.8271
1.6852
-0.2256
0.7587
0.2501
La matrice des corrélations
-0.9139 0.2438 1.1964 -0.4372 -2.2392 1.0304 -0.1304
0.4414 -0.6329 1.1367 0.7691 -1.4089 1.4982 -0.2027
-0.9298 0.7957 1.0126 0.3820 -1.5871 0.5316 -0.1956
-0.6952 -0.4563 1.3876 0.3609 -1.2391 1.9481 -0.3715
-0.6289 0.6420 1.1921 -0.4564 -1.7554 0.4721 -0.2147
-0.6215
-1.6193
-0.3100
-0.0890
1.4032
1.1068
0.5022
0.9947
-0.9087
-1.2511
1.1956
2.1292
0.3328
-0.3633
Quand on considère
-0.6763
-0.7855
-0.1060
-0.2062
0.3007
1.6197
-0.7081
-0.1047
-1.2344
-2.1923
1.6665
1.0576
0.5152
-0.2072 la matrice des données
-0.5527 0.0951 0.8251 0.1652 -1.4881 0.5919 -0.0448
0.1821
-1.0216
-0.4625
0.3328
1.1065
1.6178
-0.0788
0.7603
-1.1373
-0.6325
1.6941
1.4086
0.2177
-0.0444 centrées réduites, l’ACP revient à
-0.7464 -0.4383 1.0400 -0.8900 -0.6159 0.7964 -0.5719
-0.8502
-0.7510
-1.6189
-0.9706
-0.3538
0.3582
0.8044
1.0655
-0.0720
0.4216
-0.1088
-0.3015
-0.8360
-1.5726
la recherche des vecteurs propres
-0.4739 -0.6319 0.6422 2.0299 -0.2603 -0.1102 -0.5091
-0.7330
-0.4330
-0.3950
-1.4785
-0.2020
0.0731
0.5043
1.9445
0.0663
0.0572
-0.8902
-0.3216
-0.2179
-1.3364
de la matrice des corrélations.
-0.2844 -0.8040 -0.5510 0.8029 0.4260 -1.1629 -1.4486
-0.6800 -0.4118 -0.5706 1.5380 0.4093 -0.0960 -0.9428
-0.6017 -1.1102 -0.3159 0.8827 1.2581 -0.9915 -0.3513
-0.4944
-0.4706
-1.5812
-1.4967
-0.8136
0.1321
0.8441
0.6719
1.5874
0.2776
-0.0908
-0.0711
-0.8191
-1.7956
X̄ = ones(n, 1) ∗ mean(X )
-1.2173
0.0359
-1.6905
-0.8376
-0.1295
-0.7469
0.9166
0.7333
0.3423
0.8639
-0.5926
-0.6880
-1.7682
-1.1263 S = ones(n, 1) ∗ std (X )
0.1118 -1.2214 -1.3014 1.6383 0.6306 -0.9105 -1.0789
0.4007
-0.2838
-1.4843
-0.9521
-1.1421
-0.9017
0.6611
0.7185
0.8225
0.3125
-0.7386
-0.0816
0.0907
-1.5057 Xn = (X − X̄ )./S
rho = n1 Xn0 ∗ Xn
0.3965 -1.1379 -0.5380 0.1953 1.0424 -0.7673 -1.0867
0.1059 0.0361 0.2630 1.2519 -0.0240 -0.7852 -1.4863
-0.6911 -0.6407 -0.2283 0.3998 0.7485 -0.0239 -1.0408
-2.2776 -1.1729 -0.2019 0.8760 0.5644 -0.1469 -0.6024
-0.1502 -0.5223 -1.1485 1.0422 0.7335 -1.5077 -1.1760
2.0272 1.4750 -0.9801 -1.9614 1.2820 -0.7261 1.3569 1.
0.1989 0.8576 -1.0152 -0.6927 0.4431 -0.7846 1.7169 0.63 1.
2.2220 1.0396 -0.5927 -0.4109 0.3165 -1.6929 0.9554 -0.49 -0.17 1.
1.1895 1.6842 -1.1238 -0.8307 0.3544 -0.9759 1.5552 -0.58 -0.77 0.21 1.
1.0515 1.6428 -0.7463 -1.5116 0.5674 -0.6314 1.3239 0.45 0.10 -0.78 -0.19 1.
1.8664 1.0513 -0.7221 -0.8922 1.1087 -0.2142 1.2243 -0.50 -0.17 0.81 0.16 -0.76 1.
1.5677 1.5059 -0.3269 -1.3851 -0.1779 -0.3927 0.4779 0.59 0.80 -0.14 -0.73 0.12 -0.05 1.
1.3562 1.8998 -0.2993 -1.1442 0.3210 0.3170 1.7762
0.2630 0.5303 -0.6793 -2.1539 1.6170 -0.4378 0.7714
1.1919 1.2938 0.3356 -1.5879 1.1011 -0.3599 1.5303
ACP en 2d : qu’est-ce que ce vecteur propre ?

le nuage de points avec la


moyenne (le centre du nuage)
(centrer et réduire les données)
Xn = (X - un*mX)./(un*sX)
ACP en 2d : qu’est-ce que ce vecteur propre ?

le nuage de points avec la


moyenne (le centre du nuage)
(centrer et réduire les données)
Xn = (X - un*mX)./(un*sX)

Le premier vecteur propre donne


l’axe principal
[V,λ] = eig(Xn’*Xn)
ACP en 2d : qu’est-ce que ce vecteur propre ?

le nuage de points avec la


moyenne (le centre du nuage)
(centrer et réduire les données)
Xn = (X - un*mX)./(un*sX)

Le premier vecteur propre donne


l’axe principal
[V,λ] = eig(Xn’*Xn)

Le second vecteur propre est


orthogonal
ACP : pourquoi rechercher des valeurs propres ?
La meilleur représentation linéaire du nuage de points est donnée par le
couple de vecteurs u ∈ IRn et v ∈ IRp permettant au mieux de reconstruire
la matrice X . Il sont alors solution du problème de minimisation suivant :
p
n X
X
min J(u, v) avec J(u, v) = (xij − ui vj )2
u,v
i j

v>

X − u uv>

aussi noté : J(u, v) = kX − uv> k2F


Résumé d’un tableau de données : résultat principal

Théorème (Eckart & Young, 1936)


La solution unique du problème d’optimisation suivant

min J(u, v) avec J(u, v) = kX − uv> k2F


u,v

est donnée par


v? et u? = X v ? ,
où v? est le vecteur propre normé associé à λ la plus grande
√ valeur propre
de la matrice X > X . De plus on a kv? k = 1 et ku? k = λ.

Démonstration : A l’optimum on a

∇u J(u, v) = −2X v + 2kvk2 u = 0




∇v J(u, v) = −2X > u + 2kuk2 v = 0


Résumé d’un tableau de données : calculs
La fonction cout1 peut se réécrire :

X p
n X X p
n X p
n X
X X n Xp
2
(xij − ui vj ) = xij2
−2 xij ui vj + (ui vj )2
i j i j i j  i j
n
XXp n
X X p Xn X p
= xij2 − 2  xij vj  ui + ui2 vj2
i j i j i j
p
n X
X
= xij2 − 2(X v)> u + kuk2 kvk2
i j

et donc

min kX − uv> k2F est analogue à min −2(X v)> u + kuk2 kvk2
u,v | {z } u,v | {z }
J(u,v) J (u,v)

1
qui est la norme de Frobenius de la matrice des différences J(u, v) = kX − uv> k2F
Minimisation d’une fonction de plusieurs variables
min J(u, v) = kX − uv> k2F
u,v

Definition (Gradient)
soit F une fonction de plusieurs (d ) variables :

F : IRd 7−→ IR
x −→ F (x)

on appelle gradient de F au point x la fonction des dérivées partielles

∇x F : IRd 7−→ IRd


 >
∂F ∂F ∂F
x −→ ∇x F (x) = ∂x1 (x), . . . , ∂xi (x), . . . , ∂x (x)
d

Condition d’optimalité
(u ? , v ? ) est solution du problème de minimisation ssi le gradient de la
fonction J s’annule en ce point
Minimisation d’une fonction de plusieurs variables

Exemple
min J(x, y ) = 2(x − a)2 + (y − b)2
x,y

Méthode de résolution du problème :


1 calcul du gradient ∇x F (x, y )
2 résolution des équations ∇x F (x ? , y ? ) = 0 (2 équations à 2 inconnues)
Calcul du gradient
Minimiser le cout c’est trouver u et v qui annulent le gradient :

∇u J (u) = 0
min J(u, v) = kX − uv> k2F ⇔
u,v ∇v J (v) = 0
pour le cout :  
X p
n X n
X Xp n
X p
X
J(u, v) = xij2 − 2  xij vj  ui + ui2 vj2
i j i j i j

le gradient s’écrit
p p

∂J(u, v) X X
vj2


 = −2 xij vj + 2ui
∂ui


j j
n n
∂J(u, v) X X
ui2

= −2 xij ui + 2vj


∂vj


i i

Ecriture matricielle du gradient


∇u J(u) = −2X v + 2kvk2 u


∇v J(v) = −2X > u + 2kuk2 v


minu,v kX − uv> k2F

Les conditions d’optimalité s’écrivent :

∇u J (u) = 0 ⇔ −X v + kvk2 u = 0


∇v J (v) = 0 ⇔ −X > u + kuk2 v = 0

On en déduit :
X v = kvk2 u

⇒ X > X v = kvk2 X > u = kvk2 kuk2 v
X > u = kuk2 v | {z }
λ

La solution est donc donnée par un vecteur propre v de la matrice X > X .

lequel ?
Quel vecteur propre choisir ?
A l’otimum

J (u, v) = −2(X v)> u + kuk2 kvk2 et X v = kvk2 u

soit
J (u, v) = −2kvk2 u> u + kuk2 kvk2
= −2kvk2 kuk2 + kuk2 kvk2
= −kuk2 kvk2 = −λ

le cout c’est la valeur propre .

La solution du problème est donc donnée par le vecteur propre associé à la


plus grande valeur propre de la matrice X > X car :

∇J (v) = 0 ⇔ X > X v − λv = 0 avec J(u, v) = kX k2 − λ

et l’on sait que toutes les valeurs propres de la matrice symétrique définie
positive X > X sont positives.
et la suite.. On itere le processus
Construisons la matrice des résidus R = X − uv>

R > R admet les mêmes valeurs propres que X > X .

...à l’exception de la plus grande qui devient zéro.

en posant X > X v = λv et X > X v2 = λ2 v2 et λ2 < λ


on a : R > Rv = (X − uv> )> (X − uv> )v
= X > X v − 2vu> X v + vu> uv> v
= λv − 2kuk2 v + kuk2 kvk2 v
= λv − kuk2 v =0
car u = X v, kvk2 = 1 et kuk2 = kX vk2 = v> X > X v = λ
et
R > Rv2 = (X − uv> )> (X − uv> )v2
= X > X v2 − 2X > uv> v2 + vu> uv> v2
= λ2 v2
car v> v2 = 0 puisque les vecteurs propres sont orthogonaux entre eux.
Les valeurs propres et vecteurs propres en 5 lignes

1 soit X la matrice des observations

X (:,i)−µi
2 Xr est la matrice des données centrées réduites Xr (:, i) = σi

3 on calcule les valeurs et vecteurs propres de la matrice de covariance


Xr > Xr

4 on visualise les observations en les projetant sur les vecteurs propres


associés aux plus grandes valeurs propres (typiquement les 2 plus
grandes)

5 on visualise aussi les variables


L’analyse en composantes principales (ACP)
Donc en résumé, si l’on cherche le sous espace V de rang k qui
« ressemble » le plus aux données X il faut calculer les k vecteurs
proposes correspondant aux k plus grandes valeurs propres.

[n,p]=size(X);
Xn = (X - ones(n,1)*mean(X))./(ones(n,1)*std(X));
[v,d] = eig(Xn’*Xn); % Calcul des valeurs propres

vp = sort(diag(d),’descend’); % on ordonne les valeurs propres


[vp 100*cumsum(vp)/sum(vp)], % affichage des valeurs propres

216.9681 52.53
125.3473 82.89
21.1190 88.00
16.5800 92.01
14.5963 95.55
10.8213 98.17
7.5682 100.00

v =
0.06 0.14 -0.41 -0.16 -0.75 0.05 0.44
0.53 -0.38 0.44 0.24 -0.07 0.38 0.38
-0.28 -0.68 -0.33 -0.01 -0.15 0.42 -0.36
0.13 -0.19 0.49 -0.48 -0.44 -0.34 -0.38
0.24 -0.46 -0.33 -0.40 0.38 -0.42 0.34
0.57 0.31 -0.24 -0.40 0.16 0.44 -0.35
-0.47 0.07 0.31 -0.58 0.17 0.41 0.36
L’analyse en composantes principales (ACP)
Donc en résumé, si l’on cherche le sous espace V de rang k qui
« ressemble » le plus aux données X il faut calculer les k vecteurs
proposes correspondant aux k plus grandes valeurs propres.

[n,p]=size(X);
Xn = (X - ones(n,1)*mean(X))./(ones(n,1)*std(X));
[v,d] = eig(Xn’*Xn); % Calcul des valeurs propres

vp = sort(diag(d),’descend’); % on ordonne les valeurs propres


[vp 100*cumsum(vp)/sum(vp)], % affichage des valeurs propres

216.9681 52.53
125.3473 82.89
21.1190 88.00
16.5800 92.01
14.5963 95.55
10.8213 98.17
7.5682 100.00

v =
0.06 0.14 -0.41 -0.16 -0.75 0.05 0.44
0.53 -0.38 0.44 0.24 -0.07 0.38 0.38
-0.28 -0.68 -0.33 -0.01 -0.15 0.42 -0.36
0.13 -0.19 0.49 -0.48 -0.44 -0.34 -0.38
0.24 -0.46 -0.33 -0.40 0.38 -0.42 0.34
0.57 0.31 -0.24 -0.40 0.16 0.44 -0.35
-0.47 0.07 0.31 -0.58 0.17 0.41 0.36
La représentation des individus et des variables par l’ACP

Facteurs : les axes factoriels v, λ

Xn> Xn v = λv et kvk = 1

Individus : les composante principale qui sont les projection des


individus
u = Xn v
Variables : calcul des corrélations entre variables observées
normalisées Xn (centrées réduites) et les composantes
principales u.

Xn> u Xn> Xn v λ λ
cor(Xn , u) = √ =√ = √ √ v= √ v
n kuk n kuk n λ n

car pour toutes les variables kX•j k2 = n et kuk2 = λ


[V,D] = eig(Xn’*Xn);
U = Xn*V;

% les nouvelles variables

plot(U(:,1),U(:,2),’o’);
plot(U(:,1),U(:,3),’o’);
plot(U(:,2),U(:,3),’o’);
plot(U(:,4),U(:,5),’o’);

% le role des variables

Vn = (V*sqrt(D(1:p,1:p))/sqrt(n));

plot(Vn(:,1),Vn(:,2),’*’);
plot(Vn(:,1),Vn(:,3),’*’);
plot(Vn(:,2),Vn(:,3),’*’);
L’ACP en matlab
On centre et on réduit les données .

Fonction Vn , U, λ ← ACP(X , k)

X = (X − un ∗ mean(X ))./(un ∗ std(X ))


(V , λ) = eig(X’*X,k) ou (U, V , µ) = svd(X,k)
U = X ∗ V√
√ √
Vn = V ∗ λ/ n ou Vn = V ∗ µ/ n

on projette les données sur le sous espace engendré par les k vecteurs
propres associés aux k plus grandes valeurs propres
et on calcule les corrélations entre les observation et ces nouvelles variables.
L’ACP reconstruit la matrice des données
Meilleur approximation de rang k
Soit X une matrice. La meilleure approximation de rang k de X , la matrice
Ak minimisant le critère suivant :

min kX − Ak k2F avec rang(Ak ) = k


Ak

s’obtient à l’aide des k vecteurs propres vi , i = 1, k associées aux k plus


grandes valeurs propres de la matrice X > X de la manière suivante :

Ak = Uk Vk>

où Vk est la matrice des vecteurs propres vi , i = 1, k et Uk est la matrice


des vecteurs ui = X vi , i = 1, k et donc Ak = XVk Vk>

l’erreur d’approximation est donnée par la somme des valeurs propres


restantes :
X n
2
kX − Ak kF = λi
i=k+1
L’ACP reconstruit la matrice des données
Jk = kX − Uk Vk> k2F k = 1, p

J(1) = (sum(sum(abs(Xn).^2)));

for k=1:p
J(k+1) = norm(Xn - (U(:,1:k)*D(1:k,1:k)*(V(:,1:k)’))));
end

figure(5)
plot(J/J(1));
hold on
title(’Erreur de reconstruction par ACP’)
plot(J/J(1),’o’);
hold off

Avec les deux plus grandes valeur propres, on reconstruit plus de 80 % de


la matrice des données (ébouli des valeurs propres selon Baccini et Besse)

observations X = Information Ak + Bruit


Plus loin sur le même principe...

D’autres applications possible de l’ACP :


I compression d’image

D’autres analyses à base d’analyse spectrale


I sur des tableaux de distance
I Tables de contingences : l’analyse factorielle des correspondances
(AFC)
I L’analyse canonique (AC) : comparaison de deux groupes de variables
I L’analyse des correspondances multiples, l’analyse discriminates

D’autres développements :
I ACP et modèle probabiliste
I ACP non linéaire,
I ACP généralisée
I ACP parcimonieuse
Conclusion

Pourquoi faire une analyse en composantes principale (ACP)


I permet de représenter les individus
I permet de représenter les variables
I permet de compresser les données et d’éliminer du bruit

Comment faire une L’analyse en composantes principale (ACP)


I réduire et centrer les données Xr
I calculer la matrice des correlations Xr > Xr
I en extraire les valeurs et les vecteurs propres V
I reconstruire les nouvelles variables U = XrV
I choisir k le nombre de facteurs significatifs k

Méthode exploratrice
I complexe dans sa formulation
I facile dans sa mise en œuvre (5 lignes de code)
Repéres bibliographiques

Statistique descriptive multidimensionnelle : Techniques factorielles de


base Baccini, Alain et Besse, Philippe (UPS. Université Paul Sabatier,
Toulouse 3. LSP. Laboratoire de statistique et probabilités. France)
[Link]

le cours de l’UTC sur l’ACP (G. Govaert)


[Link]

un tutorial de CMU sur l’ACP


[Link]

sur wikipedia
[Link]
Rappel sur les valeurs propres
soit Σ une matrice carrée symétrique définie positive (Σ = X > X ) de
dimension p. Il existe :
p réels positifs λi , i = 1, p et
p vecteurs de IRp , vi , i = 1, p
tels que
Σvi = λi vi

quelques faits à propos des valeurs et des vecteurs propres


par convention on ordonne les valeurs propres λi ≤ λi−1 , i = 2, p
par convention les vecteurs propres sont normés vi> vi = 1
les vecteurs propres sont orthogonaux entre eux : vi> vj = 0 i 6= j
la matrice des vecteurs propres V forme une base de IRp
décomposition spectrale : Σ = pi=1 λi vi vi>
P

on les calcule en utilisant un programme ([V,D] = eig(Σ))


X = randn(10,5)
X =

-0.6416 -0.3934 -0.7313 0.9820 0.5524


0.8415 2.1730 0.3442 1.6411 0.7336
0.6521 0.5006 3.4307 -0.5842 -1.6001
0.1848
0.3635
-0.2535
0.5542
0.3812
1.9298
-0.8544
0.6564
-0.3328
0.6291
Sv = λv
0.5890 -0.2903 1.5685 -1.6603 -0.5648
0.5153 -0.4606 0.2263 1.6934 -1.0449
0.9598 1.2378 -2.0753 0.5395 -0.4543
1.9332 2.2013 -0.2789 0.2030 -1.4092
-0.0956 -2.0578 -0.9055 -2.3387 1.0096
S = X’*X

S = S*V(:,1) - D(1,1)*V(:,1)
6.9914 7.7941 2.3642 1.4789 -4.7412
7.7941
2.3642
16.4077
1.8471
1.8471
24.0085
9.0969
-2.4957
-4.0880
-5.2547
= 1.0e-13 *
1.4789 9.0969 -2.4957 16.5856 -0.3456
-4.7412 -4.0880 -5.2547 -0.3456 8.5323 0
[V,D] = eig(S) -0.7105
V =

-0.8033 0.0653 0.4722 0.0324 -0.3555


0.5684
0.4619 0.4924 0.2197 0.3078 -0.6334
-0.0481
-0.2109
0.1162
-0.3453
-0.3922
-0.6437
-0.7853
0.5158
-0.4623
-0.3948
0.5684
-0.3074 0.7877 -0.4008 0.1468 0.3206
0
D =

1.2257 0 0 0 0
0 4.9599 0 0 0
0
0
0
0
10.6614
0
0
25.8086
0
0
S - V*D*V’;
0 0 0 0 29.8698
= -5.6843e-14 *
diag(D)

D = ...
1.2257
4.9599
10.6614
25.8086
29.8698

Vous aimerez peut-être aussi