Hierarchisches Clustering ist ein weiterer unbeaufsichtigter Algorithmus für maschinelles Lernen, der zum Gruppieren der unbeschrifteten Datensätze in einem Cluster verwendet wird und auch als „hierarchisches Clustering“ bezeichnet wird Hierarchische Clusteranalyse oder HCA.
In diesem Algorithmus entwickeln wir die Hierarchie von Clustern in Form eines Baums, und diese baumförmige Struktur wird als bezeichnet Dendrogramm .
Manchmal sehen die Ergebnisse von K-Means-Clustering und hierarchischem Clustering ähnlich aus, aber beide unterscheiden sich je nach Funktionsweise. Da es nicht erforderlich ist, die Anzahl der Cluster vorab festzulegen, wie wir es beim K-Means-Algorithmus getan haben.
Die hierarchische Clustering-Technik verfügt über zwei Ansätze:
Warum hierarchisches Clustering?
Da wir schon andere haben Clusterbildung Algorithmen wie z K-Means-Clustering Warum brauchen wir dann hierarchisches Clustering? Wie wir beim K-Means-Clustering gesehen haben, gibt es bei diesem Algorithmus einige Herausforderungen, nämlich eine vorgegebene Anzahl von Clustern, und er versucht immer, Cluster derselben Größe zu erstellen. Um diese beiden Herausforderungen zu lösen, können wir uns für den hierarchischen Clustering-Algorithmus entscheiden, da wir bei diesem Algorithmus keine Kenntnisse über die vordefinierte Anzahl von Clustern benötigen.
In diesem Thema besprechen wir den Agglomerative Hierarchical Clustering-Algorithmus.
Agglomerative hierarchische Clusterbildung
Der agglomerative hierarchische Clustering-Algorithmus ist ein beliebtes Beispiel für HCA. Um die Datensätze in Cluster zu gruppieren, folgt Folgendes: Bottom-up-Ansatz . Dies bedeutet, dass dieser Algorithmus zu Beginn jeden Datensatz als einen einzelnen Cluster betrachtet und dann beginnt, das nächstgelegene Clusterpaar miteinander zu kombinieren. Dies geschieht so lange, bis alle Cluster zu einem einzigen Cluster zusammengeführt sind, der alle Datensätze enthält.
Diese Clusterhierarchie wird in Form des Dendrogramms dargestellt.
Wie funktioniert das agglomerative hierarchische Clustering?
Die Funktionsweise des AHC-Algorithmus kann anhand der folgenden Schritte erklärt werden:
Hinweis: Um das hierarchische Clustering besser zu verstehen, wird empfohlen, einen Blick auf das K-Means-Clustering zu werfen
Messen Sie den Abstand zwischen zwei Clustern
Wie wir gesehen haben, ist die nächster Abstand zwischen den beiden Clustern ist entscheidend für die hierarchische Clusterbildung. Es gibt verschiedene Möglichkeiten, den Abstand zwischen zwei Clustern zu berechnen, und diese Methoden legen die Regel für die Clusterbildung fest. Diese Maßnahmen werden aufgerufen Verknüpfungsmethoden . Nachfolgend sind einige der beliebtesten Verknüpfungsmethoden aufgeführt:
Von den oben genannten Ansätzen können wir jeden davon entsprechend der Art des Problems oder der Geschäftsanforderung anwenden.
Woking des Dendrogramms in hierarchischer Clusterbildung
Das Dendrogramm ist eine baumartige Struktur, die hauptsächlich dazu dient, jeden vom HC-Algorithmus ausgeführten Schritt als Speicher zu speichern. Im Dendrogrammdiagramm zeigt die Y-Achse die euklidischen Abstände zwischen den Datenpunkten und die X-Achse zeigt alle Datenpunkte des gegebenen Datensatzes.
Die Funktionsweise des Dendrogramms kann anhand des folgenden Diagramms erklärt werden:
Im obigen Diagramm zeigt der linke Teil, wie Cluster beim agglomerativen Clustering entstehen, und der rechte Teil zeigt das entsprechende Dendrogramm.
- Wie wir oben besprochen haben, verbinden sich zunächst die Datenpunkte P2 und P3 und bilden einen Cluster, entsprechend wird ein Dendrogramm erstellt, das P2 und P3 in einer rechteckigen Form verbindet. Die Höhe wird anhand des euklidischen Abstands zwischen den Datenpunkten bestimmt.
- Im nächsten Schritt bilden P5 und P6 einen Cluster und das entsprechende Dendrogramm wird erstellt. Er ist höher als zuvor, da der euklidische Abstand zwischen P5 und P6 etwas größer ist als der zwischen P2 und P3.
- Auch hier werden zwei neue Dendrogramme erstellt, die P1, P2 und P3 in einem Dendrogramm und P4, P5 und P6 in einem anderen Dendrogramm kombinieren.
- Zuletzt wird das endgültige Dendrogramm erstellt, das alle Datenpunkte miteinander kombiniert.
Wir können die Dendrogramm-Baumstruktur auf jeder Ebene entsprechend unseren Anforderungen zerschneiden.
Python-Implementierung des agglomerativen hierarchischen Clusterings
Jetzt werden wir die praktische Implementierung des agglomerativen hierarchischen Clustering-Algorithmus mit Python sehen. Um dies zu implementieren, verwenden wir dasselbe Datensatzproblem, das wir im vorherigen Thema des K-Means-Clusterings verwendet haben, damit wir beide Konzepte leicht vergleichen können.
Der Datensatz enthält die Informationen von Kunden, die ein Einkaufszentrum zum Einkaufen besucht haben. Der Besitzer eines Einkaufszentrums möchte also mithilfe der Datensatzinformationen einige Muster oder ein bestimmtes Verhalten seiner Kunden finden.
Schritte zur Implementierung von AHC mit Python:
Die Schritte zur Implementierung sind die gleichen wie beim k-means-Clustering, mit Ausnahme einiger Änderungen, beispielsweise der Methode zum Ermitteln der Anzahl der Cluster. Nachfolgend sind die Schritte aufgeführt:
Schritte zur Datenvorverarbeitung:
In diesem Schritt importieren wir die Bibliotheken und Datensätze für unser Modell.
# Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd
Die oben genannten Codezeilen werden zum Importieren der Bibliotheken verwendet, um bestimmte Aufgaben auszuführen, z Numpy für die mathematischen Operationen, matplotlib zum Zeichnen der Diagramme oder des Streudiagramms und Pandas zum Importieren des Datensatzes.
# Importing the dataset dataset = pd.read_csv('Mall_Customers_data.csv')
Wie oben besprochen, haben wir denselben Datensatz von importiert Mall_Customers_data.csv, wie wir es beim k-means-Clustering getan haben. Betrachten Sie die folgende Ausgabe:
mamta kulkarni
Hier extrahieren wir nur die Merkmalsmatrix, da wir keine weiteren Informationen über die abhängige Variable haben. Der Code ist unten angegeben:
x = dataset.iloc[:, [3, 4]].values
Hier haben wir nur 3 und 4 Spalten extrahiert, da wir ein 2D-Diagramm verwenden, um die Cluster zu sehen. Daher betrachten wir den jährlichen Einkommens- und Ausgabenwert als Matrix der Merkmale.
Schritt 2: Finden der optimalen Anzahl von Clustern mithilfe des Dendrogramms
Jetzt werden wir mithilfe des Dendrogramms die optimale Anzahl von Clustern für unser Modell ermitteln. Dafür werden wir verwenden scipy Bibliothek, da sie eine Funktion bereitstellt, die das Dendrogramm für unseren Code direkt zurückgibt. Betrachten Sie die folgenden Codezeilen:
#Finding the optimal number of clusters using the dendrogram import scipy.cluster.hierarchy as shc dendro = shc.dendrogram(shc.linkage(x, method='ward')) mtp.title('Dendrogrma Plot') mtp.ylabel('Euclidean Distances') mtp.xlabel('Customers') mtp.show()
In den obigen Codezeilen haben wir die importiert Hierarchie Modul der Scipy-Bibliothek. Dieses Modul stellt uns eine Methode zur Verfügung shc.denrogram(), was dauert Verknüpfung() als Parameter. Die Verknüpfungsfunktion wird verwendet, um den Abstand zwischen zwei Clustern zu definieren. Daher haben wir hier x (Merkmalsmatrix) und die Methode ' übergeben. Station ,‘ die beliebte Verknüpfungsmethode beim hierarchischen Clustering.
Die verbleibenden Codezeilen dienen zur Beschreibung der Beschriftungen für das Dendrogrammdiagramm.
Ausgabe:
Durch Ausführen der obigen Codezeilen erhalten wir die folgende Ausgabe :
Anhand dieses Dendrogramms ermitteln wir nun die optimale Clusteranzahl für unser Modell. Dafür finden wir die maximaler vertikaler Abstand das schneidet keinen horizontalen Balken. Betrachten Sie das folgende Diagramm:
Im obigen Diagramm haben wir die vertikalen Abstände dargestellt, die ihre horizontalen Balken nicht schneiden. Wie wir uns vorstellen können, ist die 4ThEntfernung sucht das Maximum, also dementsprechend, Die Anzahl der Cluster beträgt 5 (die vertikalen Linien in diesem Bereich). Wir können auch die 2 nehmenndZahl, da sie ungefähr der 4 entsprichtThAbstand, aber wir werden die 5 Cluster berücksichtigen, weil wir sie im K-Means-Algorithmus berechnet haben.
Die optimale Anzahl von Clustern beträgt also 5 , und wir werden das Modell im nächsten Schritt damit trainieren.
Schritt 3: Trainieren des hierarchischen Clustering-Modells
Da wir die erforderliche optimale Anzahl an Clustern kennen, können wir nun unser Modell trainieren. Der Code ist unten angegeben:
#training the hierarchical model on dataset from sklearn.cluster import AgglomerativeClustering hc= AgglomerativeClustering(n_clusters=5, affinity='euclidean', linkage='ward') y_pred= hc.fit_predict(x)
Im obigen Code haben wir die importiert AgglomerativeClustering Klasse des Clustermoduls der Scikit-Learn-Bibliothek.
Dann haben wir das Objekt dieser Klasse mit dem Namen erstellt hc. Die AgglomerativeClustering-Klasse akzeptiert die folgenden Parameter:
In der letzten Zeile haben wir die abhängige Variable y_pred erstellt, um das Modell anzupassen oder zu trainieren. Es trainiert nicht nur das Modell, sondern gibt auch die Cluster zurück, zu denen jeder Datenpunkt gehört.
Wenn wir nach der Ausführung der obigen Codezeilen die Variable-Explorer-Option in unserer Sypder-IDE durchgehen, können wir die Variable y_pred überprüfen. Wir können den Originaldatensatz mit der Variablen y_pred vergleichen. Betrachten Sie das folgende Bild:
Wie wir im obigen Bild sehen können, ist das y_pred Zeigt den Clusterwert an, was bedeutet, dass die Kunden-ID 1 zu den 5 gehörtThCluster (da die Indizierung bei 0 beginnt, bedeutet 4 also 5ThCluster), die Kunden-ID 2 gehört zu 4ThCluster usw.
Schritt 4: Visualisierung der Cluster
Da wir unser Modell erfolgreich trainiert haben, können wir nun die dem Datensatz entsprechenden Cluster visualisieren.
Hier verwenden wir bis auf eine Änderung dieselben Codezeilen wie beim K-Means-Clustering. Hier werden wir den Schwerpunkt nicht in k-Mitteln darstellen, da wir hier das Dendrogramm verwendet haben, um die optimale Anzahl von Clustern zu bestimmen. Der Code ist unten angegeben:
#visulaizing the clusters mtp.scatter(x[y_pred == 0, 0], x[y_pred == 0, 1], s = 100, c = 'blue', label = 'Cluster 1') mtp.scatter(x[y_pred == 1, 0], x[y_pred == 1, 1], s = 100, c = 'green', label = 'Cluster 2') mtp.scatter(x[y_pred== 2, 0], x[y_pred == 2, 1], s = 100, c = 'red', label = 'Cluster 3') mtp.scatter(x[y_pred == 3, 0], x[y_pred == 3, 1], s = 100, c = 'cyan', label = 'Cluster 4') mtp.scatter(x[y_pred == 4, 0], x[y_pred == 4, 1], s = 100, c = 'magenta', label = 'Cluster 5') mtp.title('Clusters of customers') mtp.xlabel('Annual Income (k$)') mtp.ylabel('Spending Score (1-100)') mtp.legend() mtp.show()
Ausgabe: Durch Ausführen der obigen Codezeilen erhalten wir die folgende Ausgabe: