mvst

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:

  1. Adjuk meg a kezdeti klaszterek számát
  2. Minden elemet besorolunk a hozzá legközelebb eső klaszterbe
  3. Határozzuk meg a klasztercentroidokat
  4. Az elemeket átsoroljuk úgy, hogy a csökkenjen az elemek és a centroidok közötti távolság
  5. 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.

 
Iskolai osztályok
száma
Fizetés nagysága
(ezer)
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

5.11. R-eredmény.

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

5.12. R-eredmény.

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.
   
 
Münnich Á., Nagy Á., Abari K. (2006). Többváltozós statisztika pszichológus hallgatók számára. v1.1.