Sovellusohjelmointi Matlab-ympäristössä: Vertaisverkon koneiden klusterointi

Samankaltaiset tiedostot
Laskennallinen data-analyysi II

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

perusjoukosta (esim. tietyn kokoisten digitaalikuvien joukko).

Lineaarialgebra ja matriisilaskenta I, HY Kurssikoe Ratkaisuehdotus. 1. (35 pistettä)

Ratkaisuehdotukset LH 3 / alkuvko 45

Laskennallinen data-analyysi II

Talousmatematiikan perusteet: Luento 14. Rajoittamaton optimointi Hessen matriisi Ominaisarvot Ääriarvon laadun tarkastelu

Etsintä verkosta (Searching from the Web) T Datasta tietoon Heikki Mannila, Jouni Seppänen

Laskennallinen data-analyysi II

Moniulotteisia todennäköisyysjakaumia

Ilkka Mellin Todennäköisyyslaskenta Osa 3: Todennäköisyysjakaumia Moniulotteisia todennäköisyysjakaumia

Luku 4. Vektoridatan tiivistäminen

Talousmatematiikan perusteet: Luento 13. Rajoittamaton optimointi Hessen matriisi Ominaisarvot ja vektorit Ääriarvon laadun tarkastelu

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Visualisointi kansanedustajista neljässä eri ulottuvuudessa

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

Tämän luennon sisältö. Luku 4. Vektoridatan tiivistäminen. Datamatriisi (2) Datamatriisi. T Datasta tietoon, syksy 2011

Poikkeavuuksien havainnointi (palvelinlokeista)

Vektoreiden virittämä aliavaruus

Oppimistavoitematriisi

Ortogonaaliset matriisit, määritelmä 1

Moniulotteisia todennäköisyysjakaumia. Moniulotteisia todennäköisyysjakaumia. Moniulotteisia todennäköisyysjakaumia: Mitä opimme?

Matemaattinen Analyysi / kertaus

jens 1 matti Etäisyydet 1: 1.1 2: 1.4 3: 1.8 4: 2.0 5: 3.0 6: 3.6 7: 4.0 zetor

Demo 1: Simplex-menetelmä

Malliratkaisut Demot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 5 / vko 48

Matriisilaskenta (TFM) MS-A0001 Hakula/Vuojamo Ratkaisut, Viikko 47, 2017

Harjoitus 3 ( )

Ratkaisuehdotukset LH 7 / vko 47

Harjoitus 7: NCSS - Tilastollinen analyysi

Etsintä verkosta (Searching from the Web) T Datasta tietoon Jouni Seppänen

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Ortogonaalisen kannan etsiminen

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Arvostus Verkostoissa: PageRank. Idea.

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Paikkatiedon käsittely 11. Suuren mittakaavan

Oppimistavoitematriisi

Ominaisarvoon 4 liittyvät ominaisvektorit ovat yhtälön Ax = 4x eli yhtälöryhmän x 1 + 2x 2 + x 3 = 4x 1 3x 2 + x 3 = 4x 2 5x 2 x 3 = 4x 3.

Paretoratkaisujen visualisointi

Laskennallinen data-analyysi II

Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi. Esimerkit laskettu JMP:llä

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

Johdatus verkkoteoriaan 4. luento

11. Javan toistorakenteet 11.1

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Sisätuloavaruudet. 4. lokakuuta 2006

12. Javan toistorakenteet 12.1

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

1 Kannat ja kannanvaihto

Esimerkki: Tietoliikennekytkin

Inversio-ongelmien laskennallinen peruskurssi Luento 7 8

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

Oma nimesi Tehtävä (5)

Seuraavassa taulukossa on annettu mittojen määritelmät ja sijoitettu luvut. = 40% = 67% 6 = 0.06% = 99.92% 6+2 = 0.

Matriisi-vektori-kertolasku, lineaariset yhtälöryhmät

Ohjelmoinnin perusteet Y Python

SAS/IML käyttö ekonometristen mallien tilastollisessa päättelyssä. Antti Suoperä

ominaisvektorit. Nyt 2 3 6

