logo

Hierarchisches Clustering im maschinellen Lernen

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:

    Agglomerativ:Agglomerativ ist ein von unten nach oben Ansatz, bei dem der Algorithmus damit beginnt, alle Datenpunkte als einzelne Cluster zu nehmen und sie zusammenzuführen, bis ein Cluster übrig bleibt.Trennend:Der Divisionsalgorithmus ist die Umkehrung des Agglomerationsalgorithmus, da er ein ist Top-Down-Ansatz.

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:

    Schritt 1:Erstellen Sie jeden Datenpunkt als einzelnen Cluster. Nehmen wir an, es gibt N Datenpunkte, also beträgt die Anzahl der Cluster auch N.
    Hierarchisches Clustering im maschinellen Lernen Schritt 2:Nehmen Sie zwei nächstgelegene Datenpunkte oder Cluster und führen Sie sie zu einem Cluster zusammen. Es wird also jetzt N-1-Cluster geben.
    Hierarchisches Clustering im maschinellen Lernen Schritt 3: Nehmen Sie erneut die beiden nächstgelegenen Cluster und fügen Sie sie zu einem Cluster zusammen. Es wird N-2-Cluster geben.
    Hierarchisches Clustering im maschinellen Lernen Schritt 4:Wiederholen Sie Schritt 3, bis nur noch ein Cluster übrig ist. Wir erhalten also die folgenden Cluster. Betrachten Sie die folgenden Bilder:
    Hierarchisches Clustering im maschinellen Lernen
    Hierarchisches Clustering im maschinellen Lernen
    Hierarchisches Clustering im maschinellen Lernen Schritt 5:Sobald alle Cluster zu einem großen Cluster zusammengefasst sind, entwickeln Sie das Dendrogramm, um die Cluster entsprechend dem Problem zu unterteilen.

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:

    Einzelverbindung:Es handelt sich um den kürzesten Abstand zwischen den nächstgelegenen Punkten der Cluster. Betrachten Sie das folgende Bild:
    Hierarchisches Clustering im maschinellen Lernen Vollständige Verknüpfung:Es ist der weiteste Abstand zwischen den beiden Punkten zweier verschiedener Cluster. Es handelt sich um eine der beliebtesten Verknüpfungsmethoden, da sie engere Cluster bildet als die Einzelverknüpfung.
    Hierarchisches Clustering im maschinellen Lernen Durchschnittliche Verknüpfung:Dabei handelt es sich um die Verknüpfungsmethode, bei der der Abstand zwischen jedem Datensatzpaar addiert und dann durch die Gesamtzahl der Datensätze dividiert wird, um den durchschnittlichen Abstand zwischen zwei Clustern zu berechnen. Es ist auch eine der beliebtesten Verknüpfungsmethoden.Schwerpunktverknüpfung:Es handelt sich um die Verknüpfungsmethode, bei der der Abstand zwischen den Schwerpunkten der Cluster berechnet wird. Betrachten Sie das folgende Bild:
    Hierarchisches Clustering im maschinellen Lernen

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:

Hierarchisches Clustering im maschinellen Lernen

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:

    Datenvorverarbeitung Finden der optimalen Anzahl von Clustern mithilfe des Dendrogramms Training des hierarchischen Clustering-Modells Visualisierung der Cluster

Schritte zur Datenvorverarbeitung:

In diesem Schritt importieren wir die Bibliotheken und Datensätze für unser Modell.

    Importieren der Bibliotheken
 # 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.

    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
Hierarchisches Clustering im maschinellen Lernen
    Extrahieren der Merkmalsmatrix

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 :

Hierarchisches Clustering im maschinellen Lernen

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:

Hierarchisches Clustering im maschinellen Lernen

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:

    n_clusters=5: Es definiert die Anzahl der Cluster, und wir haben hier 5 genommen, weil es die optimale Anzahl von Clustern ist.affinity='euklidisch': Es handelt sich um eine Metrik, die zur Berechnung der Verknüpfung verwendet wird.linkage='ward': Es definiert die Verknüpfungskriterien, hier haben wir die „Ward“-Verknüpfung verwendet. Diese Methode ist die beliebte Verknüpfungsmethode, die wir bereits zur Erstellung des Dendrogramms verwendet haben. Es verringert die Varianz in jedem Cluster.

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:

Hierarchisches Clustering im maschinellen Lernen

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:

Hierarchisches Clustering im maschinellen Lernen