Kmeans algoritam Analiza i implementacija na DFE platformi























- Slides: 23
K-means algoritam Analiza i implementacija na DFE platformi Pavle Batuta 14/3206
Uvod • K-means je data mining algoritam • Spada u tzv. clustering algoritme • Grupisanje podataka u klase • Klase su bazirane na sličnosti Pavle Batuta 14/3206 2/23
Ideja algoritma • Prostim rečima: podeliti/klasifikovati tačke u K grupa (klasa) na osnovu njihovih atributa • K se zadaje unapred, kao pozitivan broj veći od nule • Kao dimenziju uzimamo broj atributa podataka • Grupisanje se radi na osnovu minimalne distance između tačke i odgovarajućeg centroida klase • Donekle slično kao k-Neareast Neigbour • Za razliku od prethodnog algoritam „uči“ da preraspoređuje tačke Pavle Batuta 14/3206 3/23
Sličnost i mera distance • Za određivanje sličnosti potrebna nam je mera distance • Dobar izbor – Euklidovska distanca • Broj dimenzija jednak broju atributa objekta • Još bolje – kvadratna Euklidovska distanca • Prihvatljiva mera, a nema skupe operacije korenovanja Pavle Batuta 14/3206 4/23
Koraci algoritma • Ulaz: • Podaci u vidu tačaka (ukupno n) • Broj grupa K • Izabrati početne predstavnike grupa (centroide) • Moguće je izabrati nasumično • Metoda najudaljenijeg • Prvi centroid se bira nasumično • Sledeći se bira da bude najudaljeniji od svih postojećih centroida Pavle Batuta 14/3206 5/23
Koraci algoritma • Ponavljati do konvergencije • Za svaku od n tačaka: • Naći najbliži centroid (po izabranoj distanci) • Dodeliti tačku klasi kojoj pripada centroid • Za svaku od K klasa: • Proći sve tačke koje pripadaju klasi • Naći aritmetičku srednju vrednost • Postaviti novi centroid klase na srednju vrednost Pavle Batuta 14/3206 6/24
Koraci algoritma Pavle Batuta 14/3206 7/23
Primer: korak po korak 4 k 1 3 k 2 2 1 k 3 0 0 1 Pavle Batuta 14/3206 2 3 4 5 8/23
Primer: korak po korak 5 4 k 1 3 k 2 2 1 k 3 0 0 1 Pavle Batuta 14/3206 2 3 4 5 9/23
Primer: korak po korak 5 4 k 1 3 k 2 2 1 k 3 0 0 1 Pavle Batuta 14/3206 2 3 4 5 10/23
Primer: korak po korak 5 4 k 1 3 2 k 2 1 k 3 0 0 1 Pavle Batuta 14/3206 2 3 4 5 11/23
Prednosti i mane • Prednosti: • Skalabilnost, brza konvergencija • Mala složenost! • O(br_dimenzija * K * n * br_iter) gde • Obično K i dim znatno manje od n • Relativno jednostavan za imlementaciju • Uči na prethodnim primerima Pavle Batuta 14/3206 12/23
Prednosti i mane • Mane: • K mora biti unapred poznato! • Izbor K nije trivijalan • Zavisi od seta podataka • Problem lokalnog minimuma • Algoritam konvergira ali može da se desi da se „zaglavi“ u lokalnom minimumu! • Ne znamo da li smo dobili najbolje rešenje Pavle Batuta 14/3206 13/23
Prednosti i mane • Mane: • Rezultat zavisi od početnog izbora centroida • Osetljiv na prisustvo outlier-a • Radi samo sa realnim brojevima • Nije moguće primeniti opisne atribute Pavle Batuta 14/3206 14/23
Predlog ubrzanja: Maxeler Pavle Batuta 14/3206 15/23
Predlog ubrzanja: Maxeler • Reprogramabilne max kartice • Mogu značajno da ubrzaju algoritam • Ideja: pronaći paralelne poslove • Implementirati poslove u max kernelima Pavle Batuta 14/3206 16/23
Predlog ubrzanja: Maxeler • Nalaženje najbliže tačke u kernelu • Kernelu se prosledi stream centroida i tačka • Dataflow mehanizam, podaci „cure“ kroz kernel • Na kraju se računa i update-uje minimalna vrednost Pavle Batuta 14/3206 17/23
Pavle Batuta 14/3206 18/23
Skaliranje rešenja • Rastojanja se mogu računati nezavisno • Praktično u paraleli je moguće klasifikovati svaku od tačaka! • Ubrzanje zavisi od broja kernela koje je moguće mapirati na max mašinu Pavle Batuta 14/3206 19/23
Skaliranje rešenja • Bitno: treba pametno raspodeliti podatke u memoriji • Ako imamo M modula i N tačaka, tada će se klasifikacija završiti za ~ N/M * K ciklusa. Pavle Batuta 14/3206 20/23
Performanse: • Sa porastom broja ulaza, veći dobici • Ograničenje: memorija kartice • Preliminarni rezultati: 4 X do 12 X • Najbitnije: • Moguća dodatna optimizacija kernela • Još mesta za razmotavanje petlji • TODO: pomeranje centroida Pavle Batuta 14/3206 21/23
Primena: • Pošto se lako skalira čak i za velike setove podataka ima široku primenu: • • • Market segmentation Computer vision Geostatika Astronomija Itd. Pavle Batuta 14/3206 22/23
Hvala na pažnji!