W szczególności o k-średnich, możesz użyć statystyki Gap. Zasadniczo chodzi o obliczenie dobroci miary grupowania na podstawie średniej dyspersji w porównaniu z rozkładem odniesienia dla rosnącej liczby klastrów. Więcej informacji można znaleźć w oryginalnym artykule:
Tibshirani, R., Walther, G., i Hastie, T. (2001). Szacowanie liczby klastrów w zbiorze danych za pomocą statystyki luki . JR Statist. Soc. B, 63 (2): 411–423.
Odpowiedź, którą udzieliłem na powiązane pytanie, podkreśla inne ogólne wskaźniki poprawności, które mogą być użyte do sprawdzenia, czy dany zestaw danych wykazuje jakąś strukturę.
Jeśli nie masz pojęcia, czego byś się spodziewał, gdyby był tylko hałas, dobrym rozwiązaniem jest ponowne próbkowanie i badanie stabilności klastrów. Innymi słowy, ponownie próbkuj dane (przez bootstrap lub dodając do niego niewielki szum) i oblicz „bliskość” wynikowych partycji, mierzoną podobieństwami Jaccard . Krótko mówiąc, pozwala oszacować częstotliwość, z jaką podobne klastry były odzyskiwane w danych. Ta metoda jest łatwo dostępna w pakiecie fpc R jako clusterboot()
. Bierze jako dane wejściowe albo surowe dane, albo macierz odległości i pozwala na zastosowanie szerokiego zakresu metod grupowania (metody hierarchiczne, średnie k, metody rozmyte). Metodę omówiono w powiązanych odnośnikach:
Hennig, C. (2007) Ocena stabilności skupień pod kątem klastrów .
Statystyka obliczeniowa i analiza danych , 52, 258–271.
Hennig, C. (2008) Punkt rozpuszczania i odporność na izolację: kryteria odporności dla ogólnych metod analizy skupień . Journal of Multivariate Analysis , 99, 1154-1176.
Poniżej znajduje się mała demonstracja z algorytmem k-średnich.
sim.xy <- function(n, mean, sd) cbind(rnorm(n, mean[1], sd[1]),
rnorm(n, mean[2],sd[2]))
xy <- rbind(sim.xy(100, c(0,0), c(.2,.2)),
sim.xy(100, c(2.5,0), c(.4,.2)),
sim.xy(100, c(1.25,.5), c(.3,.2)))
library(fpc)
km.boot <- clusterboot(xy, B=20, bootmethod="boot",
clustermethod=kmeansCBI,
krange=3, seed=15555)
Wyniki są dość pozytywne w tym sztucznym (i dobrze ustrukturyzowanym) zbiorze danych, ponieważ żaden z trzech klastrów ( krange
) nie został rozpuszczony w próbkach, a średnie podobieństwo Jaccard w klastrze wynosi> 0,95 dla wszystkich klastrów.
Poniżej znajdują się wyniki dla 20 próbek bootstrap. Jak można zauważyć, jednostki statystyczne zwykle pozostają zgrupowane w tej samej grupie, z kilkoma wyjątkami dla obserwacji leżących pomiędzy nimi.
Możesz oczywiście rozszerzyć ten pomysł na dowolny indeks ważności: wybierz nową serię obserwacji za pomocą bootstrapu (z zamiennikiem), oblicz swoją statystykę (np. Szerokość sylwetki, korelację kopenetyczną, gamma Huberta, w ramach sumy kwadratów) dla zakresu liczby klastrów (np. 2 do 10), powtórz 100 lub 500 razy i spójrz na wykres pudełkowy swojej statystyki jako funkcję liczby klastrów.
Oto, co otrzymuję z tym samym symulowanym zestawem danych, ale używając hierarchicznego grupowania Warda i biorąc pod uwagę korelację kopenetyczną (która ocenia, jak dobrze odtwarzane są informacje o odległości w wynikowych partycjach) i szerokość sylwetki (miara kombinacji oceniająca jednorodność wewnątrz gromady i inter- separacja klastrowa).
Korelacja kopenetyczna wynosi od 0,6267 do 0,7511 z wartością mediany 0,7031 (500 próbek ładowania początkowego). Szerokość sylwetki wydaje się maksymalna, gdy weźmiemy pod uwagę 3 skupienia (mediana 0,8408, zakres 0,7371-0,8769).