Hierarchiczny algorytm klastrowania Python!

Węzeł źródłowy: 1055669

Ten artykuł został opublikowany jako część Blogathon Data Science

Wprowadzenie

W tym artykule przyjrzymy się innemu podejściu do grupowania K-średnich, zwanemu grupowaniem hierarchicznym. W porównaniu do K Means lub trybu K, klastrowanie hierarchiczne ma inny podstawowy algorytm działania mechanizmu klastrowania. Hierarchiczne grupowanie wykorzystuje techniki aglomeracyjne lub dzielące, podczas gdy K Means wykorzystuje kombinację odległości środka ciężkości i odległości euklidesowej do tworzenia klastrów. Dendrogramy mogą być używane do wizualizacji klastrów w klastrach hierarchicznych, co może pomóc w lepszej interpretacji wyników za pomocą zrozumiałych taksonomii. Przy wykonywaniu dendrogramu nie musimy określać liczby klastrów.

Tutaj używamy języka Python do wyjaśnienia hierarchicznego modelu klastrowania. W naszym zbiorze danych mamy dane 200 klientów centrów handlowych. Identyfikator klienta, gatunek, wiek, roczny dochód i wynik wydatków są zawarte w ramce danych. Kwota obliczona dla każdego z wyników wydatków ich klientów opiera się na kilku kryteriach, takich jak ich dochód, liczba wizyt w centrum handlowym w tygodniu oraz kwota pieniędzy wydana w ciągu roku. Ten wynik waha się od 1 do 100. Ponieważ nie znamy odpowiedzi, problem biznesowy staje się problemem związanym z klastrami. Ostateczne kategorie danych nie są nam znane. W rezultacie naszym celem jest odkrycie nieznanych wcześniej skupisk klientów.

Ale najpierw przyjrzymy się kilku ważnym terminom w klastrowaniu hierarchicznym.

Ważne terminy w klastrowaniu hierarchicznym

Metody łączenia

Jeśli w skupieniu znajdują się (a) oryginalne obserwacje a[|a|0] (a) i (b) oryginalne obiekty b[1],…,b[|b|0] ( b), to musimy obliczyć odległość między dwoma skupieniami (a) i (b), aby je połączyć (b). Powiedzmy, że istnieje punkt (d), który nie został przypisany do żadnego ze skupień. Musimy dowiedzieć się, jak daleko klaster (a) znajduje się od klastra (d) i klaster (b) od klastra (d).

Klastry obecnie zwykle zawierają wiele punktów, co wymaga innej metody obliczania macierzy odległości. Metoda obliczania odległości między klastrami lub odległości między punktami jest określana przez powiązanie. Oto niektóre z najczęściej używanych mechanizmów powiązań:

Pojedyncze połączenie — Odległości między najbardziej podobnymi elementami są obliczane dla każdej pary klastrów, a następnie klastry są łączone na podstawie najkrótszej odległości.

Średnie powiązanie — Obliczana jest odległość między wszystkimi członkami jednego klastra i wszystkimi członkami innego klastra. Następnie średnia z tych odległości jest używana do określenia, które klastry zostaną połączone.

Kompletne połączenie — Dla każdej pary klastrów obliczane są odległości między najbardziej odmiennymi członkami, a następnie klastry są łączone w oparciu o najkrótszą odległość.

Powiązanie mediany — Używamy mediany odległości zamiast średniej odległości w sposób podobny do średniego powiązania.

Powiązanie z oddziałem — Określa odległość między skupieniami metodą analizy wariancji.

Połączenie centroidalne — Środek ciężkości każdego skupienia jest obliczany poprzez uśrednienie wszystkich punktów przypisanych do klastra, a następnie obliczana jest odległość między skupieniami przy użyciu tego środka ciężkości.

Obliczanie odległości

Istnieje wiele podejść do obliczania odległości między dwoma lub więcej klastrami, z których najbardziej popularna jest odległość euklidesowa. Inne metryki odległości, takie jak Minkowski, City Block, Hamming, Jaccard i Czebyszew, również mogą być używane z klastrami hierarchicznymi. Różne metryki odległości mają wpływ na hierarchiczne grupowanie, jak pokazano na rysunku 2.

obliczanie odległości

Dendrogram

Zależność między obiektami w przestrzeni cech jest reprezentowana przez dendrogram. W przestrzeni cech służy do pokazania odległości między każdą parą kolejno połączonych obiektów. Dendrogramy są często używane do badania klastrów hierarchicznych przed podjęciem decyzji o odpowiedniej liczbie klastrów dla zbioru danych. Odległość dendrogramu to odległość między dwoma klastrami, gdy się łączą. Odległość dendrogramu określa, czy dwa lub więcej skupień jest rozłącznych, czy też można je połączyć, tworząc pojedyncze skupienie.

Przykład

Teraz przyjrzymy się przykładom wykorzystującym Pythona do zademonstrowania hierarchicznego modelu klastrowania. Mamy w naszych danych 200 klientów centrów handlowych zestaw danych. Identyfikator klienta, gatunek, wiek, roczny dochód i wynik wydatków są zawarte w ramce danych. Kwota obliczona dla każdego z wyników wydatków ich klientów opiera się na kilku kryteriach, takich jak ich dochód, liczba wizyt w centrum handlowym w tygodniu oraz pieniądze, które wydali w ciągu roku. Ten wynik waha się od 1 do 100. Ponieważ nie znamy odpowiedzi, problem biznesowy staje się problemem związanym z klastrami.

#1 Importowanie bibliotek
importuj numpy jako np importuj matplotlib.pyplot jako plt importuj pandy jako pd
#2 Importowanie zbioru danych Mall_Customers przez pandas
zestaw danych = pd.read_csv('Mall_Customers.csv') X = zestaw danych.iloc[:,[3,4]].wartości

