logo

Clustering gerarchico nell'apprendimento automatico

Il clustering gerarchico è un altro algoritmo di apprendimento automatico non supervisionato, utilizzato per raggruppare i set di dati senza etichetta in un cluster e noto anche come analisi dei cluster gerarchici o HCA.

In questo algoritmo sviluppiamo la gerarchia dei cluster sotto forma di albero e questa struttura a forma di albero è nota come dendrogramma .

A volte i risultati del clustering K-means e del clustering gerarchico possono sembrare simili, ma entrambi differiscono a seconda di come funzionano. Poiché non è necessario predeterminare il numero di cluster come abbiamo fatto nell'algoritmo K-Means.

La tecnica del clustering gerarchico prevede due approcci:

    Agglomerante:Agglomerativo è a dal basso verso l'alto approccio, in cui l'algoritmo inizia prendendo tutti i punti dati come singoli cluster e unendoli finché non rimane un cluster.Divisivo:L'algoritmo divisivo è l'opposto dell'algoritmo agglomerativo in quanto è a approccio dall 'alto verso il basso.

Perché il clustering gerarchico?

Come ne abbiamo già altri raggruppamento algoritmi come K-significa clustering , allora perché abbiamo bisogno del clustering gerarchico? Quindi, come abbiamo visto nel clustering K-mean, ci sono alcune sfide con questo algoritmo, che sono un numero predeterminato di cluster, e cerca sempre di creare cluster della stessa dimensione. Per risolvere queste due sfide, possiamo optare per l'algoritmo di clustering gerarchico perché, in questo algoritmo, non è necessario conoscere il numero predefinito di cluster.

In questo argomento discuteremo dell'algoritmo di clustering gerarchico agglomerativo.

Cluster gerarchico agglomerativo

L'algoritmo di clustering gerarchico agglomerativo è un esempio popolare di HCA. Per raggruppare i set di dati in cluster, segue il approccio dal basso verso l’alto . Ciò significa che questo algoritmo considera all'inizio ciascun set di dati come un singolo cluster, quindi inizia a combinare insieme la coppia di cluster più vicina. Lo fa finché tutti i cluster non vengono uniti in un unico cluster che contiene tutti i set di dati.

Questa gerarchia di cluster è rappresentata sotto forma di dendrogramma.

monitor a tubo catodico

Come funziona il clustering gerarchico agglomerativo?

Il funzionamento dell'algoritmo AHC può essere spiegato utilizzando i passaggi seguenti:

    Passo 1:Crea ogni punto dati come un singolo cluster. Diciamo che ci sono N punti dati, quindi anche il numero di cluster sarà N.
    Clustering gerarchico nell'apprendimento automatico Passo 2:Prendi due punti dati o cluster più vicini e uniscili per formare un cluster. Quindi, ora ci saranno cluster N-1.
    Clustering gerarchico nell'apprendimento automatico Passaggio 3: Ancora una volta, prendi i due cluster più vicini e uniscili insieme per formare un cluster. Ci saranno cluster N-2.
    Clustering gerarchico nell'apprendimento automatico Passaggio 4:Ripeti il ​​passaggio 3 finché non rimane un solo cluster. Quindi, otterremo i seguenti cluster. Considera le immagini seguenti:
    Clustering gerarchico nell'apprendimento automatico
    Clustering gerarchico nell'apprendimento automatico
    Clustering gerarchico nell'apprendimento automatico Passaggio 5:Una volta che tutti i cluster sono combinati in un unico grande cluster, sviluppa il dendrogramma per dividere i cluster in base al problema.

Nota: per comprendere meglio il clustering gerarchico, si consiglia di dare un'occhiata al clustering k-means

Misurare la distanza tra due ammassi

Come abbiamo visto, il distanza più vicina tra i due cluster è cruciale per il clustering gerarchico. Esistono vari modi per calcolare la distanza tra due cluster e questi modi determinano la regola per il clustering. Queste misure sono chiamate Metodi di collegamento . Alcuni dei metodi di collegamento più diffusi sono riportati di seguito:

    Collegamento singolo:È la distanza più breve tra i punti più vicini degli ammassi. Considera l'immagine qui sotto:
    Clustering gerarchico nell'apprendimento automatico Collegamento completo:È la distanza più lontana tra i due punti di due ammassi diversi. È uno dei metodi di collegamento più diffusi poiché forma cluster più ristretti rispetto al collegamento singolo.
    Clustering gerarchico nell'apprendimento automatico Collegamento medio:È il metodo di collegamento in cui la distanza tra ciascuna coppia di set di dati viene sommata e quindi divisa per il numero totale di set di dati per calcolare la distanza media tra due cluster. È anche uno dei metodi di collegamento più popolari.Collegamento del centroide:È il metodo di collegamento in cui viene calcolata la distanza tra il baricentro dei cluster. Considera l'immagine qui sotto:
    Clustering gerarchico nell'apprendimento automatico

