5.3.2 K-középpontú klaszteranalízis
A K-középpontú klaszteranalízissel is a vizsgált elemek klaszterbe történő besorolását végezhetjük el. A módszer főbb lépései a következők:
- Adjuk meg a kezdeti klaszterek számát
- Minden elemet besorolunk a hozzá legközelebb eső klaszterbe
- Határozzuk meg a klasztercentroidokat
- Az elemeket átsoroljuk úgy, hogy a csökkenjen az elemek és a centroidok közötti távolság
- A 3-4. lépés ismétlése addig, amíg a klaszterek nem állandósulnak.
Nézzük meg a K-középpontú klaszteranalízist egy példán keresztül. Az 5.9. táblázatban néhány ember adatait vehetjük szemügyre. A táblázatban szerepel a személy által végzett iskolai osztályok száma és fizetésük nagysága. Klaszteranalízissel megvizsgálhatjuk, hogy van-e valamilyen tipikus együttjárása az elvégzett osztályok számának és a fizetés nagyságának.
|
6 |
10 |
7 |
20 |
6 |
160 |
9 |
50 |
9 |
170 |
13 |
80 |
13 |
180 |
16 |
50 |
16 |
170 |
17 |
40 |
19 |
190 |
20 |
80 |
20 |
200 |
22 |
80 |
22 |
250 |
|
|
|
5.9. táblázat. |
|
A táblázat adatait az 5.10. R-forráskóddal hívhatjuk elő.
d<-read.csv("c:/adat/osztalyok.csv")
|
|
5.10. R-forráskód
|
plot(d, pch=20, cex=3, col=4)
|
|
5.11. R-forráskód
|
Mielőtt bármilyen elemzést végeznénk az adatokon, érdemes egy pillantást vetni a pontdiagramra, amit az 5.11. R-forráskóddal kérhetünk. Az 5.11. R-eredményen látható pontdiagram két változó esetén áttekinthető, több változó kapcsolatát már nehezebben tudjuk síkban ábrázolni. Az ábrán láthatjuk, hogy az adatok szemmel láthatóan szétválnak két csoportra, van értelme a további vizsgálódásnak.
Első lépésként a klaszterek kezdeti számát kell meghatároznunk. Ezt egyrészt megtehetjük valamilyen előzetes tudás, esetleg intuíció alapján. Ám használhatunk egy objektívebb eljárást is erre. A csoportok akkor jók statisztikai szempontból, ha a csoporton belüli variancia minimális, míg a csoportok közötti variancia maximális. Ezek hányadosát ábrázolhatjuk a lehetséges klaszterek számának a függvényében, és ahol éles törést látunk a görbén, az ahhoz tartozó klaszterszámot érdemes elfogadnunk. Ezt az ábrát elkészíthetjük az R-ben is az 5.12. forráskód segítségével.
n<-length(d$KERESET)
wss1<-(n-1)*sum(apply(d,2,var))
wss<-numeric(0)
for(i in 2:6){W<-sum(kmeans(d,i)$withinss)
wss<-c(wss,W)}
wss<-c(wss1,wss)
plot(1:6,wss,type="l",xlab="Csoportok száma",ylab="Csoporton belüli négyzetösszegek",lwd=2)
|
|
5.12. R-forráskód
|
Az 5.12. R-eredményt szemlélve láthatjuk, hogy a kettes értéknél van éles törés a görbén, ez alapján a kétklaszteres megoldással érdemes dolgoznunk. Futtassuk le a k-középpontú klaszteranalízist úgy, hogy két klasztert kérünk. Ennek módja az 5.13. R-forráskódon látható. A „kmeans” a k-középpontú klaszterelemzés parancsa, a „d” paraméter az elemzéshez használt adatokat adja meg, míg a 2-es érték a kívánt klaszterek számát jelöli.
kközép<-kmeans(d,2)
print(kközép, digits=3)
|
|
5.13. R-forráskód
|
K-means clustering with 2 clusters of sizes 7, 8
Cluster means:
IOSZSZÁM KERESET
1 15.0 188.6
2 13.8 51.3
Clustering vector:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
2 2 1 2 1 2 1 2 1 2 1 2 1 2 1
Within cluster sum of squares by cluster:
[1] 5698 5539
Available components:
[1] "cluster" "centers" "withinss" "size"
|
|
5.13. R-eredmény.
|
Az 5.13. R-eredmény a klaszteranalízis eredményét mutatja. Az első sor („K-means clustering with 2 clusters of sizes 7, 8”) arról ad információt, hogy kétklaszteres megoldásunk van, melyek mérete 7, illetve 8 elemszám. Hogy az egyes elemek melyik klaszterbe esnek, arról a „Clustering vector” ad információt. Az első sor az egyes elemeket, a második pedig a csoporttagságot mutatja. Ez alapján az első klasztert a hármas, ötös, hetes, kilences, tizenegyes, tizenhármas és a tizenötös elem alkotja. A többi elem a második klaszterbe került.
A „Cluster means” az egyes klaszterek átlagos tagjának, centroidjának a jellemzőit mutatják. Az első klaszter átlagos tagja 15 osztályt végzett és több, mint 188 ezer forintot keres. A második klaszter átlagos tagja 13,75 osztályt végzett és több mint 51 ezer forintot keres.
A „Within cluster sum of squares by cluster” értékei a klaszteren belüli eltérések négyzetösszegét mutatja.
Az eredmények alapján, ha az elvégzett iskolai osztályok és a fizetés nagysága alapján próbáljuk az embereket csoportosítani, tipizálni, akkor azt mondhatjuk, hogy vannak olyan emberek, akik kb. 15 osztályt végeztek (vagyis diplomások) és elég magas a fizetésük (188 ezer), és vannak olyan emberek, akik kb. 13 osztályt végeztek (középiskola) és meglehetősen alacsony fizetést kapnak.
Végül érdemes az 5.13. R-forráskódon is látható klasztertagságokat („Clustering vector”) az adatbázishoz is hozzáadni, ennek lépései láthatók az 5.14. R-forráskódon. Ezt követően az új, csoporttagságot jelző változó további elemzések kiindulópontja lehet (például diszkriminancia-analízis).
csoporttagsag<-kközép$cluster
cbind(d,csoporttagsag)
|
|
5.14. R-forráskód
|
IOSZSZ.M KERESET csoporttagsag
1 6 10 2
2 7 20 2
3 6 160 1
4 9 50 2
5 9 170 1
6 13 80 2
7 13 180 1
8 16 50 2
9 16 170 1
10 17 40 2
11 19 190 1
12 20 80 2
13 20 200 1
14 22 80 2
15 22 250 1
|
|
5.14. R-eredmény.
|
|