Sisteme e Recunoaștere a Formelor Lab 7 Analiza Componentelor Principale 1. Obiective În această lucrare e laborator se escrie metoa e Analiză a Componentelor Principale (Principal Component Analysis PCA). Această metoă se utilizează pentru reucerea imensionalității, compresia și vizualizarea atelor. Pentru realizarea acestei lucrări e laborator este necesară o librărie care să calculeze valorile și vectorii proprii ale unei matrice (escompunerea în valori proprii). 2. Funamente teoretice Se consieră un set e puncte e ate într-un spațiu e imensiune mare. Fiecare vector reprezintă trăsăturile unui exemplu e antrenare. Scopul acestei metoe este reucerea imensionalității punctelor în așa fel încât să se păstreze cât mai multă informație cu putință. Iniţial vom consiera un exemplu biimensional: se afișează atele colectate espre cât e mult apreciază anumite persoane niște activități și aptituinea lor în omeniul respectiv. Figura 1 ilustrează un exemplu simplificat. Să analizăm cei oi vectori u1 și u2. Dacă se proiectează punctele 2D pe vectorul u2 se obțin valori scalare cu o împrăștiere reusă (eviație stanar mică). În schimb, acă se proiectează punctele pe u1 punctele sunt mult mai împrăștiate. Dacă ar trebui să reucem atele la o singură imensiune, atunci ar fi preferabil să le proiectăm pe u1 întrucât atele sunt mai ușor separabile. Figura 1 Proiecţia punctului x pe vectorul u 1 Exprimat într-un mo mai formal, fiecare punct biimensional poate fi scris ca: x = x, u 1 u 1 u 1 + x, u 2 u 2 u 2
În ecuația e mai sus punctul x a fost proiectat pe fiecare vector și apoi rezultatele obținute au fost însumate. Prousul scalar x, u i efinește magnituinea proiecției și trebuie normalizat cu norma vectorului u i ; cei oi vectori efinesc irecțiile. Această exprimare este posibilă eoarece u1 și u2 sunt vectori perpeniculari. Dacă se pune coniția ca cei oi vectori să fie vectori unitare, atunci termenul e normalizare ispare. Pentru mai multe exemple e proiecţie vizualizaţi [4]. Ieea principală a reucerii imensionalității atelor este să se utilizeze cele mai mari proiecții. Întrucât proiecțiile pe u2 vor fi mai mici, x se poate aproxima folosin oar primul termen: x 1 = x, u 1 u 1 u 1 În general, fiin ată o bază ortonormală a unui spațiu vectorial cu imensiuni B cu vectorii e bază bi, orice vector se poate scrie ca: x = x, b i b i = (x b i ) Problema revine acum să eterminăm vectorii e bază pe care se vor realiza proiecțiile. Întrucât scopul principal este maximizarea varianței intre punctele rezultate în urma transformării, matricea e covarianță ne poate oferi informațiile necesare. Covarianța intre ouă trăsături este efinită ca: n C(x i, x j ) = 1 n 1 (x i μ i )(x j μ j ) une μ i este meia trăsăturii i. Matricea e covarianță stochează covarianțele pentru toate perechile e trăsături. Se poate emonstra că matricea e covarianță poate fi exprimată ca un simplu prous e matrice: C = 1 n 1 (X μ1 1xn) (X μ1 1xn ) une μ este un vector care conține valorile meii ale trăsăturilor și 1 1xn este un vector rân ce conține oar valori e 1. Dacă eliminăm meia in atele e intrare, întrun pas e preprocesare, ecuația se simplifică și mai mult: C = 1 n 1 X X Pasul următor este găsirea axelor e-a lungul cărora covarianța este maximă. Descompunerea în valori proprii ale unei matrice ne furnizează aceste informații. Intuitiv, (aproape) orice matrice poate fi vizualizată ca o rotație urmată e o scalare e-a lungul axelor și rotația inversă. Descompunerea în vectori și valorilor proprii calculează această escompunere a matricei: C = QΛQ = λ i Q i Q i une Q este o matrice e rotație e imensiune x (ortonormală) și Λ este o matrice iagonală ale cărei elemente reprezintă scalarea e-a lungul fiecărei axe. Elementele se numesc valori proprii și fiecare coloană corespunzătoare in Q este vectorul propriu corespunzător. Deoarece scopul principal este menținerea proiecțiilor cu b i
varianță maximă, valorile proprii se oronează escrescător în funcție e magnituinea lor și se aleg primele valori proprii. Astfel C poate fi aproximat ca: C = Q 1: Λ 1: Q 1: = λ i Q i Q i une Q 1: este o matrice e imensiune x cu primii vectori proprii și Λ 1: este o matrice iagonală e imensiune x ce conține primele valori proprii. Dacă este egal cu se obține matricea originală și, pe măsură ce valoarea lui scae, se obțin aproximări tot mai grosiere ale lui C. Astfel am eterminat axele e-a lungul cărora varianța proiecțiilor este maximizată. În cazul general un vector poate fi aproximat cu vectori astfel: x = x, Q i Q i = (x Q i ) une Q i este coloana i a matricei e rotație Q. Coeficienţii PCA pot fi calculaţi ca: X coef = XQ Aproximarea PCA poate fi calculată pentru toți vectorii e intrare simultan (acă ei sunt stocați ca rânuri în X ) utilizân formula: X = XQ i Q i t = X coefi Q i t Q i = XQ 1: Q 1: une Q 1: este matricea formată in primele coloane in Q. Este important să se facă istincția între aproximare și coeficienți: aproximarea este suma coeficienților înmulțite cu componentele principale. În finalul acestei prezentări teoretice vom trece în revistă mai multe exemple în care PCA se poate aplica cu succes: Reucerea imensionalității trăsăturilor: în unele cazuri, vectori e trăsături cu o imensionalitate mare pot să încetinească procesul e preicție Vizualizarea atelor atele pot fi analizate în 3D sau în 2D; pentru ate cu o imensionalitate mai mare este necesară proiecția atelor; Aproximarea vectorilor e ate; Detecția trăsăturilor reunante și a epenențelor liniare intre trăsături; Reucerea zgomotului acă zgomotul in ate are o varianță mai mică ecât atele, aică raportul intre semnal și zgomot (SNR) este mare, atunci PCA elimină zgomotul in atele e intrare. 3. Exemple e rezultate Pentru pca2 Prima valoare proprie este 8102.21 Eroarea meie absolută folosin o singură componentă: 142.8648 Pentru pca3 Prima valoare proprie este 5462.3301 Eroarea meie absolută folosin o singură componentă: 116.0689
Figura 2. Vizualizarea punctelor ce rezultă upă aplicarea metoei PCA pe atele in fişierul pca2.txt 4. Detalii e implementare Declararea și alocarea unei matrice e imensiune nx cu valori flotante exprimate în ublă precizie: Mat X(n,,CV_64FC1); Calculul matricei e covarianță upă ce meiile au fost scăzute in valorile e intrare: Mat C = X.t()*X/(n-1); Pentru a calcula escompunerea în valori proprii, Lamba va conține valorile proprii și Q va conține vectorii proprii. Este necesară transpunerea eoarece X conține atele e intrare e-a lungul rânurilor. Mat Lamba, Q; eigen(c, Lamba, Q); Q = Q.t(); Prousul scalar este implementat ca o simplă înmulțire. Atenție, atorită faptului că inexarea începe e la 0, primul rân este row(0). Prousul scalar intre rânul i in X și coloana i in Q este at e: Mat pro = X.row(i)*Q.col(i);
5. Activitate practică 1. Deschieți fișierul e intrare și citiți punctele e ate. Pe prima linie este stocat numărul e puncte n și imensionalitatea atelor e intrare. Liniile următoare in fișier conțin câte un punct cu cooronate. Calculați vectorul cu valorile meii și scăeți-l in punctele e intrare. 2. Calculați matricea e covarianță ca un prous e matrice. 3. Efectuați escompunerea în valori proprii a matricei e covarianță apelân funcţia in librărie. 4. Afișați valorile proprii. 5. Calculați coeficienții PCA și aproximarea X e orinul (folosin primele valori proprii) pentru atele e intrare. 6. Calculați valoarea meie a iferenței absolute intre punctele originale și aproximarea lor utilizân primele componente principale. 7. Găsiți minimele și maximele pe coloanele matricei e coeficienți. 8. Pentru atele e intrare in fișierul pca2.txt, afisati coeficienţii PCA in primele ouă coloane ca puncte negre 2D pe funal alb. Pentru a obține cooronate pozitive scăeți valorile minime. 9. Pentru atele e intrare in fișierul pca3.txt, afişaţi coeficienţii PCA in primele trei coloane sub forma unei imagini grayscale. Utilizați primele 2 componente ca și cooronatele x și y, iar cea e-a treia valoare ca intensitate în punctul (x, y). Pentru a obține cooronate pozitive trebuie să scăeți valoarea minimă in primele ouă cooronate. Normalizați a treia componentă astfel încât să ia valori între 0:255. 10. Determinați automat numărul e componente principale care trebuie să fie păstrate astfel încât să se reţină un anumit procent in varianța inițială. De exemplu, găsiți valoarea lui pentru care aproximarea e orinul reține 99% in varianța inițială. Procentajul varianței păstrate este at e λ i λ i. 6. Bibliografie [1] Wiipeia article PCA - https://en.wiipeia.org/wii/principal_component_analysis [2] Stanfor Machine Learning course notes - http://cs229.stanfor.eu/notes/cs229-notes10.pf [3] Linsay Smith - PCA tutorial - http://faculty.iiit.ac.in/~mrishna/principalcomponents.pf [4] PCA in R (animation of projection) - https://poissonisfish.worpress.com/2017/01/23/principal-component-analysis-in-r/