ML Atlas

05 · Bez nadzoru · 4 min czytania · aktualizacja

Na czym polega klasteryzacja hierarchiczna i jak czytać dendrogram?

W skrócie

Klasteryzacja hierarchiczna łączy punkty krok po kroku w coraz większe grupy i rysuje z tego drzewo – dendrogram. Liczbę grup wybierasz dopiero na końcu.

Co to jest

Klasteryzacja hierarchiczna to metoda grupowania, która zamiast jednego podziału buduje całe drzewo zagnieżdżonych podziałów. W wersji aglomeracyjnej (najczęstszej) każdy punkt zaczyna jako osobna grupa, a algorytm w każdym kroku łączy dwie najbliższe grupy, aż zostanie jedna. Zapis tych połączeń to dendrogram.

Dendrogram czyta się od dołu: im wyżej dwie gałęzie się łączą, tym bardziej różne były scalane grupy. Liczbę klastrów wybiera się na końcu, „przecinając” drzewo poziomą linią na wybranej wysokości. To duża przewaga nad k-średnich: jedno obliczenie daje odpowiedź dla każdego k, a przy okazji widać, czy dane mają strukturę wielopoziomową — gatunki w rodzajach, rodzaje w rodzinach.

Mechanizm — dlaczego tak działa

Kluczowa decyzja to definicja odległości między grupami, tzw. kryterium łączenia (linkage). Odległość między dwoma punktami jest jasna; między dwiema chmurami punktów już nie.

Pojedyncze (single) — odległość najbliższej pary punktów z obu grup. Potrafi wykryć skupiska dowolnego kształtu, ale cierpi na efekt łańcucha: wystarczy kilka punktów tworzących most, by dwie wyraźne grupy zlały się w jedną. Często kończy się jedną ogromną grupą i kilkoma pojedynczymi punktami.

Pełne (complete) — odległość najdalszej pary. Sprzyja zwartym grupom o podobnej średnicy, ale jest wrażliwe na wartości odstające.

Średnie (average) — średnia odległość po wszystkich parach. Kompromis między dwoma poprzednimi.

Warda — łączy te dwie grupy, których scalenie najmniej zwiększa sumę kwadratów odległości od środków. To to samo kryterium co w k-średnich, tylko optymalizowane zachłannie, krok po kroku. Dlatego Ward daje zwarte, kuliste grupy podobnej wielkości i zwykle jest dobrym domyślnym wyborem.

Zachłanność ma konsekwencję: raz połączonych grup nigdy się nie rozdziela. Błąd na dole drzewa ciągnie się do samej góry. Druga cecha to koszt — klasyczny algorytm potrzebuje macierzy odległości wszystkich par, czyli pamięci rosnącej z kwadratem liczby punktów. Przy kilkudziesięciu tysiącach obserwacji robi się to kłopotliwe. Trzecia: jak każda metoda oparta na odległościach, wynik zależy od skali cech i wybranej metryki.

Na przykładzie

Pingwiny z Palmer Archipelago (342 osobniki, cztery standaryzowane pomiary, trzy gatunki) przecinamy na trzy grupy i porównujemy z gatunkami indeksem ARI (1 = idealna zgodność). Metoda Warda: ARI 0,92, grupy liczą 162, 123 i 57 pingwinów. Pełne łączenie: 0,90. Średnie: 0,64, a podział to 219, 119 i 4. Pojedyncze: 0,66, a podział to 218, 123 i... 1. Efekt łańcucha w czystej postaci: pingwiny Adeli i maskowe zostały połączone mostem pośrednich osobników, a trzecią „grupę” stanowi pojedynczy nietypowy ptak.

Ciekawe jest porównanie z k-średnich, które na tych samych danych osiąga ARI 0,79. Ward optymalizuje to samo kryterium, ale zachłannie — i tutaj właśnie ta niedoskonała optymalizacja trafiła bliżej gatunków. To przypomina, że minimum sumy kwadratów i biologiczny podział to różne rzeczy. Na standaryzowanych irysach (150 kwiatów) obraz jest podobny: pojedyncze łączenie dzieli dane na 100, 49 i 1 kwiat.

Dane: Iris (irysy Fishera) Palmer Penguins (pingwiny z Antarktydy)

W praktyce

  • W scikit-learn: AgglomerativeClustering(n_clusters=3, linkage="ward"); zamiast n_clusters można podać distance_threshold, czyli wysokość cięcia.
  • Dendrogram najwygodniej narysować przez SciPy: scipy.cluster.hierarchy.linkage i dendrogram.
  • Przed klasteryzacją standaryzuj cechy (StandardScaler); Ward wymaga odległości euklidesowej, inne kryteria przyjmą dowolną metrykę (metric="cosine", macierz odległości Gowera dla danych mieszanych).
  • Duże, pionowe odcinki w dendrogramie sugerują naturalne miejsce cięcia; brak takich odcinków to sygnał słabej struktury.
  • Dla dużych zbiorów podaj macierz sąsiedztwa (connectivity) albo najpierw zagreguj dane (np. k-średnich na kilkaset grup, potem hierarchia).
  • Typowy błąd: pojedyncze łączenie „bo wykrywa dowolne kształty” na zaszumionych danych — kończy się jedną wielką grupą.

Najczęstsze pytania

Czym różni się klasteryzacja hierarchiczna od k-średnich?
K-średnich daje jeden podział dla ustalonego k i zależy od losowego startu. Hierarchiczna buduje deterministycznie całe drzewo podziałów, z którego k wybierasz po fakcie. Za to jest dużo wolniejsza na dużych danych i nie poprawia raz podjętych decyzji.
Które kryterium łączenia wybrać?
Na początek Warda — daje zwarte, wyrównane grupy i zwykle najlepiej odtwarza naturalne skupiska. Pełne i średnie przydają się przy nieeuklidesowych metrykach. Pojedyncze tylko wtedy, gdy grupy są wyraźnie odseparowane, a szumu jest mało.
Jak wybrać, gdzie przeciąć dendrogram?
Szukaj najdłuższych pionowych odcinków — tam połączenie wymagało dużego skoku odległości. Pomocniczo policz współczynnik sylwetki dla kilku cięć. Ostatecznie liczba grup to decyzja merytoryczna, nie tylko statystyczna.

Źródła

Zobacz też