Dagli approcci sopra indicati, possiamo applicarne uno qualsiasi in base al tipo di problema o esigenza aziendale.

Woking del dendrogramma nel clustering gerarchico

Il dendrogramma è una struttura ad albero che viene utilizzata principalmente per archiviare ogni passaggio come memoria eseguita dall'algoritmo HC. Nel grafico del dendrogramma, l'asse Y mostra le distanze euclidee tra i punti dati e l'asse x mostra tutti i punti dati del set di dati specificato.

espressione regolare Java $

Il funzionamento del dendrogramma può essere spiegato utilizzando il diagramma seguente:

Clustering gerarchico nell'apprendimento automatico

Nel diagramma sopra, la parte sinistra mostra come vengono creati i cluster nel clustering agglomerativo e la parte destra mostra il dendrogramma corrispondente.

  • Come abbiamo discusso in precedenza, in primo luogo, i punti dati P2 e P3 si combinano insieme e formano un cluster, corrispondentemente viene creato un dendrogramma, che collega P2 e P3 con una forma rettangolare. L'altezza viene decisa in base alla distanza euclidea tra i punti dati.
  • Nella fase successiva, P5 e P6 formano un cluster e viene creato il dendrogramma corrispondente. È più alta della precedente, poiché la distanza euclidea tra P5 e P6 è leggermente maggiore di quella tra P2 e P3.
  • Ancora una volta, vengono creati due nuovi dendrogrammi che combinano P1, P2 e P3 in un dendrogramma e P4, P5 e P6 in un altro dendrogramma.
  • Alla fine, viene creato il dendrogramma finale che combina insieme tutti i punti dati.

Possiamo tagliare la struttura ad albero del dendrogramma a qualsiasi livello secondo le nostre esigenze.

Implementazione Python del clustering gerarchico agglomerativo

Ora vedremo l'implementazione pratica dell'algoritmo di clustering gerarchico agglomerativo utilizzando Python. Per implementare ciò, utilizzeremo lo stesso problema del set di dati che abbiamo utilizzato nell'argomento precedente del clustering K-means in modo da poter confrontare facilmente entrambi i concetti.

Il set di dati contiene le informazioni sui clienti che hanno visitato un centro commerciale per fare acquisti. Pertanto, il proprietario del centro commerciale vuole trovare alcuni modelli o comportamenti particolari dei suoi clienti utilizzando le informazioni del set di dati.

Passaggi per l'implementazione di AHC utilizzando Python:

I passaggi per l'implementazione saranno gli stessi del clustering k-means, ad eccezione di alcune modifiche come il metodo per trovare il numero di cluster. Di seguito sono riportati i passaggi:

    Pre-elaborazione dei dati Trovare il numero ottimale di cluster utilizzando il Dendrogramma Addestramento del modello di clustering gerarchico Visualizzazione dei cluster

Passaggi di pre-elaborazione dei dati:

In questo passaggio importeremo le librerie e i set di dati per il nostro modello.

minimo Massimo
    Importazione delle librerie
 # Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 

Le righe di codice sopra riportate vengono utilizzate per importare le librerie per eseguire attività specifiche, ad esempio insensato per le operazioni matematiche, matplotlib per disegnare i grafici o il grafico a dispersione, e panda per importare il set di dati.

    Importazione del set di dati
 # Importing the dataset dataset = pd.read_csv('Mall_Customers_data.csv') 

Come discusso in precedenza, abbiamo importato lo stesso set di dati di Mall_Customers_data.csv, come abbiamo fatto nel clustering k-means. Considera l'output seguente:

Clustering gerarchico nell'apprendimento automatico
    Estrazione della matrice delle caratteristiche

Qui estrarremo solo la matrice delle caratteristiche poiché non disponiamo di ulteriori informazioni sulla variabile dipendente. Il codice è riportato di seguito:

 x = dataset.iloc[:, [3, 4]].values 

Qui abbiamo estratto solo 3 e 4 colonne poiché utilizzeremo un grafico 2D per vedere i cluster. Pertanto, stiamo considerando il punteggio di reddito e spesa annuale come matrice delle caratteristiche.

