Hierarchischer Clustering-Algorithmus Python!

Quellknoten: 1055669

Dieser Artikel wurde als Teil des veröffentlicht Data-Science-Blogathon

Einleitung

In diesem Artikel betrachten wir einen anderen Ansatz für das K Means-Clustering namens Hierarchical Clustering. Im Vergleich zu K Means oder K Mode hat hierarchisches Clustering einen anderen zugrunde liegenden Algorithmus für die Funktionsweise des Clustering-Mechanismus. Hierarchisches Clustering verwendet agglomerative oder divisive Techniken, während K Means eine Kombination aus Schwerpunkt und euklidischem Abstand verwendet, um Cluster zu bilden. Dendrogramme können verwendet werden, um Cluster in hierarchischem Clustering zu visualisieren, was durch aussagekräftige Taxonomien zu einer besseren Interpretation der Ergebnisse beitragen kann. Wir müssen die Anzahl der Cluster nicht angeben, wenn wir ein Dendrogramm erstellen.

Hier verwenden wir Python, um das hierarchische Clustering-Modell zu erklären. Wir haben 200 Kundendaten von Einkaufszentren in unserem Datensatz. Die Kundennummer, das Genre, das Alter, das Jahreseinkommen und die Ausgabenquote jedes Kunden sind alle im Datenrahmen enthalten. Der Betrag, der für jeden der Ausgabenwerte ihrer Kunden berechnet wird, basiert auf mehreren Kriterien, wie z. Dieser Wert reicht von 1 bis 100. Da wir die Antworten nicht kennen, wird ein Geschäftsproblem zu einem Clusterproblem. Die endgültigen Kategorien der Daten sind uns nicht bekannt. Daher ist es unser Ziel, einige bisher unbekannte Kundencluster zu entdecken.

Aber zuerst schauen wir uns einige wichtige Begriffe im hierarchischen Clustering an.

Wichtige Begriffe beim hierarchischen Clustering

Verknüpfungsmethoden

Gibt es (a) Originalbeobachtungen a[0],…,a[|a|1] im Cluster (a) und (b) Originalobjekte b[0],…,b[|b|1] im Cluster ( b), dann müssen wir den Abstand zwischen zwei Clustern (a) und (b) berechnen, um sie zu kombinieren (b). Nehmen wir an, es gibt einen Punkt (d), der keinem der Cluster zugewiesen wurde. Wir müssen herausfinden, wie weit Cluster (a) vom Cluster (d) und Cluster (b) vom Cluster (d) entfernt ist.

Cluster enthalten nun typischerweise mehrere Punkte, was eine andere Methode zur Berechnung der Distanzmatrix erfordert. Die Methode, mit der der Abstand zwischen Clustern oder der Punkt-zu-Cluster-Abstand berechnet wird, wird durch Verknüpfung bestimmt. Im Folgenden sind einige der am häufigsten verwendeten Verknüpfungsmechanismen aufgeführt:

Einzelverbindung — Für jedes Clusterpaar werden die Abstände zwischen den ähnlichsten Mitgliedern berechnet, und die Cluster werden dann basierend auf der kürzesten Entfernung zusammengeführt.

Durchschnittliche Verknüpfung — Der Abstand zwischen allen Mitgliedern eines Clusters und allen Mitgliedern eines anderen Clusters wird berechnet. Danach wird der Durchschnitt dieser Entfernungen verwendet, um zu bestimmen, welche Cluster zusammengeführt werden.

Komplette Verknüpfung — Für jedes Clusterpaar werden die Abstände zwischen den am stärksten unterschiedlichen Mitgliedern berechnet, und die Cluster werden dann basierend auf der kürzesten Entfernung zusammengeführt.

Medianverknüpfung — Wir verwenden die mittlere Distanz anstelle der durchschnittlichen Distanz, ähnlich wie bei der durchschnittlichen Verknüpfung.

Stationsverknüpfung — Bestimmt den Abstand zwischen Clustern mit der Methode der Varianzanalyse.