Numeeriset menetelmät TIEA381. Luento 8. Kirsi Valjus. Jyväskylän yliopisto. Luento 8 () Numeeriset menetelmät / 35

Matemaattiset ohjelmistot 1-2 ov, 2-3 op

Näillä sivuilla Tilastomatematiikan esimerkit, joissa käsitellään tietokoneen käyttöä tilastollissa operaatioissa, on tehty Excel versiolla.

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

MS-A0003/A Matriisilaskenta Laskuharjoitus 6

Matriisihajotelmat. MS-A0007 Matriisilaskenta. 5.1 Diagonalisointi. 5.1 Diagonalisointi

Yhteenlaskun ja skalaarilla kertomisen ominaisuuksia

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Harjoitus 3 ( )

12. Javan toistorakenteet 12.1

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

1. Lineaarialgebraa A := Matriisin osia voidaan muutella päivittämällä riviä, saraketta tai osamatriisia (Matlabmaisesti): B :=

Latinalaiset neliöt ja taikaneliöt

Insinöörimatematiikka D

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

Päättelyn voisi aloittaa myös edellisen loppupuolelta ja näyttää kuten alkupuolella, että välttämättä dim W < R 1 R 1

Lineaarialgebra ja matriisilaskenta I

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin

Katsaus konepellin alle - iteratiivisia menetelmiä ominaisarvotehtävälle

Johdatus todennäköisyyslaskentaan Moniulotteisia todennäköisyysjakaumia. TKK (c) Ilkka Mellin (2005) 1

Esimerkki 19. Esimerkissä 16 miniminormiratkaisu on (ˆx 1, ˆx 2 ) = (1, 0).

Vektorien virittämä aliavaruus

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

Ratkaisuehdotukset LH 10 / vko 48

Ratkaisuehdotukset LH 8 / vko 47

Lineaarialgebra ja matriisilaskenta II Syksy 2009 Laskuharjoitus 1 ( ) Ratkaisuehdotuksia Vesa Ala-Mattila

Relevanttien sivujen etsintä verkosta: satunnaiskulut verkossa Linkkikeskukset ja auktoriteetit (hubs and authorities) -algoritmi

Algoritmit 1. Luento 9 Ti Timo Männikkö

Rinnakkaistietokoneet luento S

Tietorakenteet ja algoritmit

OPISKELIJAN OPINNOT -NÄYTTÖ. Opiskelijan opintosuoritustietoja katsellaan Opiskelijan opinnot -näytöltä. Näyttö löytyy päävalikosta Opinnot.

Numeeriset menetelmät TIEA381. Luento 5. Kirsi Valjus. Jyväskylän yliopisto. Luento 5 () Numeeriset menetelmät / 28

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

ITKP102 Ohjelmointi 1 (6 op)

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

ITKP102 Ohjelmointi 1 (6 op)

Transkriptio:

Sovellusohjelmointi Matlab-ympäristössä: Vertaisverkon koneiden klusterointi 28.4.2013 Annemari Auvinen (annauvi@st.jyu.fi) Anu Niemi (anniemi@st.jyu.fi)

1 Sisällysluettelo 1 JOHDANTO... 2 2 KÄYTETYT MENETELMÄT... 3 2.1 KMEANS-ALGORITMI... 3 2.2 PÄÄKOMPONENTTIANALYYSI (PCA)... 4 3 DATA-AINEISTO... 5 4 TOTEUTUKSESTA... 6 4.1 KMEANS... 6 4.2 PCA... 6 4.3 DISTANCE-FUNKTIO... 7 4.4 UI... 7 5 TULOSTEN ESITTELY JA JOHTOPÄÄTÖKSET... 8 LÄHTEET... 9

2 1 Johdanto Työmme aiheena oli Chedar-vertaisverkossa olevien koneiden luokittelu käyttäen Kmeans-algoritmia ja lisäksi havaintoavaruuden dimension pienentäminen pääkomponenttianalyysilla luokittelun tulosten esittämiseksi graafisesti. Chedar on resurssien etsintään kehitetty vertaisverkkoalusta, jossa verkon koneet kommunikoivat keskenään ilman keskitettyä pistettä. Chedar on Agora Centerin Cheese Factory projektin tuotos ja tätä työtä voidaan mahdollisesti käyttää hyväksi projektin myöhemmissä tutkimuksissa. Kmeans-algoritmista tehtiin C-kielellä Matlabin mex-funktio. David Corneyn Matlabtoteutusta käytettiin mex-toteutuksen oikeellisuuden testaukseen [2]. Työssämme klusteroimme data-aineiston kummallakin toteutuksella ja vertailemme graafisesti näin saatuja tuloksia keskenään.

3 2 Käytetyt menetelmät 2.1 Kmeans-algoritmi Kmeans tunnetaan myös yleistettynä Lloyd-algoritmina tai Linde-Buzo-Gray (LBD) - algoritmina.[1] Kmeans-algoritmi jakaa havainnot eli data-aineiston luokkakeskipisteiden eli prototyyppien kesken siten, että kuhunkin luokkaan kuuluvat ne pisteet, jotka ovat sitä lähinnä. Kukin prototyyppi siis kaappaa osan havaintoavaruudesta itselleen, muodostaen nk. Voronoi-jaotuksen. [1] Kuva 1: Kuvassa data-aineisto jakautuu kolmeen ryppääseen. Yleisesti jako on harvoin selkeä, koska kaikkia data-aineiston alkioita ei voida yksiselitteisesti määrätä kuuluvaksi johonkin ryppääseen. Käytimme työssämme seuraavaa Kmeans-algoritmia: [1] 1. Alusta satunnaisesti (t=1) ( t) w X, j rand(1,..., n), i (1,..., k) i j 2. Voronoi kuuluvuudet ryppäille ( t) S { l 1 l n, d( X, w ) d( X, w i 3. Laske keskipisteet n ( t 1) 1 wi X l, l Si, j, i (1,..., k) # Si j 1 4. Lopetetaan, jos ehto ( t 1) ( t) i wi wi, i (1,..., k) täyttyy, muuten t = t+1 ja jatketaan kohdasta 2. l i l ( t) j ) j 1,..., k, j i}, i=1,, k

4 Algoritmissa X on data-aineiston sisältävä n*m matriisi, jonka riviin j viitataan algoritmissa X j. K on haluttu klustereiden lukumäärä ja w on k*m matriisi, jossa on klustereiden keskipisteet. Alussa keskipisteiksi alustetaan satunnaisesti valitut dataaineiston alkiot. Tämän jälkeen data-aineiston alkiot jaetaan ryppäiksi niin, että kukin data-aineiston alkio kuuluu sitä lähinnä olevan keskipisteen identifioimaan ryppääseen. K*n kokoinen S-matriisi sisältää tiedon siitä, mihin ryppääseen kukin data-aineiston alkio kuuluu. S-matriisissa rivinumero kertoo klusterin keskipisteen rivin w-matriisissa ja alkion arvo ryppääseen kuuluvan data-alkion rivin X-matriisissa. Seuraavaksi lasketaan kullekin ryppäälle uusi keskipiste ja verrataan uusia keskipisteitä vanhoihin keskipisteisiin. 2.2 Pääkomponenttianalyysi (PCA) Pääkomponenttianalyysissa (Principal Components Analysis) data-avaruuteen määritellään uudet muuttujat, ja data esitetään uusien muuttujien lineaarikombinaationa. PCA:n avulla selvitetään, mikä havaintoaineistosta on olennaista ja tärkeää informaatiota. Tavoitteena on siis vähentää havaintoavaruuden dimensiota niin, että mahdollisimman vähän informaatiota menetetään. [1], [3] Analyysissa lasketaan kovarianssimatriisin ominaisarvot ja niitä vastaavat ominaisvektorit. Pääkomponentit on tapana järjestää merkittävimmästä (suurimmasta) vähiten merkittävään (pienimpään) ominaisarvojen mukaan. Suurinta ominaisarvoa edustava komponenttia sisältää muita enemmän informaatiota jakaumasta ja pienin taas vähiten. Pääkomponentit ovat aina keskenään ortogonaalisia. Valitsemalla joukko suurimpia ominaisarvoja ja niitä vastaavia ominaisvektoreita saadaan pääkomponenttien virittämä aliavaruus (eli pääaliavaruus). [1], [3] Kuva 2: Vasemmanpuoleisessa kuvassa havaintoavaruuden dimensio on pudotettu kahdesta yksiulotteiseksi, oikeanpuoleisessa kolmesta kahteen. Lasketuista ominaisvektoreista valitaan haluttu määrä pääkomponetteja, joista muodostetaan matriisi V. Merkitään datamatriisia X:llä. Datan projisointi kannan V suhteen saadaan laskemalla Y = X*V.

3 Data-aineisto Data-aineisto luetaan tekstimuotoisesta tiedostosta, jossa vertaisverkon koneiden tiedot on riveittäin ja arvot on eroteltu välilyönnein. Kustakin koneesta on tiedostoon kerätty seuraavat arvot: Naapurien lukumäärä, koneelta lähtevien kaikkien yhteyksien pienin viive millisekunteina, koneen kautta kulkevan resurssikyselyliikenteen määrä kilotavuina, resurssikyselyihin lähetettyjen vastausten lukumäärä sekä tarjolla olevien resurssien lukumäärä. Esimerkiksi kymmenen koneen tiedot sisältävä tiedosto voisi olla seuraavanlainen. 2 448 3067 1 5 5 401 9201 25 16 2 409 1851 9 8 3 403 4210 2 10 2 401 2316 5 3 1 426 4210 6 12 2 403 6161 7 9 1 489 0 1 2 1 478 1890 15 11 5

6 4 Toteutuksesta Työssämme toteutimme kolme funktiota: Kmeans, PCA sekä tulosten vertailussa käytetyn etäisyyksiä laskevan distance-funktion. Näiden lisäksi toteutimme myös käyttöliittymän. 4.1 Kmeans [centres,classes]=kmeans(k,data) Tekemällemme C-kieliselle Kmeans-funktiolle viedään parametreina klustereiden lukumäärä k sekä data-aineisto matriisissa data. Funktio on toteutettu luvussa 2.1 mainitun algoritmin mukaisesti. Se palauttaa klustereiden keskipisteet centresmatriisissa sekä matriisin classes, joka sisältää tiedon siitä, mihin luokkaan kukin data-alkio kuuluu. Algoritmin suorituksen lopetusehtona on epsilon, jonka arvoksi on määritetty 0.0001. Funktiomme toteuttaa mex-rajapinnan: void mexfunction(int nlhs, mxarray *plhs[],int nrhs, const mxarray *prhs[]) Parametri nlhs kertoo ulostulevien parametrien lukumäärän. *plhs[] on osoitin ulostuleviin parametreihin. Parametri nrhs kertoo sisääntulevien parametrien lukumäärän ja *prhs[] on osoitin näihin sisääntuleviin parametreihin. [classes,centres,finaldistance]=dckmeans(data,k,initcentr es,maxiters) Corneyn funktio tarvitsee parametreina data-matriisin sekä klustereiden lukumäärän k. Lisäksi sille voidaan tarvittaessa viedä matriisi initcentres, jossa on alkuarvaus keskipisteistä sekä iteraatioiden maksimilukumäärä maxiters. Funktio palauttaa classes-matriisissa tiedon siitä, mihin luokkaan kukin data-aineiston alkio kuuluu, centres-matriisissa luokkien keskipisteet sekä finaldistancematriisissa kunkin alkion etäisyyden keskipisteestä. Corneyn funktion lopetusehtona on iteraatioiden maksimimäärä, joka on oletuksena alustettu 500. [2] 4.2 PCA [z]=pca(data) PCA-funktion parametrina on käsiteltävä datamatriisi data, jossa on oltava vähintään kolme saraketta. Mikäli sarakkeita on vähemmän, tulostuu virheteksti ja funktion suoritus lopetetaan. Datasta lasketaan ensin kovarianssimatriisi, josta lasketaan ominaisarvot ja niitä vastaavat ominaisvektorit. Kolmesta suurimmasta pääkomponentista muodostetaan oma matriisi z, jonka funktio palauttaa.

7 4.3 Distance-funktio [dist]=distance(a,b) Distance-funktiolle viedään parametreina keskipisteet sisältävät matriisit a ja b. Funktio järjestää matriisien rivit suuruusjärjestykseen käyttäen Matlabin sortrowskomentoa ja tämän jälkeen laskee keskipistematriisin kunkin alkion etäisyyden toisen matriisin vastaavasta alkiosta ja palauttaa tuloksen matriisissa dist. 4.4 UI Teimme työtämme varten yksinkertaisen graafisen käyttöliittymän. Käyttöliittymässä käyttäjä saa valita tiedoston, josta data-aineisto luetaan sekä määritellä klustereiden lukumäärän. Klusteroinnin ja pääkomponenttianalyysin suorittamisen jälkeen käyttöliittymään piirtyy vierekkäin kummankin Kmeans-funktion antamat klustereiden keskipisteet ja data projisoituina pääkomponenttiakseleille.

8 5 Tulosten esittely ja johtopäätökset Corneyn Kmeans-funktiosta löysimme virheen. Se ei ottanut huomioon, että on mahdollista, että klusteriin kuuluu vain yksi piste. Funktio laski tässä tapauksessa klusterin keskipisteen väärin. Ohjelmassamme käytimme toteutusta, josta tämä virhe korjattiin. Lisäksi mielestämme funktiossa oli se epäkohta, että iteraatioiden maksimilukumäärää ei voinut asettaa, jos ei vienyt myös alkuarvausta. Kokeilimme ohjelmaa myös asettamalla koodissa olevan lukumäärän suuremmaksi. Sekä meidän että Corneyn Kmeans-funktiot antoivat samat arvot, jos meidän funktion antamat keskipisteet vietiin alkuarvauksena Corneyn funktiolle. Mikäli Corneyn funktiolle ei viety alkuarvauskeskipisteitä, funktiot saattoivat antaa vastauksena myös eri keskipisteet. Suorittamalla ohjelma useampia kertoja peräkkäin oli havaittavissa keskipisteiden heiluntaa myös saman funktion sisällä. Heilunnalla tarkoitamme sitä, että keskipisteille saattoi tulla suorituskerroilla esimerkiksi kolme erilaista vaihtoehtoa k 1, k 2 ja k 3. Niissä tilanteissa, joissa Corneyn ja meidän toteutuksemme antoivat eri vastaukset, keskipisteet kuuluivat kuitenkin näiden vaihtoehtojen joukkoon. Esimerkiksi ensimmäisellä kerralla meidän funktio antoi vaihtoehdon k 1 ja Corneyn funktio k 3 ja toisella ajokerralla meidän funktio antoi vaihtoehdon k 3 ja Corneyn funktio k 1. Tämän aiheuttaa se, että yleensä pisteet eivät jakaudu selvästi ryppäisiin, vaan on pisteitä, joiden kuuluvuutta johonkin ryppääseen ei voida yksiselitteisesti määrätä. Tällöin pisteen vaihtuminen toiseen ryhmään kuuluvaksi vaikuttaa keskipisteisiin. Ongelma ilmenee kuvassa 3, jossa omassa toteutuksessamme toisen klusterin muodostaa vain yksittäinen piste, kun taas Corneyn toteutuksessa molempiin klustereihin kuuluu useampia pisteitä. Kuva 3: Kuva eri tuloksen antavista klusteroinneista. Klustereiden keskipisteet on kuvassa merkitty neliöillä ja data-alkiot tähdillä.

Lähteet [1] Pasi Koikkalainen, Tilastollisen hahmontunnistuksen perusteet 2000 - luentomoniste, saatavilla WWW-muodossa osoitteessa <URL : http://erin.mit.jyu.fi/pako/kurssit/th2000/ >, 17.2.2003 [2] David Corney, Clustering with Matlab, saatavilla WWW-muodossa osoitteessa <URL: http://www.cs.ucl.ac.uk/staff/d.corney/clusteringmatlab.html >, 17.2.2003 [3] Petri Nokelainen, BayMiner-esitys, saatavilla WWW-muodossa osoitteessa <URL: http://www.uta.fi/laitokset/aktk/l40/luennot/bayes/bayminer/sld003.ht m >, 19.2.2003 9