Hierarkkinen ryvästäminen Juho Rousu Laskennallinen Data-Analyysi I, 20.2.2008
Ryvästyshierarkia & dendrogrammi Hierakkiset ryvästysmenetelmien tulos voidaan visualisoida nk. dendrogrammipuuna Puun lehtinä kaikki datapisteet eli yhden pisteen pisteryhmät Alhaalta ylöspäin edetessä yhdistetään lähimmät pisteryhmät toisiinsa; tässä pisteryhmien välinen etäisyys ryhmien kauimmaisten pisteiden etäisyys Vaakaviivat sijaitsevat etäisyydellä, jolla kytketyt pisteryhmät yhdistettiin x 2 6 4 2 9 0 7 8 2 4 6 3 1 2 6 5 4 kytkettyjen pisteryhmien välinen etäisyys 15 10 5 0 5 6 4 1 3 2 7 8 9
Ryvästysten eristäminen dendrogrammista Dendrogrammista voidaan eristää erilaisia ryvästyksiä valitsemalla suurin yhdistämisetäisyys sopivasti: d = 20 = K = 1, d = 10 = K = 2, d = 5 = K = 3, d = 0 = K = 9 Sama toimii myös päinvastoin: annettuna ryppäiden määrä, saadaan yhdistämisetäisyydelle ylä- ja alaraja x 2 6 4 2 9 0 7 8 2 4 6 3 1 5 0 5 10 x 1 2 6 5 4 kytkettyjen pisteryhmien välinen etäisyys 15 10 5 0 5 6 4 1 3 2 7 8 9 datapisteen indeksi
Miten valita ryppäiden määrä K? Hierarkkinen ryvästys ei vapauta meitä täysin ryppäiden määrän valinnan ongelmasta, mutta dendrogrammi auttaa tekemään informoidun valinnan. Vaihtoehtoja Leikataan etukäteen kiinnitellyllä etäisyystasolla d Leikataan kohdasta, jossa kahden peräkkäisen yhdistämisen etäisyyksien ero on suurin. d gap (t) = d t+1 d t Käytetään K :n keskiarvon ryvästyksen yhteydessä esiteltyjä kriteerejä (kyynärpääkriteeri, MDL,...)
Hierarkkiset ryvästämismenetelmät Hierarkkinen ryvästysalgoritmi voi olla joko Koostava (agglomerative), jolloin algoritmi muodostaa vähittäin yhä suurempia ryppäitä liittämällä toisiinsa lähekkäin olevia ryppäitä Osittava (divisive), jolloin algoritmi muodostaa vähittäin yhä pienempiä osittamalla löyhiä ryppäitä kahteen osaan esim. K -means -algoritmilla (K = 2)
Koostava hierarkkinen ryvästäminen Koostava hierarkkinen ryvästämisen alkutilanne on se, jossa kukin datapiste on oma ryppäänsä Ryppäiden yhdistäminen perustuu ryppäiden välisen etäisyyteen d(c i, C j ): joka vaiheessa toisiaan lähinnä olevat ryppäät yhdistetään Tavallisesti monotonisuusominaisuus on toivottava: d 1 d 2... d k, missä d t on askeleessa t yhdistettyjen ryppäiden etäisyys.
Algoritmi: koostava hierarkkinen ryvästäminen % alusta kukin esimerkki omaan ryppääseensä C i = {x i }, i = 1,..., n; % laske ryppäiden väliset etäisyydet taulukkoon D D ij = d(c i, C j ), i, j = 1,..., n while vähintään kaksi rypästä jäljellä do % etsi kaksi toisiaan lähinnä olevaa rypästä {i, j } = argmin {i,j C i,c j C} D ij; % liitä rypäs C j ryppääseen C i C i = C i C j ; C = C \ {C j }; % päivitä etäisyydet D i,k = d(c i, C k ), C k C, C k C i ; end while
Algoritmin aikavaativuus Joka iteraatiossa algoritmi liittää kaksi ryvästä toisiinsa, joten while-silmukka suoritetaan tasan n 1 kertaa, missä n on datapisteiden määrä Toisiaan lähinnä olevien ryppäiden löytämiseksi O(n 2 ) kokoinen ryppäiden pareittaisten etäisyyksien taulukko käydään kokonaan läpi joka askeleessa: O(n 3 ) etäisyysvertailua algoritmin suorituksen aikana tämä voidaan pudottaa aikaan O(n 2 log n) tai O(n 2 ) ryppäiden etäisyysfunktiosta riippuen Jos taulukoidaan ryppäiden pareittaiset etäisyydet, tarvitsee vain laskea uuden ryppään etäisyydet vanhoihin ryppäisiin, yhteensä O(n 2 ) etäisyyslaskuoperaatiota. nämä voidaan toteuttaa O(1) ajassa per operaatio
Ryppäiden etäisyysfunktiot (1/3) Etäisyysfunktiota vaihtamalla saadaan seuraavat variantit: Keskipisteryvästys (centroid clustering): d(c i, C j ) = d(r i, r j ), missä r i ryppään C i edustajavektori Lähinaapuriryvästys (nearest neighbor clusteting, single-link clustering): d(c i, C j ) = min d(x i, x j ) x i C i,x j C j Kauimmaisen naapurin ryvästys (complete-link clustering): d(c i, C j ) = max d(x i, x j ) x i C i,x j C j Keskimääräisen etäisyyden ryvästys (average-link clustering): d(c i, C j ) = 1 d(x i, x j ) (n i + n j )(n i + n j 1) x i,x j C i C j,x i x j
Ryppäiden etäisyysfunktiot (2/3) Visualisoituna lähinaapuriryvästys (a), kauimmaisen naapurin ryvästys (b), keskipisteryvästys (c) ja keskimääräisen etäisyyden ryvästys (d)
Ryppäiden etäisyysfunktiot (3/3) Ryppäiden etäisyysfunktion valinta vaikuttaa ainakin seuraaviin ominaisuuksiin: Syntyvien ryppäiden muoto Implementaatio/aikavaativuus Monotonisuus yhdistämisetäisyyden suhteen Optimaalisuus
Ryppäiden muoto Lähinaapuriryvästyksellä on taipumus tuottaa ketjumaisia ryppäitä Kauimmaisen naapurin ryvästys tuottaa kompakteja ryppäitä, mutta on sensitiivinen yksittäisten kaukana olevien pisteiden (outlier) suhteen Keskimääräisen etäisyyden ryvästys ja keskipisteryvästys ovat näiden kahden ääripään välissä
Ryvästyssimulaatio: Iris Tarkastellaan Iris-datan hierarkkista ryvästystä MATLAB:ssa funktioilla Y = pdist(x,etaisyys_tyyppi) - erimerkkien parietäisyydet Z = linkage(y,yhdistamis_tyyppi) - hierarkian rakentaminen dendrogram(z) - dendrogrammin piirtäminen
Algoritmi: koostava hierarkkinen ryvästäminen % alusta kukin esimerkki omaan ryppääseensä C i = {x i }, i = 1,..., n; % laske ryppäiden väliset etäisyydet taulukkoon D D ij = d(c i, C j ), i, j = 1,..., n while vähintään kaksi rypästä jäljellä do % etsi kaksi toisiaan lähinnä olevaa rypästä {i, j } = argmin {i,j C i,c j C} D ij; % liitä rypäs C j ryppääseen C i C i = C i C j ; C = C \ {C j }; % päivitä etäisyydet D i,k = d(c i, C k ), C k C, C k C i ; end while
Etäisyysfunktio & aikavaativuus Etäisyysfunktion ominaisuuksia voidaan hyödyntää Ryppäiden välisten parietäisyyksien nopeassa päivittämisessä Toisiaan lähinnä olevien ryppäiden löytämisessä nopeasti
Parietäisyyksien nopea päivitys Tarkastellaan etäisyyksien D ik, k j päivitystä kun ryppääseen C i on liitetty C j : C i = C i C j Seuraaville etäisyyksille päivitys voidaan tehdä O(1) ajassa taulukoitujen etäisyyksien D ik, D jk perusteella: Lähinaapuri: D ik = min(d ik, D jk ) Kauimmainen naapuri: D ik = max(d ik, D jk ) Keskimääräinen etäisyys: D ik = 1 (p p ik D ik ijk + p jk D jk + p ij D ij p i D ii p j D jj p k D kk ), missä kertoimet p k, p ik ja p ijk ovat ryppäiden C k, C i C k ja C i C j C k sisältäminen esimerkkiparien määrät. Entä keskipisteryvästys? Luennoija ei heti keksinyt O(1) päivitystä, mutta sellainen voi silti olla olemassa...
Yhdistettävän parin nopea etsintä Talletetaan kunkin ryppään etäisyydet muihin ryppäisiin prioriteettijonoon (esim. kekorakenne) O(1) ajassa löydetään (keon päältä) tiettyä rypästä lähinnä oleva rypäs ja vastaava etäisyys O(log n) ajassa kunkin keon päivitys, yhteensä O(n log n) aika per iteraatio Koko algoritmin aikana kuluu aikaa O(n 2 log n)
Yhdistämisetäisyyden monotonisuus Hierakkinen ryvästysmenetelmä on monotoninen, jos algoritmin suorituksen aikana yhdistämisetäisyyksien jono on ei-vähenevä d 1 d 2 d N 1 Ei-monotonisen menetelmän tuottama dendrogrammi voi sisältää inversioita, jotka ilmenevät ristikkäin menevinä kaarina
Keskipisteryvästäminen ei ole monotoninen Kuvassa pisteet d 1 = (1 + ɛ, 1), d 2 = (5, 1), on yhdistetty etäisyydellä 4 ɛ, mutta piste d 3 = (3, 1 + 2 3) ja ensimmäisen ryppään keskipiste o = (3 + ɛ/2, 1) yhdistetään etäisyydellä 2 3 + ɛ/2 3.4641 + ɛ/2 Keskipisteryvästäminen (centroid clustering) ei siis ole monotoninen menetelmä Sen sijaan voidaan osoittaa, että lähi- ja kauimmaisen naapurin ryvästäminen sekä keskimääräisen etäisyyden ryvästäminen ovat monotonisia
Ryvästyksen optimaalisuus Ryppään C yhdistämisetäisyys d(c) on pienin etäisyys, jolla C voidaan muodostaa kahdesta osasta C, C Tämä etäisyys riippuu ainostaan käytetystä etäisyysmitasta, ei menetelmästä Ryvästyksen yhdistämisetäisyys määritellään ryppäiden yhdistämisetäisyyden maksimina d(c) = max K k=1 d(c k) Hierakkisesti muodostettu ryvästys C = {C 1,..., C K } on optimaalinen, jos d(c) d(c ) kaikilla C, C K ts. ei ole olemassa ryävstystä, jossa on korkeintaan saman verran ryppäitä ja pienempi yhdistämisetäisyys
Monotonisuus vs. optimaalisuus Monotonisuus ja optimaalisuus mittaavat ryvästysmenetemästä hieman eri ominaisuutta Monotonisuus tarkoittaa, että algoritmin edetessä yhdistämisetäisyys ei koskaan vähene (dendrogrammissa ei ole ristiin meneviä kaaria) Optimaalisuus tarkoittaa, että ryvästyksen (suurin) yhdistämisetäisyys on mahdollisimman pieni (dendrogrammi on mahdollisimman matala)
Ryvästysmenetelmien optimaalisuus Voidaan osoittaa, että lähinaapuriryvästys on optimaalinen (todistus sivuutetaan) Kauimmaisen naapurin, keskimääräisen etäisyyden ja keskiarvoryvästysmenetelmät eivät sen sijaan ole optimaalisia
Ryppään yhdistämisetäisyydet eri menetelmissä Ryppäiden yhdistämisetäisyydet voidaan tyypillisesti lukea suoraan ryyppäistä, muodostushistoriaa tuntematta Lähinaapuriryvästys: d(c) = max C C min x C,x C C d(x, x ) Kauimmaisen naapurin ryvästys: d(c) = max x,x C d(x, x ) Keskimääräisen etäisyyden ryvästys: 1 C ( C 1) x x d(x, x );
Kauimmainen naapuri ja keskimääräinen etäisyys eivät tuota optimaalista ryvästystä Kauimmaisen naapurin ja keskimääräisen etäisyyden ryvästysmenetelmät eivät ole optimaalisia, mikä nähdään alla olevasta esimerkistä Molemmat algoritmit liittävät ensin toisiinsa pisteet etäisyydellä 1 (d 2 ja d 3 ) ja päätyvät kahden ryppään ryvästykseen {{d 1, d 2, d 3 }, {d 4 }} tai {{d 1 }, {d 2, d 3, d 4 }}. Optimaalinen ryvästys molemmissa tapauksissa {{d 1, d 2 }, {d 1, d 2 }}, Yhdistämisetäisyys kauimmaisen naapurin menetelmällä 4 (optimi 3) keskimääräisen etäisyyden menetelmällä (1 + 3 + 4)/3 = 2.5 (optimi 1.5)
Keskipisteryvästys ei ole optimaalinen Keskipisteryvästämisen epäoptimaalisuus nähdään kuvan esimerkistä Kuvassa pisteet d 1 = (1 + ɛ, 1), d 2 = (5, 1), on yhdistetty etäisyydellä 4 ɛ, joka on myös ryvästyksen {{d 1, d 2 }, {d 3 }} (K = 2) yhdistämisetäisyys Ryvästyksen {{d 1, d 2, d 3 }} (K=1) yhdistämisetäisyys on d({{d 1, d 2, d 3 }}) = 3.46 < 4 ɛ eli pienempi määrä ryppäitä saadaan pienemmällä yhdistämisetäisyydellä
Hierarkkiset kokoavat ryvästysmenetelmät: yhteenveto menetelmä aikavaativuus opti- kommentti maalinen? lähinaapuri O(n 2 ) on ketjumaiset ryppäät kauimmainen pari O(n 2 ) log n ei 'outlier'-herkkä keskimääräinen etäisyys O(n 2 ) log n ei useimmiten hyvä keskipiste O(n 2 ) log n ei ei-monotoninen
Hierarkkinen vs. K -keskiarvon ryvästys K -means on nopea (O(nK)), epädeterministinen ja vaatii kiinteän ryppäiden määrän Hierarkkiset menetelemät ovat raskaampia (O(n 2 ) O(n 2 log n)), deterministisiä ja antavat paremmat työkalut ryppäiden määrän valintaan
LOPPU to 21.2.2008: kertausta pe 22.2.2008: viimeiset laskuharjoitukset ti 26.2.2008: klo 9-12 sali A111: kurssikoe