Klasterisanje I K-Means Algoritam

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 17

UNIVERZITET CRNE GORE

PRIRODNO-MATEMATIČKI FAKULTET
RAČUNARSTVO I INFORMACIONE TEHNOLOGIJE

Klasterisanje i K-Means algoritam


Seminarski rad iz predmeta

MAŠINSKO UČENJE

Predmetni profesor: Student:


doc. Igor Jovančević Nikolina Jelovac, 9/22

Podgorica, 16.12.2022.
Sadržaj
UVOD.........................................................................................................................................................3
KLASTERISANJE....................................................................................................................................4
Klaster analiza.......................................................................................................................................4
Tehnike klasterisanja............................................................................................................................7
Tipovi klastera.......................................................................................................................................8
K-MEANS ALGORITAM......................................................................................................................10
LITERATURA:.......................................................................................................................................16

2
UVOD

Iako je većina aplikacija mašinskog učenja danas zasnovana na nadgledanom


učenju,ogromna količina dostupnih podataka je neoznačena. Imamo ulazne karakteristike
X, ali nemamo labelu y. Yann LeCun je rekao,da ako je inteligencija torta, nenadgledano
učenje bi bila torta, dok bi nadgledano učenje bilo šlag na torti, a pojačano učenje bi bila
višnja na torti. Ovim se želi reći koliki potencijal zapravo ima nenadgledano učenje.
Nenadgledano učenje sve više nalazi primjenu u svakodnevnom životu.
Zadaci nenadgledanog učenja:
 Grupisanje: cilj je grupisanje sličnih instanci zajedno u klastere. Ovo je
odličan alat za analizu podataka, segmentaciju kupaca, sisteme preporuka,
pretraživači, segmentacija slike, polunadgledano učenje, dimenzionalnost
smanjenje i još mnogo toga.
 Otkrivanje anomalija: cilj je naučiti kako izgledaju „normalni“ podaci i
koristite ovo za otkrivanje abnormalnih slučajeva, kao što su neispravni artikli u
proizvodnji linija ili novi trend u vremenskoj seriji.
 Procjena gustine: ovo je zadatak procene funkcije gustine verovatnoće
(PDF) slučajnog procesa koji je generisao skup podataka. Ovo se obično koristi
za otkrivanje anomalija: slučajevi koji se nalaze u regionima sa veoma malom
gustinom verovatno će biti anomalije. Takođe je korisno za analizu i vizuelizaciju
podataka.

3
KLASTERISANJE

Klaster analiza
Klaster analiza je metoda multivarijacione statističke analize koja ima za cilj grupisanje
elemenata u klastere na osnovu njihovih karakteristika. Klasterovanje elemenata se vrši
na osnovu realizovanih vrednosti posmatranog obilježja, tako da maksimizira internu
homogenost (unutar klastera) i eksternu heterogenost (između- klastera). Važna osobina
klaster analize je činjenica da ona nije metoda strogog statističkog zaključivanja gde se
odabrani uzorak nužno smatra i reprezentativnim za određenu populaciju. Klaster analiza
je metoda kojom se određuju strukturalne karakteristike izmerenih svojstava na strogoj
matematičkoj, ali ne i statističkoj utemeljenosti. Prema tome, da bi rezultati klaster
analize bili smisleni potrebno je utvrditi pretpostavke koje se odnose na reprezentativnost
uzorka. Pouzdanost rezultata klaster analize zavisi od reprezentativnosti uzorka. Termin
klaster analiza obuhvata niz različitih algoritama i metoda za grupisanje elemenata
sličnog tipa u odgovarajuće kategorije. Drugim riječima, klaster analiza je istraživačka
tehnika za analizu podataka koja ima za cilj da sortira različite elemente u grupe tako da
je stepen udruživanja između dva elementa maksimalan ako pripadaju istoj grupi i
minimalan ako pripadaju različitoj. Klaster analiza jednostavno otkriva strukture u
podacima ne objašnjavajući zašto one postoje. Kod ove tehnike nisu poznati broj grupa i
karakteristike grupe pre izvođenja samog postupka. Osnovni ciljevi klaster analize su:
 Otkrivanje prirodnih grupacija elemenata koje posmatramo;
 Istraživanje podataka - Ako ne znamo kako je skup elemenata strukturiran, klaster
