Laskennallinen data-analyysi II Saara Hyvönen, Saara.Hyvonen@cs.helsinki.fi Kevät 2007 Muuttujien valinta Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto
Korkeiden ulottuvuuksien kirous Opitaan yksi- ja kaksiulotteisen tasajakautuneen datan jakauma näytteistä jakamalla akselit 100:n osaan ja laskemalla osumat kussakin laatikossa: n=100000, 1D n=100000, 2D Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 1
keskimääräinen neliöllinen etäisyys tasajakaumasta näytteiden määrä n yksiulotteinen kaksiulotteinen 100 1.06 10 0 1.01 10 2 1000 1.09 10 1 1.03 10 1 10000 1.23 10 2 1.00 10 0 100000 1.17 10 3 1.03 10 1 1000000 9.45 10 5 1.02 10 2 10000000 1.09 10 5 1.02 10 3 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 2
Korkeiden ulottuvuuksien kirous korkeaulotteisilla avaruuksilla monia epäintuitiivisia ominaisuuksia edellisessä esimerkissä, jos halutaan saavuttaa sama estimointitarkkuus kahdessa kuin yhdessä ulottuvuudessa, tarvitaan satakertainen määrä näytevektoreita oppimiseen jos lisätään dimensioiden määrää, niin samaan tarkkuuteen tarvittavien näytevektorien määrä kasvaa eksponentiaalisesti! Korkeaulotteinen data aiheuttaa ongelmia! Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 3
Halutaan siis vähentää dimensioita, mutta miten? Kaksi peruslähestymistapaa: heitetään muuttujia pois, tai muodostetaan uusia muuttujia. Tarkemmin sanoen, voidaan joko muodostaa uusia muuttujia vain datan perusteella, oppimistehtävästä riippumatta (filter), tai valita uudet muuttujat oppimistehtävän avulla (wrapper). 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. Piilomuuttujat = uudet kantavektorit voivat olla vaikkapa (oikeanpuoleiset) singulaarivektorit, tai pääkomponentit. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 5
Kertausta Singulaariarvohajotelma (SVD): Jokainen m n matriisi A, m n, voidaan kirjoittaa singulaariarvohajotelman avulla muotoon A = U ( ) Σ V T, 0 missä U R m m ja V R n n ovat ortogonaaliset, ja Σ R n n on diagonaalimatriisi, jonka diagonaalialkiot ovat singulaariarvot σ 1 σ 2... σ n 0. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 6
Kertausta 2-normin mielessä paras astetta k oleva approksimaatio matriisille saadaan singulaariarvohajotelmaa käyttämällä: A k = U k Σ k V T k, 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 7
Edellisestä seuraa, että Matriisin A paras approksimaatio jonka aste (rank) on yksi on A k = U 1 Σ 1 V T 1 = σ 1 u 1 v T 1. Jos σ 1 σ 2... σ j > σ j+1 = 0 = σ j+2 =... = σ m, niin min rank(b) j A B 2 = A A j 2 = σ j+1 = 0. Matriisin A aste on nollasta poikkeavien singulaariarvojen lukumäärä! Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 8
Esimerkki (SVD): asiakas \ viikonpäivä Ke To Pe La Su ABC Oy 1 1 1 0 0 CDE Ky 2 2 2 0 0 FGH Yhtymä 1 1 1 0 0 NOP Oy 5 5 5 0 0 Virtanen 0 0 0 2 2 Jokinen 0 0 0 3 3 Laine 0 0 0 1 1 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 9
1 1 1 0 0 2 2 2 0 0 1 1 1 0 0 5 5 5 0 0 0 0 0 2 2 0 0 0 3 3 0 0 0 1 1 = 0.18 0 0.36 0 0.18 0 0.90 0 0 0.53 0 0.80 0 0.27 ( ) 9.64 0 0 5.29 ( 0.58 0.58 0.58 0 0 ) 0 0 0 0.71 0.71 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 10
Lisää kertausta 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. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 11
SVD/PCA esikäsittelynä Ilmaistaan datamatriisi A (rivit pisteitä, sarakkeet muuttujia) uudessa singulaarivektorien tai pääkomponenttien V määrittämässä kannassa: A m n = D m k V k n. Nyt matriisin D rivit ovat pisteiden koordinaatit uudessa kannassa: siis kohdellaan näitä pisteinä, ja klusteroidaan/luokitellaan niitä! Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 12
Esimerkki: spatiaalisen datan analysointi Data: Suomen murteet, noin 17000 sanaa, 500 kuntaa. Kunta-sana-matriisi A: A(j, i) = { 1 jos sana i esiintyy kunnassa j 0 muutoin. lasketaan SVD ja klusteroidaan sitten käyttäen 30 singulaarivektoria SVD:n laskeminen vie aikansa, mutta tämän jälkeen kaikki nopeaa Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 13
Esimerkki: spatiaalisen datan analysointi 9 760 8 7 740 6 720 5 700 4 3 680 2 660 320 330 340 350 360 370 1 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 14
Siis mitä klusteroitiin? Lasketaan datamatriisille A singulaariarvohajotelma: A k = U k Σ k V T k, (ensimmäiset k singulaariarvoa/vektoria riittää). Singulaarivektorit V k antavat uuden kannan, ja datan koordinaatit uudessa kannassa on D = U k Σ k. Jokainen matriisin D rivi vastaa kuntaa, eli klusteroidaan siis rivit (esim. k-means). Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 15
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 16
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 17
Mutta oikeasti ei ollakaan kiinnostuneita vuodenajasta, vaan meillä onkin luokittelutehtävä: erota spontaanin hiukkasmuodostuksen päivät sellaisista, jolloin kyseistä ilmiötä ei havaita. Tässä pääkomponentit eivät ole kovin hyviä: Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 18
30 Days projected in the plane defined by the first two principal component, colored according to particle formation 25 20 2nd principal component 15 10 5 0 5 10 10 5 0 5 10 15 1st principal component Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 19
Toisaalta: päivät kyllä erottuvat melko hyvin, kun katsoo oikealla tavalla. 110 100 90 80 70 RH 60 50 40 30 20 8.5 8 7.5 7 6.5 6 5.5 5 4.5 4 3.5 logarithm of condensation sink Mutta miten nuo oikeat muuttujat löytyvät? Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 20
Askeltavat menetelmät Eteenpäin askeltava muuttujanvalinta (forward stepwise selection of variables) - valitaan muuttujat ahneesti: Lasketaan luokitteluvirhe jokaiselle muuttujalle erikseen. Valitaan se muuttuja, jolla luokitteluvirhe pienin. Tämän jälkeen joka askeleella lisätään se muuttuja, joka yhdessä jo valittujen muuttujien kanssa antaa pienimmän luokitteluvirheen. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 21
Ilmakehäesimerkissä valitut muuttujat: Muuttujavalinnan tulokset kahdelle erilliselle valintatapahtumalla sekä luokitteluvirhe (%). Alussa valitut muuttujat samat, sen jälkeen vaihtelua. Virhekään ei enää pienene samaa vauhtia. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 22
Ilmakehäesimerkissä valitut muuttujat: Set 1 Set 2 variable error variable error RH high mean 17.8 RH high mean 17.5 logcs mean 12.1 logcs mean 12.4 T high std 12.3 SO 2 high std 12.0 logcs std 11.8 momflux std 11.1 CO 2 high mean 11.1 O 3 high std 11.0 O 3 high std 10.8 SWS std 10.7 RH high std 10.6 O 3 high mean 10.7 WS high mean 10.5 SO 2 high mean 10.8 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 23
Ilmakehäesimerkissä valitut muuttujat: Jos tehdään ensin PCA, ja askelletaan sitten, on virhe tämännäköinen: #of P C 1 2 3 4 5 6 7 8 9 10 Error 0.28 0.23 0.18 0.14 0.13 0.13 0.13 0.13 0.12 0.11 Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 24
Askeltavat menetelmät Huomaa, että askeltava menetelmä ei ole sidottu luokittelutehtäviin; se soveltuu mihin tahansa ohjatun oppimisen tehtävään, esimerkiksi regressioon. Tarvitaan vain virhe-estimaatti. Yleisesti ottaen eteenpäin askeltava muuttujanvalinta (forward stepwise selection of variables) toimii valitsemalla muuttujat ahneesti: 1. Lasketaan virhe-estimaatti jokaiselle muuttujalle erikseen. 2. Valitaan se muuttuja, jolla virhe pienin. 3. Tämän jälkeen joka askeleella lisätään se muuttuja, joka yhdessä jo valittujen muuttujien kanssa antaa pienimmän virhe-estimaatin. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 25
Askeltavat menetelmät Taaksepäin askeltava muuttujanvalinta (backwards stepwise selection of variables) toimii tietysti päinvastoin: Liikkeelle lähdetään ottamalla mukaan kaikki muuttujat. Joka askeleella lasketaan virhe-estimaatit jättämällä pois jäljellä olevista muuttujista yksi kerrallaan. Valitaan pois jätettävä muuttuja siten, että jäljellä olevan muuttujajoukon antama virhe pienin. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 26
Miksi? Jos ollaan kiinnostuneita luokittelusta, ei muuttujanvalintaan usein kannata käyttää esim. maksimaalista varianssia! miksei sitten käytetä koko dataa? hitaus, ylisovitus, tulkittavuus Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 27
Virheen estimointi Jos ensin käytetään koko datajoukko oppimiseen, ja sitten estimoidaan oppimisvirhettä samassa datajoukossa, on virhe-estimaatti usein liian optimistinen. Ylisovitus koituu helposti ongelmaksi. Käypä ratkaisu tähän on jakaa data kahteen osaan, treenijoukkoon ja validointijoukkoon: malli sovitetaan treenijoukossa; virhe estimoidaan validointijoukossa. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 28
Virheen estimointi Jos näin sovitetaan monta mallia, voi malli ylisovittua validointijoukkoon. Tällöin voidaan jakaa data kolmeen osaan: malli sovitetaan treenijoukossa, virhe estimoidaan validointijoukossa, se malli jonka virhe on pienin valitaan, ja valitun mallin virhe estimoidaan testijoukossa. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 29
train validate test Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 30
Mutta mitä jos dataa on vähän? Virheen estimointi Halutaan käyttää paljon dataa mallin muodostamiseen, jotta saadaan hyvä malli. Mutta jos validointijoukko on pieni, antaa se melko kohinaisen estimaatin virheelle. Ratkaisuna tähän: ristiinvalidointi! Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 31
Ristiinvalidointi Jaetaan datajoukko S:n yhtä suureen osaan. Käytetään näistä S 1 kpl mallin muodostamiseen ja 1 kpl virheen estimointiin. Tämä toistetaan S kertaa siten, että kukin joukko vuorollaan on validointijoukkona. Lopullinen virhe-estimaatti on näiden S:n virhe-estimaatin keskiarvo. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 32
train train train test 1st round train train test train 2nd round train test train train 3rd round test train train train 4th round Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 33
Leave one out Ristiinvalidoinnissa jaetaan datajoukko S:n yhtä suureen osaan ja käytetään näistä S 1 kpl mallin muodostamiseen ja 1 kpl virheen estimointiin. Tämä toistetaan S kertaa siten, että kukin joukko vuorollaan on validointijoukkona, ja lasketaan virheiden keskiarvo. Jos S=pisteiden lukumäärä datajoukossa, on kyseessä leave one outmenetelmä: yhtä pistettä vuorollaan käytetään validointiin ja loppuja mallin sovitukseen. Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 34
Ristiinvalidointi Ristiinvalidoinnissa jaetaan datajoukko S:n yhtä suureen osaan ja käytetään näistä S 1 kpl mallin muodostamiseen ja 1 kpl virheen estimointiin - mutta miten S kannattaa valita? Jos S=pisteiden lukumäärä datajoukossa, on treenijoukko joka kierroksella suuri eli opitaan hyvin, mutta virheen estimoimiseen jää vain yksi piste per kierros. Jos S on pienehkö, ja dataa muutenkin vähän, voi virhearvio olla aika pessimistinen. Yleinen käytäntö: S = 5 (fivefold cross-validation) tai 10 (tenfold crossvalidation). Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 35
Projektityö Wisconsin breast cancer data set Tehtävä: luokittele data annettuun kahteen luokkaan käyttäen (a) koko dataa (b) eteenpäin askeltavaa muuttujavalintaa (c) PCA + (b). Käytä virheen estimoimiseen ristiinvalidointia. Vertaa eri kohdissa saatuja luokitteluvirheitä. Montako muuttujaa valitset? Voit myös katsoa mitkä pääkomponentteja. Löytyykö niille tulkinta? Mitä esim. 1. pc kertoo? Laskennallinen data-analyysi II, kevät 2007, Helsingin yliopisto 36