Sujet 5 sur l`ACP Fichier - Plateforme e

Transcription

Sujet 5 sur l`ACP Fichier - Plateforme e
M8 – TP 5 : L’analyse en composantes principales
Mars 2016, INSA Rouen
Le but du TP est de réaliser une ACP.
Représentation des variables avec deux axes de l’ACP
1
v8v1
v4
Représentation du nuage avec deux axes de l’ACP
4
Total Raisin Bran
Cap n Crunch
Oatmeal RaisinCinnamon
Crisp
Toast Crunch
Honey
Post Nat.
Raisin
Fruit
& Fibre
Dates,
and
OatsGraham Ohs
Cracklin
OatBran
Bran Walnuts,
Smacks
Apple
Cheerios
Nutri−Grain
Almond−Raisin
Basic
4Cinnamon
Great Grains
Pecan
Raisin Bran
Count
Chocula
Cocoa
Puffs
Loops
Just Froot
Right
Fruit
&
Nut
Lucky Fruity
Charms
Pebbles
Trix
RaisinClusters
Nut Honey
Bran Nut Cheerios
Almond
DelightCrunch
Nut&Honey
Apple
Jacks
Fruitful Bran
Crisp
Crispy Wheat Golden
& Raisins
Golden Grahams
Life
Corn
Pops
Wheaties
Honey
Gold
Quaker Oatmeal
Honey−comb
Frosted
Flakes
Just Right Crunchy Nuggets
Quaker Oat Multi−Grain
Squares
Cheerios
Cheerios
Grape Nuts Flakes
Bran
Chex Mini−Wheats
Maypo
Triples
Frosted
Kix Corn Flakes
Total
Whole
Wheat
Chex Grain Total
Wheaties
Grape−Nuts
Special
K Squares
Raisin
Chex
Bran FlakesStrawberry
FruitDouble
Wheats
Crispix
Rice
CornKrispies
Chex
Rice Chex
Product 19
Corn Flakes
Nutri−grain Wheat
Cream
of
Wheat
(Quick)
Shredded
Wheat
n Bran
Shredded
Wheat
spoon size
Shredded
Wheat
100% Bran
All−Bran
−1
−2
v5
v7
v3
v8
v3
v5
v6
v4
−0.5
v1
v7
v2
−1
−1
−0.5
0
axe 1
0.5
−1
−1
1
Représentation des variables avec deux axes de l’ACP
1
0.5
v3
v5
0
Puffed Rice
v4
v1
v7
−0.5
−0.5
0
axe 1
0.5
1
Représentation des variables avec deux axes de l’ACP
1
0.5
v8
v6
Puffed Wheat
All−Bran with Extra Fiber
0
v2
axe 5
0
0.5
v6
−0.5
axe 3
axe 2
1
0
axe 3
axe 2
2
−3
0.5
100% Natural Bran
Muesli Raisins, Peaches,
Dates, & Almonds
& Pecans
Mueslix Crispy Blend
3
Représentation des variables avec deux axes de l’ACP
1
v2 v8
v6
v5
v1
0
−0.5
v3
v7
v4
v2
−4
−7
−6
−5
−4
−3
−2
axe 1
−1
0
1
2
−1
−1
3
−0.5
0
axe 2
0.5
1
−1
−1
−0.5
0
axe 4
0.5
1
.
Figure 1 – Visualisation des résultats de l’ACP
‘
Ex. 1 —
Des matrices et du gradient
1. Soient x et a deux vecteurs de IR3 et A une matrice carrée symétrique 3 × 3. Montrez
que
∇x (at x) = a
et
∇x (xt Ax) = 2Ax
2. Calculez ∇x (xt Ax) dans le cas où la matrice A n’est pas symétrique
3. Soit B une matrice n × p et u un vecteur de IRn . On considère la fonction J suivante :
J : IRp 7→ IR
x 7→ J(x) = kB − uxt k2F
a) Mettre J sous la forme
J(x) = xt Cx + dt x + e
où C est une matrice, d un vecteur et e un scalaire que l’on précisera.
b) En appliquant les formules vues à la première question, calculez ∇x J(x)
Ex. 2 —
L’ACP Le tableau X présente les données d’un fichier cereal.mat, présent
sur moodle, contenant les mesures des ingrédients de 77 produits de céréales pour petit déjeuner.
Sur chaque type de céréale, 8 variables ont été mesurées. Ces variables sont (dans l’ordre) :
Calories
Carbo
Cups
Fat
Fiber
Potass
Protein
Sugars
la teneur en calories (le nombre pour un repas)
la teneur en carbohydrates (en gramme pour un repas)
le nombre de tasse recommandé par repas
la teneur en graisse (en gramme pour un repas)
la teneur en fibres alimentaires (en gramme pour un repas)
la teneur en potassium (en mg pour un repas)
la teneur en proteine (en gramme pour un repas)
la teneur en sucre (en gramme pour un repas)
A chaque type de céréale a été associé son nom contenu dans la variable Name. Ainsi la première
céréale est Name(1) -> ’100% Bran’.
1
1. Récupérez le fichier cereal.mat sur moodle et chargez le dans matlab
load('cereal')
2. Commençons par faire un peu n’importe quoi
a) que fait a fonction matlab eig
help eig
b) calculez les valeurs propres de la matrice X t X
[V L] = eig(X'*X);
c) Quelle est la plus grande valeur propre `, et le vecteur propre v associé
l = L(end,end)
v = V(:,end)
d) vérifiez que c’est bien un couple valeur propre–vecteur propre, c’est à dire que
X t Xv = `v
X'*X*v - l*v
e) vérifiez aussi que les matrices V et L contiennent tout les spectre de la matrice X t X
X'*X*V - V*L
X'*X - V*L*V'
f) pourquoi comme ça ça ne marche pas
X'*X*V - L*V
g) vérifiez que les vecteurs propres sont bien tous orthogonaux deux à deux
V'*V
h) Quelles sont les variables de X représentées par le plus grand vecteurs propoes v
v
i) En calculant la quantité d’information apporté par chaque variable, expliquez pourquoi ce sont ces variables là qui sont liées à v.
100*sum(X.^2)/sum(sum(X.^2))
3. Passons aux choses sérieuses, et faisons une ACP
a) Centrez et réduisez les variables
[n,p] = size(X);
Xn = (X - ones(n,1)*mean(X)) ./ (ones(n,1)*std(X,1));
b) calculez la matrice des corrélations. Essayez de l’interpréter.
C = Xn'*Xn;
C/n
c) Calculez les facteurs propres de la matrice X
[V L] = eig(C);
d) visualisez les valeurs propres et leur importance en pourcentage d’information
vp = diag(L);
100*(vp(end:-1:1))/sum(vp)
vpc = 100*cumsum(vp(end:-1:1))/sum(vp)
figure(1)
bar(vpc,.5); hold on;
plot(100*vp(end:-1:1)/vp(end),'r-o');
title('Valeurs propres')
hold off
2
e) Calculez les composantes principales
U = Xn*V;
f) Réordonnez tout de la plus grande à la plus petite composante (c’est juste cosemétique)
V = V(:,end:-1:1);
L = L(end:-1:1,end:-1:1);
U = U(:,end:-1:1);
g) représentez les projections des individus sur les deux premières composantes principales
figure(2)
plot(U(:,1),U(:,2),'o');
for i=1:n
text(U(i,1),U(i,2),[Name(i)]);
end
xlabel('axe 1');
ylabel('axe 2');
title('Representation du nuage avec deux axes de l''ACP')
h) représentez d’autres projections sur les axes 1 et 2, 1 et 3, 2 et 3 et 4 et 5
figure(3)
subplot(2,2,1)
plot(U(:,1),U(:,2),'o');
xlabel('axe 1');
ylabel('axe 2');
title('Representation du nuage avec deux axes de l''ACP')
subplot(2,2,2)
plot(U(:,1),U(:,3),'o');
xlabel('axe 1');
ylabel('axe 3');
title('Representation du nuage avec deux axes de l''ACP')
subplot(2,2,3)
plot(U(:,2),U(:,3),'o');
xlabel('axe 2');
ylabel('axe 3');
title('Representation du nuage avec deux axes de l''ACP')
subplot(2,2,4)
plot(U(:,4),U(:,5),'o');
xlabel('axe 4');
ylabel('axe 5');
title('Repr\'esentation du nuage avec deux axes de l''ACP')
i) vérifiez que l’erreur de reconstruction est bien égale à la somme des valeurs propre
restantes
p
kX − uvt k2F =
X
`i
i=2
sum(sum((Xn - ((U(:,1)*V(:,1)'))).^2))
sum(diag(L(2:end,2:end)))
j) Calculez les corrélations entre les variables et les composantes principales
Vn = V*sqrt(L)/sqrt(n);
k) visualisez les variables avec le cercle des corrélation
figure(4)
subplot(2,2,1)
title('éReprsentation des variables avec deux axes de l''ACP')
plot(Vn(:,1),Vn(:,2),'*');hold on
for i=1:p
text(Vn(i,1),Vn(i,2),['v' num2str(i)]);
3
end
a = 0:0.01:2*pi;
plot(cos(a),sin(a),':');hold off;
xlabel('axe 1');
ylabel('axe 2');
title('éReprsentation des variables avec
subplot(2,2,2)
plot(Vn(:,1),Vn(:,3),'*');hold on
for i=1:p
text(Vn(i,1),Vn(i,3),['v' num2str(i)]);
end
plot(cos(a),sin(a),':');
xlabel('axe 1');
ylabel('axe 3');
title('éReprsentation des variables avec
hold off;
subplot(2,2,3)
plot(Vn(:,2),Vn(:,3),'*');hold on
for i=1:p
text(Vn(i,2),Vn(i,3),['v' num2str(i)]);
end
plot(cos(a),sin(a),':');
xlabel('axe 2');
ylabel('axe 3');
title('éReprsentation des variables avec
hold off;
subplot(2,2,4)
plot(Vn(:,4),Vn(:,5),'*');hold on
for i=1:p
text(Vn(i,4),Vn(i,5),['v' num2str(i)]);
end
plot(cos(a),sin(a),':');
xlabel('axe 4');
ylabel('axe 5');
title('éReprsentation des variables avec
hold off;
deux axes de l''ACP')
deux axes de l''ACP')
deux axes de l''ACP')
deux axes de l''ACP')
l) Vérifiez que l’erreur de reconstruction est bien égale à la somme des valeurs propres
restantes
dif(1) = (sum(sum(abs(Xn).^2)));
for i=1:p
dif(i+1) = sum(sum( (Xn - (U(:,1:i)*V(:,1:i)')).^2));
end
figure(5)
plot(dif,'-o'); hold on
title('Erreur de reconstruction par ACP')
plot(cumsum(vp),'r-o'); hold off
4. Interprétez l’ACP
a) quelles variables sont bien représentées par les deux premières composantes principales ?
b) quelle quantité d’information est représenté par ces deux premières composantes
principales ?
c) comment interpréter les projections des individus sur les deux premières composantes
principales ?
4