Zrozumienie porównań wyników grupowania

13

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 , Rsugerowanych jest kilka pakietów. Próbowałem użyć dwóch z tych pakietów ( fpcużywając kmeansfunkcji 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.

celenius
źródło
Szukasz dalszych wyjaśnień, czy nie jesteś zadowolony z odpowiedzi @ mariana? Myślę, że dotyczy to twojego pierwszego pytania (2 akapit). Jeśli tak, być może powinieneś zaktualizować swoje pytanie, aby ludzie zrozumieli, dlaczego ustalasz nagrodę za to pytanie.
chl
@chl Zaktualizuję go, aby był bardziej przejrzysty. Po prostu szukam wskazówek dotyczących interpretacji porównań klastrowych, ponieważ nie rozumiem, co oznacza wynik. Odpowiedź @ mariana była bardzo pomocna w wyjaśnieniu niektórych terminów związanych z tą metodą.
celenius

Odpowiedzi:

13

Najpierw powiem wam, że nie wyjaśnię tutaj dokładnie wszystkich środków, ale dam wam pomysł, jak porównać, jak dobre są metody grupowania (załóżmy, że porównujemy 2 metody klastrowania z tym samym numerem klastrów).

  1. Na przykład im większa średnica klastra, tym gorsze jest grupowanie, ponieważ punkty należące do klastra są bardziej rozproszone.
  2. Im wyższa średnia odległość dla każdego klastrowania, tym gorsza metoda klastrowania. (Załóżmy, że średnia odległość to średnia odległości od każdego punktu w klastrze do środka klastra).

Są to dwa najczęściej używane wskaźniki. Sprawdź te linki, aby zrozumieć, co oznaczają:

  • Odległość między klastrami (wyższa, tym lepiej jest summatory odległości pomiędzy różnymi centroidów klastra)
  • odległość wewnątrz gromady (im niższa, tym lepsza, jest sumą odległości między członami gromady do środka gromady)

Aby lepiej zrozumieć powyższe dane, sprawdź to .

Następnie powinieneś przeczytać instrukcję obsługi biblioteki i funkcji, których używasz, aby zrozumieć, które miary reprezentują każdą z nich, a jeśli nie są uwzględnione, spróbuj znaleźć znaczenie dołączonej. Jednak nie zawracałbym sobie głowy i nie trzymałem się tych, które tu podałem.

Przejdźmy do zadanych pytań:

  1. Odnośnie skalowania danych: Tak, zawsze powinieneś skalować dane do grupowania, w przeciwnym razie różne skale różnych wymiarów (zmiennych) będą miały różny wpływ na sposób grupowania danych, im wyższe wartości w zmiennej, tym bardziej wpływowa jest ta zmienna będzie sposób, w jaki odbywa się grupowanie, podczas gdy w rzeczywistości powinny one mieć taki sam wpływ (chyba że z jakiegoś szczególnego dziwnego powodu nie chcesz tego w ten sposób).
  2. Funkcje odległości obliczają wszystkie odległości od jednego punktu (instancji) do drugiego. Najczęstszą miarą odległości jest euklidesowa, więc załóżmy na przykład, że chcesz zmierzyć odległość od instancji 1 do instancji 2 (załóżmy, że dla uproszczenia masz tylko 2 instancje). Również załóżmy, że każdy przykład ma wartość 3 (x1, x2, x3), tak I1=0.3, 0.2, 0.5a I2=0.3, 0.3, 0.4więc od odległości euklidesowej i I1 I2 to: sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17, a więc matrycę odległość spowoduje:

        i1    i2
    i1  0     0.17
    i2  0.17  0
    

Zauważ, że macierz odległości jest zawsze symetryczna.

Euklidesowa formuła odległości nie jest jedyną, która istnieje. Istnieje wiele innych odległości, które można wykorzystać do obliczenia tej macierzy. Sprawdź na przykład w Wikipedii Manhattain Distance i jak ją obliczyć. Na końcu strony Wikipedii dotyczącej odległości euklidesowej (gdzie można również sprawdzić jej wzór) można sprawdzić, jakie inne odległości istnieją.

mariana bardziej miękka
źródło
Dziękujemy za bardzo wyczerpującą odpowiedź - jest bardzo pomocna.
celenius
Bardzo się cieszę, że było to dla ciebie pomocne.
mariana soffer
@marianasoffer link do strony Stanford nie działa. Zaktualizuj go lub udostępnij. Dziękuję
Herman Toothrot,
7

Myślę, że najlepszą miarą jakości dla klastrowania jest założenie klastra, podane przez Seegera w Uczeniu się z danymi oznaczonymi i nieznakowanymi :

Na przykład załóżmy, że X = Rd i ważność „założenia klastra”, a mianowicie, że dwa punkty x, x powinny mieć tę samą etykietę t, jeśli istnieje między nimi ścieżka w X, która przechodzi tylko przez regiony o stosunkowo wysokim P (x ).

Tak, to sprowadza cały pomysł na centroidy i centra. W końcu są to raczej arbitralne pojęcia, jeśli pomyślisz o tym, że twoje dane mogą znajdować się w nieliniowym podfolderze przestrzeni, w której faktycznie działasz.

Możesz łatwo zbudować syntetyczny zestaw danych, w którym rozkładają się modele mieszanin. Np ten jeden: okrąg w chmurze.

Krótko mówiąc: mierzę jakość algorytmu klastrowania w sposób minimaksowy. Najlepszy algorytm grupowania to taki, który minimalizuje maksymalną odległość punktu do najbliższego sąsiada tego samego gromady, a maksymalizuje minimalną odległość punktu do najbliższego sąsiada od innego gromady.

Możesz być także zainteresowany Algorytmem teorii informacji nieparametrycznych .

bayerj
źródło
Jak przejść do badania dopasowania klastra przy użyciu podejścia minimax? Moja wiedza na temat klastrowania jest bardzo podstawowa, dlatego w tej chwili próbuję zrozumieć, jak porównać dwa różne podejścia do klastrowania.
celenius
Czy możesz podać kod R dla załączonej figury?
Andrej
@Andrej Moje przypuszczenie to chmura Gaussa ( x<-rnorm(N);rnorm(N)->y) podzielona na 3 części przez r (z jedną usuniętą).
Nie znam praktycznego algorytmu, który pasuje do tej miary jakości. Prawdopodobnie nadal chcesz korzystać z K-Means i in. Ale jeśli powyższa miara się psuje, wiesz, że dane, na które patrzysz, nie są (jeszcze!) Odpowiednie dla tego algorytmu.
bayerj
@Andrej Nie używam R (pochodzącego z ML zamiast statystyk :), ale to, co sugeruje mbq, wydaje się w porządku.
bayerj