Jak interpretować średnią z fabuły Silhouette?

34

Próbuję użyć wykresu sylwetki, aby określić liczbę klastrów w moim zestawie danych. Biorąc pod uwagę zestaw danych Train , użyłem następującego kodu Matlab

Train_data = full(Train);  
Result = [];  
for num_of_cluster = 1:20  
    centroid = kmeans(Train_data,num_of_cluster,'distance','sqeuclid');  
    s = silhouette(Train_data,centroid,'sqeuclid');  
    Result = [ Result; num_of_cluster mean(s)];  
end  
plot( Result(:,1),Result(:,2),'r*-.');`

Powstały wykres podano poniżej z xaksją jako liczbą skupień i średnią wartością sylwetki dla osi .

Jak interpretować ten wykres? Jak ustalić z tego liczbę klastrów?

wprowadź opis zdjęcia tutaj

Uczeń
źródło
Aby określić liczbę klastrów, zobacz metodę minimalnego drzewa opinającego (MST) w sekcji Oprogramowanie do wizualizacji klastrów .
denis
@Learner: Czy funkcja sylwetki jest wbudowana w jakąś bibliotekę? Jeśli nie, czy możesz napisać to w swoim pytaniu, jeśli nie masz nic przeciwko?
Legenda,
@ Legend: Jest dostępny w przyborniku Matlab Statistics.
Uczeń,
@Learner: Ups ... Myślałem, że używasz Pythona :) Dziękujemy za poinformowanie mnie o tym.
Legenda,
1
+1 za pokazanie kodu! Ponadto, ponieważ maksymalna średnia twojej sylwetki występuje, gdy k = 2, możesz chcieć sprawdzić, czy twoje dane są skupione, co można zrobić za pomocą statystyki luki (inny link ).
Franck Dernoncourt

Odpowiedzi:

41

Odpowiedź Siergieja zawiera punkt krytyczny, którym jest to, że współczynnik sylwetki określa jakość osiągniętego klastrowania - dlatego należy wybrać liczbę klastrów, która maksymalizuje współczynnik sylwetki.


Długa odpowiedź jest taka, że ​​najlepszym sposobem oceny wyników działań związanych z tworzeniem klastrów jest rozpoczęcie od zbadania - kontroli przez człowieka - utworzonych klastrów i ustalenia na podstawie zrozumienia tego, co reprezentują dane, co reprezentuje klaster, i do czego dąży klastrowanie.

Istnieje wiele ilościowych metod oceny wyników grupowania, które powinny być stosowane jako narzędzia, przy pełnym zrozumieniu ograniczeń. Zwykle mają one dość intuicyjny charakter, a zatem mają naturalny urok (jak ogólnie problemy związane z grupowaniem).

Przykłady: masa / promień / gęstość klastra, kohezja lub separacja między klastrami itp. Pojęcia te są często łączone, na przykład stosunek separacji do kohezji powinien być duży, jeśli klastrowanie się powiedzie.

Sposób pomiaru klastrowania zależy od rodzaju zastosowanych algorytmów klastrowania. Na przykład, pomiar jakości pełnego algorytmu klastrowania (w którym wszystkie punkty są umieszczane w klastrach) może być bardzo różny od pomiaru jakości opartego na progu algorytmu rozmytego klastrowania (w którym jakiś punkt może być niesklastrowany jako „szum” ).


Współczynnik sylwetki jest jedną z takich miar. Działa w następujący sposób:

Dla każdego punktu p najpierw znajdź średnią odległość między p i wszystkimi innymi punktami w tym samym skupieniu (jest to miara spójności, nazwij to A). Następnie znajdź średnią odległość między p i wszystkimi punktami w najbliższej grupie (jest to miara odległości od najbliższej innej grupy, nazywamy ją B). Współczynnik sylwetki dla p jest definiowany jako różnica między B i A podzielona przez większą z nich dwóch (maks. (A, B)).

Oceniamy współczynnik skupienia każdego punktu i na tej podstawie możemy uzyskać „ogólny” średni współczynnik skupienia.

Intuicyjnie próbujemy zmierzyć przestrzeń między klastrami. Jeśli spójność klastra jest dobra (A jest mała), a separacja klastra jest dobra (B jest duży), licznik będzie duży itp.

Skonstruowałem tutaj przykład, aby to zademonstrować graficznie.

Clustering coefficient Results of clustering for nclusters = 2:5

Na tych wykresach te same dane są wykreślane pięć razy; kolory wskazują klastry utworzone przez k-średnie grupowanie, przy k = 1,2,3,4,5. To znaczy, zmusiłem algorytm klastrowania do podzielenia danych na 2 klastry, następnie 3 itd. I odpowiednio pokolorowałem wykres.

Wykres sylwetki pokazuje, że współczynnik sylwetki był najwyższy, gdy k = 3, co sugeruje, że jest to optymalna liczba skupień. W tym przykładzie mamy szczęście, że możemy wizualizować dane i możemy zgodzić się, że w rzeczywistości trzy klastry najlepiej wychwytują segmentację tego zestawu danych.

Gdybyśmy nie byli w stanie wizualizować danych, być może ze względu na wyższą wymiarowość, wykres sylwetki dałby nam sugestię. Mam jednak nadzieję, że moja nieco zbyt długa odpowiedź tutaj również wskazuje, że ta „sugestia” może być bardzo niewystarczająca lub po prostu błędna w niektórych scenariuszach.

Mężczyzna
źródło
5
Dziękujemy za szczegółową odpowiedź, a zwłaszcza fabuły są bardzo pomocne. Jednak nie do końca rozumiem, jak the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.twierdzisz.
Zhubarb
10

Spójrz na ToolBox platformy analizy poprawności klastrów (CVAP) I niektóre materiały (linki) z CVAP:

Indeks sylwetki (ogólna średnia sylwetka) większa wartość sylwetki wskazuje lepszą jakość wyniku grupowania [Chen i in. 2002]

  • N. Bolshakova, F. Azuaje. 2003. Techniki walidacji klastrów dla danych ekspresji genomu, Signal Processing. V.83. N4, str. 825–833.
  • E. Dimitriadou, S. Dolnicar, A. Weingessel. Badanie indeksów do określania liczby klastrów w zestawach danych binarnych. Psychometrika, 67 (1): 137–160, 2002.

Możesz także sprawdzić to (proste) narzędzie do szacowania liczby klastrów

Wystarczy spojrzeć na przykłady obu zestawów narzędzi (można również użyć innych technik sprawdzania poprawności klastra)

Siergiej
źródło
6

Patrzyłem dzisiaj na to samo i znalazłem tutaj interpretację . Ma to logiczny sens, ale nie jestem pewien, czy możemy ślepo zastosować interpretację naszych zestawów danych. Podsumowując, ten artykuł mówi:

0.71-1.0
A strong structure has been found

0.51-0.70
A reasonable structure has been found

0.26-0.50
The structure is weak and could be artificial. Try additional methods of data analysis.

< 0.25
No substantial structure has been found

Wydaje się jednak, że możemy użyć szerokości sylwetki, aby uchwycić wartości odstające. W zadaniu grupowania dokumentów, które obecnie wykonuję, te z ujemną szerokością sylwetki są wyraźnymi wartościami odstającymi (po sprawdzeniu krzyżowym z ich znaczeniem semantycznym). Nie jestem pewien, czy ta szerokość poprawi się po usunięciu wartości odstających (znowu, to ma logiczny sens, ale sam tego nie zrobiłem).

Legenda
źródło
4
Uwaga historyczna: stół pierwotnie pochodzi od Sewell, Grandville i PJ Rousseau. „Znajdowanie grup w danych: wprowadzenie do analizy skupień”. (1990). img546.imageshack.us/img546/4523/cnfg.png (być może opublikowane wcześniej w jednym z artykułów autorów)
Franck Dernoncourt
Link w odpowiedzi nie jest już dostępny. Czy możesz podać inne referencje?
BajajG,
Oto link do artykułu z archiwum internetowego: web.archive.org/web/20111002220803/http://www.unesco.org:80/…
Justas
1

Jeśli próbujesz wybrać liczbę klastrów do nauki bez nadzoru, być może możesz spróbować zrobić coś takiego jak-

http://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html

Używają więcej niż tylko średniej oceny sylwetki (używają rozkładu), ale ma to sens. Wydaje się, że preferuje mniejsze klastry, ale może mógłbyś spróbować tego z wygenerowanymi danymi i sprawdzić, czy działa?

Alternatywnie możesz sprawdzić ten papier

http://www.sciencedirect.com/science/article/pii/0377042787901257

Leela Prabhu
źródło