Passaggio 2: trovare il numero ottimale di cluster utilizzando il dendrogramma

Ora troveremo il numero ottimale di cluster utilizzando il Dendrogramma per il nostro modello. Per questo utilizzeremo scipy libreria in quanto fornisce una funzione che restituirà direttamente il dendrogramma per il nostro codice. Considera le seguenti righe di codice:

 #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() 

Nelle righe di codice sopra, abbiamo importato il file gerarchia modulo della libreria scipy. Questo modulo ci fornisce un metodo shc.denrogramma(), che prende il collegamento() come parametro. La funzione di collegamento viene utilizzata per definire la distanza tra due cluster, quindi qui abbiamo passato x(matrice di caratteristiche) e il metodo ' reparto ,' il popolare metodo di collegamento nel clustering gerarchico.

Le restanti righe di codice servono a descrivere le etichette per il grafico del dendrogramma.

Produzione:

Eseguendo le righe di codice sopra, otterremo l'output seguente :

Clustering gerarchico nell'apprendimento automatico

Utilizzando questo dendrogramma, determineremo ora il numero ottimale di cluster per il nostro modello. Per questo troveremo il distanza verticale massima che non taglia nessuna barra orizzontale. Considera il diagramma seguente:

Clustering gerarchico nell'apprendimento automatico

Nel diagramma sopra, abbiamo mostrato le distanze verticali che non tagliano le barre orizzontali. Come possiamo visualizzare, il 4thla distanza sembra massima, quindi in base a questo, il numero di cluster sarà 5 (le linee verticali in questo intervallo). Possiamo anche prendere il 2ndnumero poiché equivale approssimativamente a 4thdistanza, ma considereremo i 5 cluster perché sono gli stessi che abbiamo calcolato nell'algoritmo K-medie.

stringa in carattere

Quindi, il numero ottimale di cluster sarà 5 e addestreremo il modello nel passaggio successivo, utilizzando lo stesso.

Passaggio 3: addestramento del modello di clustering gerarchico

Poiché conosciamo il numero ottimale di cluster richiesto, ora possiamo addestrare il nostro modello. Il codice è riportato di seguito:

 #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) 

Nel codice sopra, abbiamo importato il file Clustering agglomerativo classe del modulo cluster della libreria scikit learn.

Quindi abbiamo creato l'oggetto di questa classe denominato as h.c. La classe AgglomerativeClustering accetta i seguenti parametri:

Giochi iMessage con Android
    n_cluster=5: Definisce il numero di cluster, e qui abbiamo preso 5 perché è il numero ottimale di cluster.affinità='euclideo': È una metrica utilizzata per calcolare il collegamento.linkage='reparto': Definisce i criteri di collegamento, qui abbiamo usato il collegamento 'reparto'. Questo metodo è il popolare metodo di collegamento che abbiamo già utilizzato per creare il Dendrogramma. Riduce la varianza in ciascun cluster.

Nell'ultima riga abbiamo creato la variabile dipendente y_pred per adattare o addestrare il modello. Non solo addestra il modello, ma restituisce anche i cluster a cui appartiene ciascun punto dati.

Dopo aver eseguito le righe di codice sopra, se utilizziamo l'opzione variabile explorer nel nostro IDE Sypder, possiamo controllare la variabile y_pred. Possiamo confrontare il set di dati originale con la variabile y_pred. Considera l'immagine qui sotto:

Clustering gerarchico nell'apprendimento automatico

Come possiamo vedere nell'immagine sopra, il y_pred mostra il valore dei cluster, il che significa che l'ID cliente 1 appartiene al 5thcluster (poiché l'indicizzazione inizia da 0, quindi 4 significa 5thcluster), l'ID cliente 2 appartiene a 4thgrappolo e così via.

Passaggio 4: visualizzazione dei cluster

Poiché abbiamo addestrato con successo il nostro modello, ora possiamo visualizzare i cluster corrispondenti al set di dati.

Qui utilizzeremo le stesse righe di codice usate nel clustering k-means, tranne una modifica. Qui non tracceremo il centroide come abbiamo fatto in k-mean, perché qui abbiamo utilizzato il dendrogramma per determinare il numero ottimale di cluster. Il codice è riportato di seguito:

 #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() 

Output: eseguendo le righe di codice sopra, otterremo l'output seguente:

Clustering gerarchico nell'apprendimento automatico