analizom otkrivamo nepoznatu strukturu;
 Redukcija podataka;
 Generisanje hipoteza - Za skup podataka nepoznate strukture, klaster analizom
formiraju se grupe čiji broj i sastav pomažu u definisanju hipoteza o strukturi
podataka. Tako, na primer, broj grupa sugerisan prvobitnom analizom može biti
hipoteza koja bi se testirala novim skupom podataka;
 Predviđanje.
Pored toga, ako klaster analiza pokaže neko neočekivano grupisanje jedinica
posmatranja, onda postoji verovatnoća da su pronađene određene relacije između jedinica
posmatranja koje do tada nisu bile poznate i koje treba ispitati.

4
Neke od važnih odluka koje treba donijeti pri sprovođenju klaster analize su:
1. Izbor uzorka kojeg ćemo podvrgnuti klaster analizi;
2. Odrediti skup relevantnih promenljivih koje će reprezentovati obilježja elemenata;
3. Odrediti transformaciju originalnih podataka;
4. Odrediti metodu za određivanje udaljenosti ili sličnosti između elemenata;
5. Odrediti metodu koju ćemo koristiti za povezivanje elemenata u klastere;
6. Ocjena validnosti dobijenih rezultata.
Ovaj tip analize podsjeća na metode klasifikacije predmeta. Ipak, ove dvije analitičke
metode su dosta različite jedna od druge. Prvo, u klasifikaciji, poznato nam je, još na
početku, u koliko klasa ili grupa treba klasifikovati podatke i koje elemente gdje
razvrstati. U klaster analizi, broj klastera je nepoznat, kao i koji element gdje treba
grupisati. Drugo, u klasifikaciji, cilj je da se klasifikuju novi elementi (ukoliko je moguće
u obliku skupa) u jednu od datih klasa na osnovu prethodnog iskustva. Klasterovanje
spada više u okvir istraživačke analize podataka, pri čemu ne postoje dostupne
informacije o strukturi podataka. Treće, klasifkacija se bavi skoro isključivo
klasifikacijom opservacija, dok se grupisanje može primeniti i na promenljive i na
opservacije ili na oba istovremeno, u zavisnosti od toga šta analiziramo.

Postupak klaster analize se sastoji iz dva osnovna koraka, izbora odgovarajuće mjere
udaljenosti (sličnosti) i izbora algoritma klasterovanja. Podaci se iz posmatranog skupa
grupišu u klastere na osnovu mjera sličnosti (ili udaljenosti) između dva različita
elementa. Ne postoji slaganje oko toga koja mjera udaljenosti je najadekvatnija za
primjenu u klasterovanju. Vrlo je bitno znati da što je više promenljivih uključeno u
analizu i što su one više međusobno nezavisne, teže je pronaći odgovarajući model za
grupisanje elemenata koje posmatramo.
Fokus klaster analize je na poređenju elemenata zasnovanih na slučajnoj promjenljivoj, a
ne na procjeni same slučajne promjenljive. Klaster analiza nema statističku osnovu kod
kojih se mogu izvući statistička zaključivanja iz uzorka i korišćena je prvenstveno kao
5
tehnika istraživanja. Rešenja nisu jedinstvena i istraživač mora voditi računa u proceni
uticaja svake odluke uključene u izvođenje klaster analize.

Klaster analiza ima značajnu primenu u različitim oblastima istraživanja. Na


primer, u istraživanjima iz oblasti medicine, veoma značajnu ulogu u daljoj analizi
može imati klasterovanje oboljenja, ili simptoma oboljenja. U psihologiji, klaster
analiza se koristi za pronalaženje tipova ličnosti na osnovu upitnika. U arheologiji,
primenjuje se za klasterovanje umetničkih dela u različitim vremenskim periodima.
Druge naučne grane koje koriste klaster analizu su prirodne nauke, ekonomija,
marketing, istraživanje podataka.
Grupisanje se koristi u širokom spektru aplikacija:
 Za segmentaciju kupaca: možete grupisati svoje klijente na osnovu njihove
