Metoda klasterowania bez wcześniejszego wyznaczania k
K-means klasterowanie wymaga wcześniego decyduzenia: musisz określić liczbę grup przed tym, jak zobaczysz, jak dane klasyfikują się. Klasterowanie hierarchiczne unika tego, budując pełną strukturę wciśniętą z grupami, od każdego punktu jako osobnej klasy po wszystkie punkty w jednej klasie, i pozwalając ci potem określić miejsce, gdzie chcesz przekroju. Ta struktura nazywa się dendrogram, a to jest głównym wyjściem narzędzia: diagram drzewa, w którym liście są pojedynczymi punktami danych, a każda wewnętrzna gałąź oznacza połączenie, rysowana na wysokości proporcjonalnej do tymczasowej różnorodności dwóch rzeczy, które zostały połączone.
Najczęściej stosowanym w praktyce jest wariant agglomeratywny, co oznacza, że działa od dołu. Zaczyna się od traktowania każdego pojedynczego punktu danych jako osobnej klasy, a następnie powtarzająco znajduje najbardziej bliskie klasy i łączy je w jedną, zapisując odległość, na której to nastąpiło. Kontynuuje to działanie — liczba klas zmniejsza się o jeden na każdym kroku — aż wszystko zostanie połączone w jednej klasie zawierającej całe zestaw danych. Zastosowane do danych takich jak purchase i dochód klientów, liście wynikowego drzewa są pojedynczymi klientami, a poruszając się w górę drzewa, możesz obserwować, jak małe grupy podobnych klientów łączą się w coraz większe segmenty, aż do triviumjnej jednej klasy, która to wszystko.
Łączenie: jak miary odległości między dwiema klastrami?
Sklejanie dwóch najbliższych klastrów jest proste, gdy klaster to pojedyncze punkt, ale już kiedy klastry zawierają wiele punktów, „odległość między dwiema klastrami” wymaga definicji, a ta definicja nazywa się metodą łaczenia. Jest to jedno z wybranych decyzji, która najbardziej zmienia kształt ostatecznego drzewa.
Podstawienie tego samego zestawu danych do metody single linkage i potem Warda może przynieść widocznie różne drzewa. Single linkage jest szczególnie podatne na tworzenie jednego dominującego klastra, który pochłonął prawie wszystko poprzezła szereg sąsiadów bliskich, z rozpraszonymi małymi klastrami sklejającymi się w bardzo późnym etapie — ostrzeżenie, które jest jasne na dendrogramie (kilka sklejań zachodzących na wysokościach znacznie wyższych niż reszta) ale łatwo jest je pominąć, jeśli spojrzymy tylko na końcowe płaskie etykiety klastrów.
Czytanie dendrogramu
Dendrogram koduje jednocześnie dwa rzeczy: które elementy połączyły się z którymi, oraz jak niepodobne były one w momencie połączenia. Wysokość gałęzi jest kluczowym elementem informacji — niska wysokość połączenia oznacza, że sklejane klastery były bardzo podobne, a wysoka wysokość połączenia oznacza, że były one znacznie różne i algorytm, w pewnym sensie, zmuszony był do ich połączenia, ponieważ nie było lepszej opcji.
Aby wybrać liczbę klastrów na podstawie dendrogramu, szukaj najwyższych pionowych przepustnic między kolejnymi wysokościami połączeń. Następnie dokonaj poziomej kroki przez jedną z tych przepustnic. Liczba linii pionowych przeciętych przez krok jest liczbą klastrów uzyskanych na tym kroku. Długa przepustnica przed połączeniem jest dowodem, że klastry po obu stronach były rzeczywiście różne, ponieważ wymagało to dużego skoku niepodobieństwa, aby je wreszcie połączyć; seria krótkich przepustnic sugeruje, że drzewo nie ma silnie preferowanej liczby klastrów i podział jest kwestią wyboru, a nie jasnej strukturalnej fakty.
Gdy mamy więcej niż kilkadesięci punktów danych, pełny dendrogram staje się niewczytelnym murkiem linii. Standardowym rozwiązaniem jest trzcienie: tylko ostatnie p połączeń są rysowane, a każda pozostająca liść reprezentuje poddrzewo związałe, a nie pojedynczy punkt (w SciPy to opcja truncate_mode='lastp'). To pozwalanie na utrzymanie diagramu czytelnego, zachowując dokładnie tę część drzewa, która ma kluczowe znaczenie dla wyboru kroku — najwyższych i najważniejszych połączeń — z kosztem niezwłocznej możliwości śledzenia pojedynczego punktu danych do konkretnego liścia.
Z drzewa do etykiet: wytnijcie za pomocą fcluster
Dendrogram sam w sobie to wizualizacja, nie zestaw przypisanych grup. Aby go skonwertować na używalne etykiety — takie, które można ponownie dołączyć do tabeli klientów — trzeba wytnąć drzewo, co SciPy wykonuje za pomocą funkcji fcluster w jeden z dwóch sposobów: podając dokładną liczbę grup, którą chcemy uzyskać, lub określając próg odległości i pozwalając drzewu wygenerować tyle grup, ile istnieje poniżej danego poziomu. Wytnięcie drzewa zbudowanego na podstawie danych klientów przy użyciu łączenia pojedynczego punktu w dwie lub trzy grupy może prowadzić do bardzo różnych wyników, w zależności od tego, gdzie sięgają najwyższe przepady; warto wygenerować kilka kandydatów na miejsce wytnięcia i porównać je zamiast zobowiązać się do pierwszego.
Po tym, jak wytnięcie tworzy płaskie etykiety grup, można ocenić je w ten sam sposób, w jaki są oceniane grupy k-means — najprostszym sposobem jest użycie indeksu silhouette, który pomiaruje, ile dobrze każe punkt pasować do przypisanej mu grupy w porównaniu z najbliższą sasiadową grupą. To daje obiektywne podejście do porównania klasterizacji hierarchicznej z k-means uruchomionym na tych samych standardyzowanych danych: jeśli klasterizacja hierarchiczna przy użyciu łączenia Ward produkuje wyraźnie wyższy indeks silhouette przy trzech grupach niż k-means, to jest to autentyczne dowody, że podejście oparte na drzewie odniosło bardziej naturalne granice w tym konkretnym zestawie danych, a nie tylko inny, ale równie prawidłowy podział.
Gdy drzewo przewyższa stały liczbę centroidów
Klasterizacja hierarchiczna niosąca rzeczywiste obciążenie komputeryzacyjne — budowanie pełnego drzewa z n punktów ma złożoność czasową i pamięciową prawie kwadratową lub gorszą, co czyni ją niepraktyczną dla zbiorów danych zawierających setki tysięcy wierszy, podczas gdy k-means, o liniowej złożoności na iterację, jest praktyczny. Z tego powodu klasterizacja hierarchiczna nie jest domyślnym wyborem dla skali dużych i często odnowianych pipeline-segmentacji. Gdzie okazuje się jej wartość, to w analizie eksploracyjnej: ponieważ dendrogram pokazuje wszystkie możliwe podziały jednocześnie, badacz nie musi zdecydować się na liczbę klastrów przed zrozumieniem, czy dwie klasyfikacje, trzy klasyfikacje lub sześć klasyfikacji jest bardziej naturalnym odczytem danych. Jest również przydatna dokładnie dlatego, że nie dzieli założenia k-means na okrągłe i podobnie wielkie klastry, a różne wybory łączenia dają sposób na testowanie czułości segmentacji wobec tego założenia — jeśli metody Warda, średniej i pojedynczego łączenia produkują szeroko podobne grupy, to jest znacznie silniejszy sygnał, że klasy są rzeczywiste niż gdy one pojawiają się tylko przy jednej konkretnej metodzie łączenia.
Często zadawane pytania
Jak różni się agglomeryjna klasteryzacja od dezygneracyjnej hierarchicznej?
Agglomeryjna klasteryzacja działa od dołu: zaczyna od każdego punktu jako osobnego klastra i powtarza proces połączenia najbliższych par aż pozostanie jeden cluster. Dezygneracyjna klasteryzacja działa od góry: zaczyna od tego, że wszystko znajduje się w jednym klastrze i powtarza jego podział. Agglomeryjna jest znacznie częściej stosowana w praktyce ze względu na prostsze i efektywniejsze implementowanie.
Dlaczego metoda single linkage i Ward'a dają tak różne wyniki dla tych samych danych?
Definiują one inaczej odległość między klastrami. Single linkage używa najbardziej bliskiej pary punktów między klastrami, co sprawia, że jest narażone na łańcuchanie — łączy klastry poprzez cienką mostek z punktami intermedyjnymi w jeden długi, sztywny cluster. Metoda Ward'a łączy parę klastrów, która najmniej zwiększa sumalną odchylenie kwadratowe wewnątrz klastra, co tendencja do tworzenia bardziej skupionych i równoważnych klastrów.
Jak mogę określić liczbę klastrów, na które należy podzielić dendrogram?
Podglądaj wysokości łączeń i znajdź najwyższą pionową klatkę między kolejnymi łączeniami, a następnie podziel się przez tę klatkę. Wysoka klatka oznacza, że klastry na obu stronach były bardzo różne przed zmuszeniem ich do połączenia, co jest dowodem prawdziwego granicznego miejsca. Dobre praktyki polega na porównaniu kilku propozycji podziałów przy użyciu skoroszyta silhouette zamiast opierać się jedynie na inspekcji wizualnej.
Czemu dendrogram jest przerywany za pomocą truncate_mode='lastp'?
Bo pełny dendrogram dla więcej niż kilkudziesięciu punktów tworzy tak wiele nawiązań pokrywających się, że staje się nieczytelny. Przerwanie pokazuje tylko ostatnie p łączeń, zwiadowczo upraszczając dolne gałęzie do pojedynczych liści, co pozwala zachować najwyższe i najbardziej decyzyjnie istotną część drzewa czytelna.
Czy klasteryzacja hierarchiczna może obsłużyć bardzo duże zestawy danych?
Nie efektywnie. Budowanie pełnego drzewa ma koszt czasu i pamięci kwadratowy lub gorszy w stosunku do liczby punktów, co sprawia, że nie jest praktyczne dalej niż kilkaset tysięcy wierszy. K-means lub DBSCAN są bardziej popularnymi wyborem po przekroczeniu tego punktu, a klasteryzacja hierarchiczna zostaje zastąpiona dla mniejszych analiz eksploracyjnych.
▶ Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Hierarchical Clustering and Dendrograms i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.