Ten nowy krok w hierarchicznym klastrowaniu obejmuje również określenie optymalnej liczby klastrów. Tym razem nie będziemy używać metody łokciowej. Wykorzystamy dendrogram.

#3 Wykorzystanie dendrogramu do znalezienia optymalnej liczby klastrów. # Najpierw zaimportujemy bibliotekę scipy. scipy to # biblioteka Pythona typu open source, która zawiera narzędzia do hierarchicznego grupowania i budowania dendrogramów. # Importuj tylko potrzebne narzędzie. importuj scipy.cluster.hierarchy jako sch 
#Utwórzmy zmienną dendrogramu # linkage jest w rzeczywistości samym algorytmem hierarchicznego klastrowania, a następnie w #linkage musimy określić, które dane stosujemy i wykorzystujemy. To jest dendrogram zbioru danych X = sch.dendrogram(sch.linkage(X, method = "ward")) plt.title('Dendrogram') plt.xlabel('Klienci') plt.ylabel('Odległości euklidesowe') plt. pokazywać()

Metoda Warda to metoda, która próbuje zmniejszyć wariancję w każdym skupieniu. To prawie tak samo, jak wtedy, gdy użyliśmy K-średnich do zminimalizowania wcss do wykreślenia naszego wykresu metody łokcia; jedyną różnicą jest to, że zamiast wcss minimalizujemy warianty wewnątrz klastra. W każdym skupieniu jest to wariancja. Dendrogram pokazano poniżej.

dendogram

Klienci są przedstawieni na osi x, a odległość euklidesowa między skupieniami jest przedstawiona na osi y. Jak określić najlepszą liczbę klastrów na podstawie tego diagramu? Chcemy znaleźć najdłuższą możliwą odległość w pionie bez przekraczania linii poziomych, czyli linii zaznaczonej na czerwono na powyższym schemacie. Policzmy linie na diagramie i obliczmy, ile klastrów jest najlepszych. Dla tego zestawu danych numer klastra będzie wynosił 5.

#4 Dopasowanie hierarchicznego klastrowania do zbioru danych Mall_Customes # Istnieją dwa algorytmy hierarchicznego klastrowania: aglomeracyjne hierarchiczne klastrowanie i # Divisive Hierarchical Clustering. Wybieramy metodę Euclidean distance and ward dla naszej # klasy algorytmu ze sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 5, affinity = 'euclidean', linkage ='ward') # Spróbujmy dopasować hierarchiczny algorytm grupowania do zbioru danych X podczas tworzenia wektora # klastrów, który mówi każdemu klientowi, do którego klastra należy klient. y_hc=hc.fit_predict(X)
#5 Wizualizacja klastrów. Ten kod jest podobny do kodu wizualizacji k-średnich. # Zamieniamy tylko nazwę wektora y_kmeans na y_hc dla klastrowania hierarchicznego plt.scatter(X[y_hc==0, 0], X[y_hc==0, 1], s=100, c='red', label = 'Skupienie 1') plt.scatter(X[y_hc==1, 0], X[y_hc==1, 1], s=100, c='blue', label ='Cluster 2') plt.scatter( X[y_hc==2, 0], X[y_hc==2, 1], s=100, c='green', label ='Cluster 3') plt.scatter(X[y_hc==3, 0] , X[y_hc==3, 1], s=100, c='cyjan', label ='Cluster 4') plt.scatter(X[y_hc==4, 0], X[y_hc==4, 1 ], s=100, c='magenta', label ='Cluster 5') plt.title('Grupy klientów (Hierarchiczny model grupowania)') plt.xlabel('Dochód roczny (k$)') plt.ylabel („Wynik wydatków (1-100”) plt.show()
klastry | Klastrowanie hierarchiczne
Klaster 1 (czerwony), Klaster 2 (niebieski), Klaster 3 (zielony), Klaster 4 (cyjan), Klaster 5 (purpurowy)

Te klastry można traktować jako segment klientów centrum handlowego.

To wszystko, co zawiera standardowy hierarchiczny model klastrowania. Zbiór danych oraz wszystkie kody są dostępne w sekcji Github.

Wnioski

W każdym ćwiczeniu grupowania określenie liczby klastrów jest procesem czasochłonnym. Ponieważ komercyjna strona biznesu jest bardziej zainteresowana wydobywaniem znaczenia z tych grup, kluczowe znaczenie ma wizualizacja klastrów w dwóch wymiarach i sprawdzenie, czy są odrębne. Do osiągnięcia tego celu można wykorzystać analizę PCA lub analizę czynnikową. Jest to powszechna metoda prezentowania wyników końcowych różnym zainteresowanym stronom, ułatwiająca wszystkim korzystanie z wyników.

EndNote

Dziękuję za przeczytanie!
Mam nadzieję, że podobał Ci się artykuł i poszerzyłeś swoją wiedzę.
Nie krępuj się kontaktować się ze mną on E-mail
Coś, o czym nie wspomniano lub chcesz podzielić się swoimi przemyśleniami? Zapraszam do komentowania poniżej. Skontaktuję się z Tobą.

O autorze

Hardikkumar M. Dhaduk
Analityk danych | Specjalista ds. Analizy Danych Cyfrowych | Uczący się Data Science
Połącz się ze mną na LinkedIn
Połącz się ze mną na Github

Media pokazane w tym artykule nie są własnością Analytics Vidhya i są używane według uznania Autora.

Źródło: https://www.analyticsvidhya.com/blog/2021/08/hierarchical-clustering-algorithm-python/

Znak czasu:

Więcej z Analityka Widhja