Laskennallinen data-analyysi II Saara Hyvönen, Saara.Hyvonen@cs.helsinki.fi Kevät 2007 Ulottuvuuksien vähentäminen, SVD, PCA Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto
visualisointi datan kompressio Ulottuvuuksien vähentäminen: miksi? kohinan poisto, poikkeavien arvojen etsiminen Kaksi peruslähestymistapaa: heitetään muuttujia pois, tai muodostetaan uusia muuttujia. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 1
Esim. käsinkirjoitetut numerot Halutaan luokitella käsinkirjoitetut numerot automaattisesti luokkiin 0-9: Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 2
Käsinkirjoitetut numerot jatkuu Jokainen numero on (esimerkiksi) 100x100 pikselin harmaasävykuva. Tätä voidaan ajatella pisteenä 10000-ulotteisessa avaruudessa. Kuvitellaan tilanne, jossa otetaan numero 3 ja luodaan joukko uusia kolmosia siirtämällä, kiertämällä ja skaalaamalla peruskolmonen: Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 3
Nyt, vaikka jokaisen pisteen dimensio on 10000, on meillä oikeasti vain neljä vapausastetta: siirto pysty- ja vaakasuunnissa, kierto sekä skaalaus. Näitä neljää vapausastetta voidaan ajatella latentteina eli piilomuuttujina. Oikeasti käsinkirjoitetut numerot eivät tietenkään muodostu näin yksinkertaisesti, vaan niissä on yksilöllisiä deformaatioita; tällaisten deformaatioiden lukumäärän voidaan kuitenkin ajatella olevan pieni verrattuna joukon dimensioon (10000). Koko käsinkirjoitettu numerojoukko voidaan siis kuvata paljon pienempidimensioisessa avaruudessa. Mutta miten? Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 4
(Lineaariset) piilomuuttujamallit Yksinkertaisimmillaan voidaan ajatella, että m n datamatriisi A, missä rivit ovat pisteitä ja sarakkeet ovat muuttujia, esitetään k:n piilomuuttujan avulla kahden matriisin tulona: A m n = D m k V k n, missä matriisin V rivit ovat latentit muuttujat ja matriisi D antaa datapisteet latenttien muuttujien avulla lausuttuna. Siis V:n rivit = uudet kantavektorit, ja D = pisteiden koordinaatit uudessa kannassa. Menetelmiä on paljon, ja eri menetelmät antavat eri piilomuuttujat. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 5
Singulaariarvohajotelma Jokainen m n matriisi A, m n, voidaan kirjoittaa muotoon ( ) Σ A = U V T, 0 missä U R m m ja V R n n ovat ortogonaaliset, ja Σ R n n on diagonaalimatriisi: Σ = diag(σ 1, σ 2,..., σ n ), σ 1 σ 2... σ n 0. (singular value decom- Tämä on matriisin A singulaariarvohajotelma position, SVD) Tämä voidaan myös kirjoittaa muotoon A = U 1 ΣV T, U 1 R m n. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 6
Singulaariarvot ja -vektorit Matriisin Σ diagonaalialkiot σ j ovat matriisin A singulaariarvot. Matriisien U ja V sarakkeet ovat matriisin A vasemman- ja oikeanpuoleiset singulaarivektorit. Singulaariarvohajotelma voidaan myös kirjoittaa muodossa Av j = σ j u j, A T u i = σ j v j. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 7
Matlab-esimerkki A= 1 1 1 2 1 3 1 4 [U,S,V]=svd(A) U= -0.2195 0.8073 0.0236 0.5472-0.3833 0.3912-0.4393-0.7120-0.5472-0.0249 0.8079-0.2176-0.7110-0.4410-0.3921 0.3824 S= 5.7794 0 V= -0.3220 0.9467 0 0.7738-0.9467-0.3220 0 0 0 0 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 8
[U,S,V]=svd(A,0) U= -0.2195 0.8073-0.3833 0.3912-0.5472-0.0249-0.7110-0.4410 S= 5.7794 0 0 0.7738 V= -0.3220 0.9467-0.9467-0.3220 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 9
Matriisin approksimointi Lause. Olkoon U k = (u 1 u 2... u k ), V k = (v 1 v 2... v k ) ja Σ k = diag(σ 1, σ 2,..., σ k ), ja määritellään A k = U k Σ k V T k. Tällöin min rank(b) k A B 2 = A A k 2 = σ k+1. Eli: 2-normin (myös Frobenius-normin) mielessä paras astetta k oleva approksimaatio matriisille saadaan singulaariarvohajotelmaa käyttämällä. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 10
Entä sitten? Siis: 2-normin mielessä paras astetta k oleva approksimaatio matriisille saadaan singulaariarvohajotelmaa käyttämällä: Tätä voi käyttää: kohinan poistoon datan kompressioon A k = U k Σ k V T k. matriisin oikean asteen määrittämiseen Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 11
Esimerkki: kohinan poisto Olkoon A = A k + N, missä A k on (alhaista) astetta k oleva matriisi, ja N on pieni. Tällaisessa tapauksessa matriisin A singulaariarvoat käyttäytyvät tyypillisesti tähän tapaan: 8 singular values 7 6 5 4 3 2 1 0 0 2 4 6 8 10 12 14 16 18 20 index Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 12
2 log of singular values 1 0 1 2 3 4 0 2 4 6 8 10 12 14 16 18 20 index Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 13
Esimerkki: käsinkirjoitetut numerot Käytetään singulaariarvohajotelmaa käsinkirjoitettujen numeroiden kuvaamiseen. Sen sijaan, että käytetään 10000 pikseliä, käytetäänkin pientä määrää singulaarivektoreita. Otetaan siis iso kasa kolmosia, muodostetaan joka kuvasta vektori, laitetaan ne sarakkeiksi datamatriisiin, ja lasketaan singulaariarvohajotelma. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 14
Esimerkki: käsinkirjoitetut numerot Vasemmanpuoleiset singulaariarvot tai singulaarikuvat u j : Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 15
Esimerkki: käsinkirjoitetut numerot Alkuperäinen kuva sekä approksimaatio, johon on saatu käyttämällä 1,3,5,7 ja 9 singulaarivektoria, jotka on laskettu kaikista kolmosista: Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 16
Esimerkki: käsinkirjoitetut numerot Voidaan olettaa, että kolmoset on helpompi muodostaa käyttäen kolmosen singulaarivektoreita kuin vaikkapa viitosen singulaarivektoreita. Nyt voidaan esimerkiksi luokitella käsinkirjoitettuja numeroita katsomalla, miten hyvin ne voidaan muodostaa kussakin kannassa. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 17
Esimerkki: LSI Halutaan tehdä hakuja suuresta tekstidokumenttien kokoelmasta. Esitetään dokumenttikokoelma termi-dokumentti-matriisina A, jossa rivit vastaavat sanoja, ja sarakkeet dokumentteja, ja matriisin alkion a i,j arvo kertoo sanan i painon dokumentissa j. Haku on tällöin vektori q, jonka jokainen alkio vastaa niinikään sanaa. Haku voidaan tehdä vertaamalla suoraan vertaamalla hakuvektoria kuhunkin dokumenttiin: cos(θ(a j, q)) = a T j q a j 2 q 2 tol. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 18
Esimerkki: LSI Usein sen sijaan lasketaan ensin termi-dokumentti-matriisille singulaariarvohajotelma, approksimoidaan matriisia (ongelman alkuperäiseen kokoon verrattuna) pienehköllä määrällä singulaarivektoreita, lausutaan myös hakuvektori singulaarivektorien avulla, ja tehdään hakuvektorin ja dokumenttien vertailu tässä uudessa kannassa. Nopeampaa (datan kompressio) ja (usein) tarkempaa (kohinan poisto). Tässä kontekstissa SVD kulkee nimellä LSI (Latentti Semanttinen Indeksointi) Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 19
Pääkomponenttianalyysi Tavoitteena on etsiä pieni joukko (keinotekoisia) muuttujia siten, että datan varianssista säilyy mahdollisimman suuri osuus. Ensimmäinen pääkomponentti on se vektori, jolle projisoidun datan varianssi on suurin. Kun tämä on löydetty, jatketaan etsimällä tälle ortogonaalinen suunta, joka selittää mahdollisimman suuren osan vielä selittämättä jääneestä varianssista. Jokainen pääkomponentti on lineaariyhdistely alkuperäisiä muuttujia. PCA = principal component analysis Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 20
1st principal component x x x x x x x x x x x x 2nd principal component x x x Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 21
PCA Olkoon A n m-matriisi, jonka rivit ovat pisteitä ja sarakkeet muuttujia. Keskitetään A: vähennetään jokaisesta sarakkeesta sarakkeen keskiarvo, jolloin uuden datamatriisin sarakkeiden keskiarvo on nolla. Olkoon tämä keskitetty matriisi nyt A. Olkoon w R m (toistaiseksi tuntematon) vektori, jolle projisoituna datan varianssi on suurin. Vaaditaan vielä, että w T w = 1. Vektorin a projektio vektorille w on w T a = m j=1 a jw j. Koko datamatriisin projektio vektorille w on Aw. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 22
Koko datamatriisin projektio vektorille w on Aw. Varianssi: σw 2 = 1 n (Aw)T (Aw) = 1 n wt A T Aw = w T Cw missä C = 1 n AT A on matriisin A kovarianssimatriisi (A on keskitetty!) Tavoitteena on maksimoida varianssi ehdolla w T w = 1. Optimointiongelma: maksimoi f = w T Cw λ(w T w 1), missä λ on Lagrangen kerroin. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 23
Optimointiongelma: maksimoi f = w T Cw λ(w T w 1), missä λ on Lagrangen kerroin. Derivoidaan w:n suhteen ja saadaan f w = 2Cw 2λw = 0 Tämä on itse asiassa ominaisarvoyhtälö: Cw = λw, missä C = 1 n AT A. Varianssi saadaan kertomalla yhtälöä vasemmalta w:n transpoosilla. Kun vieä muistetaan, että w T w = 1 saadaan varianssiksi w T Cw = λ. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 24
Varianssi: w T Cw = λ. Tämä on maksimissaan, kun w on kovarianssimatriisin suurinta ominaisarvoa vastaava ominaisvektori, ja suurin ominaisarvo itse kertoo varianssin. Ensimmäinen pääkomponentti on siis kovarianssimatriisin suurinta ominaisarvoa vastaava ominaisvektori. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 25
Mutta jos kirjoitetaankin A = UΣV T saadaan C = A T A = VΣ T U T UΣV T, CV = VΣ T Σ. Kun tämä kirjoitetaan sarake kerrallaan, nähdään, että Cv j = σ 2 jv j, eli matriisin A kovarianssimatriisin ominaisarvot ovat singulaariarvojen neliöt, ja ominaisvektorit ovat oikeanpuoleiset singulaarivektorit! Ensimmäinen pääkomponentti on siis datamatriisin 1. oikeanpuoleinen singulaarivektori. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 26
Entä seuraavaksi? Jatketaan samaan tapaan: etsitä n kaikille löydetyille pääkomponenteille kohtisuorassa oleva vektori, jolle projisoituna varianssi on suurin. Pääkomponentit ovat oikeanpuoleiset singulaarivektorit, singulaariarvojen neliöt kertovat varianssin kyseisen pääkomponentin suuntaan. Eli: PCA on SVD keskitetylle datalle! Singulaariarvojen avulla voi arvioida, montako pääkomponenttia tarvitaan. Peukalosääntö: valitse komponenttien lukumäärä siten, että 85% varianssista säilyy: k j=1 σ2 j n 0.85. j=1 σ2 j Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 27
Esimerkki: spatiaalisen datan analysointi Data: Suomen murteet, noin 17000 sanaa, 500 kuntaa. Sana-kunta-matriisi A: A(i, j) = { 1 jos sana i esiintyy kunnassa j 0 muutoin. Sovelletaan tähän pääkomponenttianalyysiä. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 28
Esimerkki: spatiaalisen datan analysointi Katsomalla komponentteja nähdään miten murresanasto vaihtelee Ensimmäinen pääkomponentti kertoo kerättyjen sanojen lukumäärän! Tämän jälkeen maantieteellinen rakenne alkaa näkyä. Huomaa, että menetelmä itse ei tiedä missä mikin kunta sijaitsee. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 29
pca 1, nocomp 6 number of words 760 760 740 740 720 720 700 700 680 680 660 320 330 340 350 360 370 660 320 330 340 350 360 370 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 30
pca 2, nocomp 6 pca 3, nocomp 6 760 760 740 740 720 720 700 700 680 680 660 320 330 340 350 360 370 660 320 330 340 350 360 370 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 31
Esimerkki: ilmakehädata Data: 1500 päivää, kymmeniä muuttujia (lämpötila, tuulen suunta ja nopeus, UV-säteilyn määrä, hiilidioksidikonsentraatio etc.) Visualisointi esim. 60-ulotteisessa avaruudessa on haastavaa! Sen sijaan, tee pääkomponenttianalyysi ja projisoi data kahden ensimmäisen komponentin määrittämään tasoon. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 32
30 Days projected in the plane defined by the 1st two principal components, colored per month 12 25 11 10 20 9 2nd principal component 15 10 5 8 7 6 5 0 4 5 3 2 10 10 5 0 5 10 15 1st principal component 1 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 33
Miten pääkomponentteja ei lasketa: Kirjallisuudessa (mm kurssikirjassa) esitellään tavan takaa algoritmeja, joissa pääkomponentit lasketaan kovarianssimatriisin ominaisvektoreina. Laskennallisesti tämä on huono tapa! Parempi laskea singulaariarvohajotelma. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 34
Miten pääkomponenttit lasketaan: Matriisi A, rivit: datapisteet, sarakkeet=muuttujat. 1. Keskitä data vähentämällä jokaisesta sarakkeesta keskiarvo 2. Laske keskitetyn matriisin  singulaariarvohajotelma (tai kensimmäistä singulaariarvoa ja -vektoria):  = UΣV T. 3. Matriisin V sarakkeet ovat pääkomponentit, ja datapisteiden kooridnaatit uudessa (pääkomponenttien virittämässä) kannassa ovat UΣ. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 35
Matlab-koodi %Data matrix A, columns:variables, rows: data points %matlab function for computing the first k principal components of A. function [pc,score]=pca(a,k); [rows,cols]=size(a); Ameans=repmat(mean(A,1),rows,1); %matrix, rows=means of columns A=A-Ameans; %centering data [U,S,V]=svds(A,k); %k is the number of pc:s desired pc=v; score=u*s; %now A=scores*pcs +Ameans; Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 36
Huom. PCA löytyy myös valmiina statistics toolboxista, MUTTA... ÄLÄ KÄYTÄ SITÄ!! Miksi? Lisenssejä on liian vähän! http://www.cis.hut.fi/projects/somtoolbox Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 37
Miksi PCA? Jos PCA = SVD niin miksi siitä piti puhua? Koska SVD antaa aina origon kautta kulkevan vektorin. Datan keskittäminen pitää huolen siitä, että origo on datajoukon keskellä. Esimerkiksi harvalla datalla tämä ei ole ratkaisevaa; mutta joskus voi olla: Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 38
4 3 2 1 0 1 2 0 1 2 3 4 5 6 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 39
4 3 2 1 0 1 2 0 1 2 3 4 5 6 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 40
Yhteenveto Jokainen m n matriisi A, m n, ( voidaan ) kirjoittaa singulaariarvohajotelman avulla muotoon A = U V T, missä U R m m ja Σ 0 V R n n ovat ortogonaaliset, ja Σ R n n on diagonaalimatriisi, jonka diagonaalialkiot ovat singulaariarvot σ 1 σ 2... σ n 0. 2-normin mielessä paras astetta k oleva approksimaatio matriisille saadaan singulaariarvohajotelmaa käyttämällä: A k = U k Σ k Vk T, missä U k, V k koostuvat ksta ensimmäisestä vasemman- ja oikeanpuoleisesta singulaarivektorista ja Σ k :n diagonaalialkiot ovat k suurinta singulaariarvoa. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 41
Pääkomponenttianalyysi on sukua SVD:lle: pääkomponentit ovat keskitetyn datamatriisin oikeanpuoleiset singulaarivektorit. Pääkomponentit valitaan siten, että datan varianssista selittyy suurin osa. Ensimmäinen pääkomponentti on se vektori, jolle projisoidun datan varianssi on suurin. Laskemalla datamatriisille SVD tai PCA ja approksimoimalla matriisia muutaman ensimmäisen singulaarivektorin/pääkomponentin avulla kompressoidaan dataa ja poistetaan kohinaa. Nyt voidaan klusteroida/luokitella/tms uutta dataa. Myös muita menetelmiä löytyy: MDS, ICA, NMF... Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 42