svrhe. Odnosno ovo nam pomaže da razlikujemo naše kupce I njihove
potrebe,tako da svoje proizvode možemo prilagoditi svakom od njih.
 Za analizu podataka: kada analizirate novi skup podataka, često je korisno
prvo otkriti klastere sličnih instanci, jer je često lakše analizirati klastere
odvojeno.
 Kao tehnika smanjenja dimenzionalnosti: kada se skup podataka grupiše, to
jeste obično je moguće izmeriti anitet svake instance sa svakim klasterom
(afinitet je svaka mjera koliko se instanca uklapa u klaster). Karakteristike
svake instance vektor k se tada može zameniti vektorom njegovih afiniteta
klastera. Ako postoje k klastera, onda je ovaj vektor k dimenzionalan. Ovo je
obično mnogo niža dimenzija- više nego originalni vektor obilježja, ali može
da sačuva dovoljno informacija za dalju obradu.
 Za otkrivanje anomalija (takođe se naziva i otkrivanje odstupanja): svaka
instanca koja ima nizak nivo afinitet prema svim klasterima je verovatno
6
anomalija. Detekcija anomalija je posebno korisna u otkrivanju nedostataka
u proizvodnji, ili za otkrivanje prevara.
 Za polunadgledano učenje: ako imate samo nekoliko etiketa, mogli biste da
radite grupisanje i propagiranje oznaka na sve instance u istom klasteru. Ovo
može uveliko povećati količinu dostupnih etiketa za naknadni nadzor
algoritam učenja, i time poboljšati njegove performanse.

Tehnike klasterisanja

Što se tiče tehnika klasterizacije,imamo 2 tehnike:


1. Tehnike particionisanja- Podjela datog skupa objekata na disjunktne klastere tako
da svaki objekat pripada samo jednom klasteru

7
2. Hijerarhijske tehnike- Podjela datog skupa objekata na ugnježdene klastere koji su
hijerarhijski uređeni u obliku stabla

Dodatni kriterijumi za podjelu tehnika klasterizacije


 Exclusive versus non-exclusive
 U non-exclusive klasterima jedan objekat može da pripada većem broju
klastera
 Fuzzy versus non-fuzzy
 U fuzzy klasterima objekat pripada svakom klasteru sa nekom težinom
0≤w≤1
 Partial versus complete
 Partial klasterizacija obuhvata samo dio polaznog skupa

Tipovi klastera

Tipovi klastera:
 Well-separated clusters
 Center-based clusters
 Contiguous clusters
 Density-based clusters
 Property or Conceptual
 Described by an Objective Function

8
Well-separated klasteri su klasteri u kojima je ma koji objekat bliži svim objektima iz
istog klastera nego ma kom objektu izvan istog klastera.

Center-based klasteri su klasteri u kojima je ma koji objekat bliži centru klastera kojem
pripada nego centru ma kog drugog klastera.

Contiguous klasteri su klasteri u kojima je ma koji objekat bliži bar jednom objektu iz
tog klastera nego ma kom objektu izvan istog klastera.

Density-based klasteri su “regioni” sa velikom gustinom, razdvojeni regionima male


gustine.

Algoritmi klasterizacije:
 K-means
 Agglomerative hierarchical clustering
 Density-based clustering

9
K-MEANS ALGORITAM

K-Means algoritam je jednostavan algoritam sposoban da grupiše instance veoma brzo


i efikasno, često u samo nekoliko iteracija.
1957. godine predložio ga je Stjuart Lojd u Bell Labs, kao tehniku za modulaciju
impulsnog koda. Međutim objavljena je tek kasnije, 1982. godine, u radu pod naslovom
„Kvantizacija najmanjeg kvadrata u PCM-u“, van ove kompanije.
1965. godine, Edvard V. Forgi je objavio skoro isti algoritam, tako da se K-Means
ponekad naziva I LloidForgi.