Schwerpunktgestänge — Der Schwerpunkt jedes Clusters wird berechnet, indem der Durchschnitt aller dem Cluster zugeordneten Punkte gebildet wird, und der Abstand zwischen den Clustern wird dann unter Verwendung dieses Schwerpunkts berechnet.

Entfernungsberechnung

Es gibt mehrere Ansätze zur Berechnung der Entfernung zwischen zwei oder mehr Clustern, wobei die euklidische Entfernung am beliebtesten ist. Andere Entfernungsmetriken wie Minkowski, City Block, Hamming, Jaccard und Chebyshev können ebenfalls mit hierarchischem Clustering verwendet werden. Unterschiedliche Distanzmetriken wirken sich auf das hierarchische Clustering aus, wie in Abbildung 2 dargestellt.

Entfernungsberechnung

Dendrogramm

Die Beziehung zwischen Objekten in einem Merkmalsraum wird durch ein Dendrogramm dargestellt. In einem Feature-Space wird er verwendet, um den Abstand zwischen jedem Paar von sequentiell zusammengeführten Objekten anzuzeigen. Dendrogramme werden häufig verwendet, um hierarchische Cluster zu untersuchen, bevor über die geeignete Anzahl von Clustern für den Datensatz entschieden wird. Der Dendrogrammabstand ist der Abstand zwischen zwei Clustern, wenn sie sich verbinden. Der Dendrogrammabstand bestimmt, ob zwei oder mehr Cluster disjunkt sind oder zu einem einzigen Cluster zusammengefügt werden können.

Beispiel

Nun schauen wir uns Beispiele an, die Python verwenden, um das hierarchische Clustering-Modell zu demonstrieren. Wir haben die Daten von 200 Mall-Kunden in unserem Datensatz. Die Kundennummer, das Genre, das Alter, das Jahreseinkommen und die Ausgabenquote jedes Kunden sind alle im Datenrahmen enthalten. Der Betrag, der für jeden der Ausgabenwerte ihrer Kunden berechnet wird, basiert auf mehreren Kriterien, wie z. B. ihrem Einkommen, der Häufigkeit, mit der sie das Einkaufszentrum pro Woche besuchen, und dem Geld, das sie ein Jahr lang ausgegeben haben. Dieser Wert reicht von 1 bis 100. Da wir die Antworten nicht kennen, wird ein Geschäftsproblem zu einem Clusterproblem.

#1 Importieren der Bibliotheken
import numpy als np import matplotlib.pyplot als plt import pandas als pd
#2 Importieren des Mall_Customers-Datensatzes von pandas
dataset = pd.read_csv('Mall_Customers.csv') X = dataset.iloc[:, [3,4]].values

Dieser neue Schritt in der hierarchischen Clusterbildung beinhaltet auch die Bestimmung der optimalen Anzahl von Clustern. Wir werden diesmal nicht die Ellenbogenmethode anwenden. Wir verwenden das Dendrogramm.

#3 Verwenden des Dendrogramms, um die optimale Anzahl von Clustern zu finden. # Als erstes importieren wir die scipy-Bibliothek. scipy ist eine Open-Source-Python-Bibliothek, die Werkzeuge zum hierarchischen Clustern und Erstellen von Dendrogrammen enthält. # Importieren Sie nur das benötigte Werkzeug. scipy.cluster.hierarchy als sch . importieren 
#Erstellen wir eine Dendrogramm-Variable # Linkage ist eigentlich der Algorithmus selbst des hierarchischen Clusterings und dann müssen wir in #linkage angeben, auf welche Daten wir anwenden und engagieren. Dies ist X-Datensatz dendrogram = sch.dendrogram(sch.linkage(X, method = "ward")) plt.title('Dendrogram') plt.xlabel('Kunden') plt.ylabel('Euklidische Distanzen') plt. zeigen()

Die Ward-Methode ist eine Methode, die versucht, die Varianz innerhalb jedes Clusters zu reduzieren. Es ist fast dasselbe wie bei der Verwendung von K-Means, um den wcss zu minimieren, um unser Ellbogen-Methodendiagramm zu zeichnen; Der einzige Unterschied besteht darin, dass wir anstelle von wcss die Varianten innerhalb des Clusters minimieren. Innerhalb jedes Clusters ist dies die Varianz. Das Dendrogramm ist unten dargestellt.

