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