Na slici je prikazan jedan dataset. Treniraćemo K-Means klaster na ovom dataset-u.


Pokušaće da pronađe centar svake mrlje i dodjeli svaku instancu najbližoj mrljici:

from sklearn.cluster import KMeans


k=5
kmeans = KMeans(n_clusters=k)
y_pred = kmeans.fit_predict(X)

Ono što moramo navesti jeste broj klastera k,koje naš algoritam mora da pronađe. U
našem slučaju uzeli smo da je k=5. Svaka instanca je dodeljena jednom od 5 klastera. U
kontekstu grupisanja, oznaka instance je indeks klastera kojem ovoj instanci dodeljuje
algoritam: ovo ne treba mešati sa oznakama klasa u klasifikaciji (zapamtite da je

10
grupisanje zadatak učenja bez nadzora). KMeans instanca čuva kopiju oznaka instanci na
kojima je obučena, dostupnu preko labels_ instance promjenljive:

>>> y_pred
array([4, 0, 1, ..., 2, 1, 0], dtype=int32)
>>> y_pred is kmeans.labels_
True

Prikazaćemo 5 centrioda koje je algoritam pronašao:


>>> kmeans.cluster_centers_
array([[-2.80389616, 1.80117999],
[ 0.20876306, 2.25551336],
[-2.79290307, 2.79641063],
[-1.46679593, 2.28585348],
[-2.80037642, 1.30082566]])

Možemo dodijeliti nove instance klasteru čiji je centar najbliži.


>>> X_new = np.array([[0, 2], [3, 2], [-3, 3], [-3, 2.5]])
>>> kmeans.predict(X_new)
array([1, 1, 2, 2], dtype=int32)

11
Ogromna većina instanci je jasno dodeljena odgovarajućem klasteru, ali je nekoliko
instanci vjerovatno pogrešno označeno. Na primjer ako obratimo pažnju na gornji lijevi I
centralni klaster,može se vidjeti da veća vjerovatnoća da se pojavila greška u
označavanju. K-Means algoritam se ne ponaša baš dobro kada mrlje imaju veoma
različite prečnike, jer sve do čega mu je stalo kada se dodeljuje instanca klasteru je
rastojanje do centra.
Umesto dodeljivanja svake instance jednom klasteru, što se zove teško grupisanje, može
biti korisno da se svakoj instanci jednostavno dodeli ocjena po klasteru.
U klasi KMeans, metoda transform() mjeri rastojanje od svake instance do svakog
centroida:
>>> kmeans.transform(X_new)
array([[2.81093633, 0.32995317, 2.9042344 , 1.49439034, 2.88633901],
[5.80730058, 2.80290755, 5.84739223, 4.4759332 , 5.84236351],
[1.21475352, 3.29399768, 0.29040966, 1.69136631, 1.71086031],
[0.72581411, 3.21806371, 0.36159148, 1.54808703, 1.21567622]])

Da sumiramo,ulazni podaci K-means algoritma su:


 K – broj klastera
 skup za trening sa m uzoraka (instanci), a svaki uzorak u skupu je vektor opisan sa
n atributa (x1, x2, ... Xn)
 Opciono: maksimalan broj iteracija koji se izvršava (max)

Koraci našeg algoritma:


1. Slučajan odabir K težišta klastera (centroida)
2. Grupisanje po klasterima - svaki uzorak (instancu) dodeljujemo najbližem
centroidu (najbliže težište na osnovu odabrane metrike)
3. Pomeranje težišta (centroida) ka centru svih uzoraka u klasteru –za svaki klaster
se izračuna novo težište uzimajući prosek instanci koje su dodeljene tom klasteru
4. Koraci 2) i 3) se ponavljaju sve dok algoritam ne konvergira ili broj iteracija ne
dostigne MAX

12
Ono što predstavlja smisao K-means algoritma je njegova minimizacija funkcije
koštanja J. Nju možemo naći po formuli :
m
1
(1)
J (c ,….,c (m )
, μ(1 ) ,….., μ(k)) =
m ∑ ¿¿ ¿
i=1