Dendogramm

Kunden werden auf der x-Achse dargestellt und der euklidische Abstand zwischen Clustern wird auf der y-Achse dargestellt. Wie ermitteln wir anhand dieses Diagramms die beste Anzahl von Clustern? Wir möchten den längsten vertikalen Abstand finden, den wir finden können, ohne horizontale Linien zu kreuzen, was die rot umrandete Linie im obigen Diagramm ist. Lassen Sie uns die Linien im Diagramm zählen und herausfinden, wie viele Cluster am besten geeignet sind. Für diesen Datensatz ist die Clusternummer 5.

#4 Anpassen von hierarchischem Clustering an den Mall_Customes-Datensatz # Es gibt zwei Algorithmen für hierarchisches Clustering: Agglomeratives Hierarchical Clustering und # Divisive Hierarchical Clustering. Wir wählen die Euklidische Distanz und die Methode ward für unsere # Algorithmusklasse aus sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 5, affinity = 'euclidean', linkage ='ward') # Versuchen wir, den hierarchischen Clustering-Algorithmus an den Datensatz X anzupassen beim Erstellen des # Cluster-Vektors, der für jeden Kunden angibt, zu welchem ​​Cluster der Kunde gehört. y_hc=hc.fit_predict(X)
# 5 Visualisieren der Cluster. Dieser Code ähnelt dem K-Means-Visualisierungscode. #Wir ersetzen nur den y_kmeans-Vektornamen durch y_hc für das hierarchische Clustering plt.scatter(X[y_hc==0, 0], X[y_hc==0, 1], s=100, c='red', label = 'Cluster 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='cyan', label ='Cluster 4') plt.scatter(X[y_hc==4, 0], X[y_hc==4, 1 ], s=100, c='magenta', label ='Cluster 5') plt.title('Clusters of Customers (Hierarchical Clustering Model)') plt.xlabel('Annual Income(k$)') plt.ylabel ('Ausgabenergebnis(1-100') plt.show()
Cluster | Hierarchisches Clustering
Cluster1(Rot), Cluster2 (Blau), Cluster3(Grün), Cluster4(Cyan), Cluster5 (Magenta)

Diese Cluster kann man sich als das Kundensegment des Einkaufszentrums vorstellen.

Das ist alles, was ein standardmäßiges hierarchisches Clustering-Modell bietet. Der Datensatz sowie alle Codes sind im Github-Bereich verfügbar.

Zusammenfassung

Bei jeder Clustering-Übung ist das Bestimmen der Anzahl von Clustern ein zeitaufwändiger Prozess. Da die kommerzielle Seite des Geschäfts mehr damit beschäftigt ist, Bedeutungen aus diesen Gruppen zu extrahieren, ist es wichtig, die Cluster in zwei Dimensionen zu visualisieren und zu sehen, ob sie unterschiedlich sind. PCA oder Faktorenanalyse können verwendet werden, um dieses Ziel zu erreichen. Dies ist eine gängige Methode, um verschiedenen Interessengruppen die Endergebnisse zu präsentieren, wodurch es für alle einfacher wird, die Ergebnisse zu konsumieren.

EndNote

Vielen Dank für das Lesen!
Ich hoffe, Ihnen hat der Artikel gefallen und Sie haben Ihr Wissen erweitert.
Zögern Sie nicht, mich zu kontaktieren on E-Mail
Etwas nicht erwähnt oder möchten Sie Ihre Meinung mitteilen? Fühlen Sie sich frei, unten zu kommentieren und ich melde mich bei Ihnen.

Über den Autor

Hardikkumar M. Dhaduk
Datenanalyst | Spezialist für digitale Datenanalyse | Data Science-Lernende
Verbinde dich mit mir auf Linkedin
Verbinde dich mit mir auf Github

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von Analytics Vidhya und werden nach Ermessen des Autors verwendet.

Quelle: https://www.analyticsvidhya.com/blog/2021/08/hierarchical-clustering-algorithm-python/

Zeitstempel:

Mehr von Analytics-Vidhya