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?
Odpowiedzi:
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.
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.
źródło
the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.
twierdzisz.Spójrz na ToolBox platformy analizy poprawności klastrów (CVAP) I niektóre materiały (linki) z CVAP:
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)
źródło
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:
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).
źródło
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
źródło