x - i-ta instanca u skupu podataka za trening, i = 1,...m


i

(i ) (i)
c -indeks klastera u koji je instance x trenutno raspoređena
μ( j)-težište klastera j, j = 1,... K, gde je K ukupan broj klastera

μc (i) −¿težište klastera u koji je instanca x(i) trenutno raspoređena

Kvalitet kreiranih klastera možemo procijeniti u odnosu na:


 Međusobnu udaljenost težišta
 Standard devijacije pojedinačnih istanci u donosu na težisšte
 Sumu kvadrata unutar klastera

U zavisnosti od inicijalnog izbora težišta algoritam može konvergirati brže ili sporije ili
može upasti u lokalni minimum i dati lose rešenje (kada se kaže lokalni minimum misli
se na lokalni minimum funkcije koštanja).

Na prvom dijagramu imamo primjer dobre inicijalizaacije,dok na ostala dva vidimo


primjer inicijalizacije koja nas vodi u lokalni minimum.

Lokalni minimum možemo izbjeći takozvanom višestrukom nasumičnom inicijalizacijom


koja se sastoji u sljedećim koracima:
for i = 1 to N { // N obicno ima vrednosti između 50 i 1000

13
Nasumično odabrati inicijalni skup težišta
Izvršiti K-means algoritam
Izračunati funkciju koštanja
}
Treba izabrati instancu algoritma koja daje najmanju vrednost funkcije koštanja.
Ovaj pristup daje dobre rezultate ukoliko je broj klastera relativno mali (između 2 i 10),
za veći broj klastera ne treba da se koristi.
Što se tiče same dodjele broja klastera K zavisi od toga da li imamo znanja o oblasti koju
podaci opisuju. Ukoliko imamo znanja onda pretpostavimo K na osnovu domenskog
ynanja I testitamo modul sa K-1, K , K+1 klastera I uporedimo grešku. Međutim ukoliko
nemamo znanja o oblasti koju podaci opisuju najbolje je krenuti od malog broja iteracija i
u više iteracija testirati model uvek sa jednim klasterom više I u svakoj iterarciji uporediti
grešku (nekom metodom) tekućeg i prethodnog modela i kad smanjenje greške postane
zanemarljivo, prekinuti postupak.

Primjer kada nemamo znanja o domenu.

14
Velika prednost algoritma k-means je da je vremenska složenost O(n) (O (tkn)), gde je n
broj objekata, k je broj klastera, a t je broj iteracija. Normalno, k, t << n, što ustvari i čini
ovaj algoritam skalabilnijim. Pored toga, direktno iz algoritma su nam dostupni pregledi
svih klastera u vidu listi,

Nedostaci K-means algoritma:


 neophodno je unapred odrediti broj klastera k. Uobičajena praksa je da se koristi
neki od metoda za određivanje optimalnog broja klastera.
 metoda je osetljiva na “outlayere”
 imaju tendenciju da pronađu sferne nakupine jednake veličine
 neophodno je da se pronađu početni centroidi za pokretanje algoritma
 u određenim primjenama potrebno je da se stvarni objekti konvertuju u prostor u
kojima je definisano rastojanje što povećava računsku složenost algoritma

15
16
LITERATURA:

1. Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow - Concepts,


Tools, and Techniques to Build Intelligent Systems by Aurélien Géron
2. https://www.scribd.com/doc/219583203/10-klasterovanje
3. https://www.pmf.ni.ac.rs/download/master/master_radovi_ra%C4%8Dunarske_nauke/
2019/Master_Rad-Jogric_Nebojsa-129.pdf
4. http://ai.fon.bg.ac.rs/wp-content/uploads/2015/04/Klasterizacija-2015.pdf
5. http://ml.matf.bg.ac.rs/readings/ml.pdf
6. https://www.ucg.ac.me/radovi/13/Drasko%20Radovanovic%20-%20Master%20rad.pdf

17

You might also like