Eksperymentuję z klasyfikowaniem danych do grup. Jestem całkiem nowy w tym temacie i staram się zrozumieć wyniki niektórych analiz.
Korzystając z przykładów z Quick-R , R
sugerowanych jest kilka pakietów. Próbowałem użyć dwóch z tych pakietów ( fpc
używając kmeans
funkcji i mclust
). Jednym aspektem tej analizy, którego nie rozumiem, jest porównanie wyników.
# comparing 2 cluster solutions
library(fpc)
cluster.stats(d, fit1$cluster, fit2$cluster)
Przeczytałem odpowiednie części fpc
instrukcji i nadal nie jestem pewien, do czego powinienem dążyć. Na przykład jest to wynik porównania dwóch różnych metod grupowania:
$n
[1] 521
$cluster.number
[1] 4
$cluster.size
[1] 250 119 78 74
$diameter
[1] 5.278162 9.773658 16.460074 7.328020
$average.distance
[1] 1.632656 2.106422 3.461598 2.622574
$median.distance
[1] 1.562625 1.788113 2.763217 2.463826
$separation
[1] 0.2797048 0.3754188 0.2797048 0.3557264
$average.toother
[1] 3.442575 3.929158 4.068230 4.425910
$separation.matrix
[,1] [,2] [,3] [,4]
[1,] 0.0000000 0.3754188 0.2797048 0.3557264
[2,] 0.3754188 0.0000000 0.6299734 2.9020383
[3,] 0.2797048 0.6299734 0.0000000 0.6803704
[4,] 0.3557264 2.9020383 0.6803704 0.0000000
$average.between
[1] 3.865142
$average.within
[1] 1.894740
$n.between
[1] 91610
$n.within
[1] 43850
$within.cluster.ss
[1] 1785.935
$clus.avg.silwidths
1 2 3 4
0.42072895 0.31672350 0.01810699 0.23728253
$avg.silwidth
[1] 0.3106403
$g2
NULL
$g3
NULL
$pearsongamma
[1] 0.4869491
$dunn
[1] 0.01699292
$entropy
[1] 1.251134
$wb.ratio
[1] 0.4902123
$ch
[1] 178.9074
$corrected.rand
[1] 0.2046704
$vi
[1] 1.56189
Moim podstawowym pytaniem tutaj jest lepsze zrozumienie, jak interpretować wyniki tego porównania klastrów.
Wcześniej pytałem o efekt skalowania danych i obliczania macierzy odległości. Jednak odpowiedziała na to wyraźnie Maria Marianna i po prostu reorganizuję moje pytanie, aby podkreślić, że interesuje mnie interpretacja moich wyników, która jest porównaniem dwóch różnych algorytmów klastrowania.
Poprzednia część pytania : Czy w przypadku klastrowania należy zawsze skalować dane? Na przykład używam funkcji dist()
z mojego skalowanego zestawu danych jako danych wejściowych do cluster.stats()
funkcji, jednak nie do końca rozumiem, co się dzieje. Czytam o tym dist()
tutaj i stwierdzam, że:
ta funkcja oblicza i zwraca macierz odległości obliczoną przy użyciu określonej miary odległości do obliczenia odległości między wierszami macierzy danych.