logo

Clúster jeràrquic en aprenentatge automàtic

La agrupació jeràrquica és un altre algorisme d'aprenentatge automàtic no supervisat, que s'utilitza per agrupar els conjunts de dades sense etiquetar en un clúster i també conegut com anàlisi de clúster jeràrquic o HCA.

En aquest algorisme, desenvolupem la jerarquia de clústers en forma d'arbre, i aquesta estructura en forma d'arbre es coneix com a dendrograma .

De vegades, els resultats de la agrupació K-means i la agrupació jeràrquica poden semblar similars, però tots dos difereixen segons com funcionin. Com que no hi ha cap requisit per predeterminar el nombre de clústers com vam fer a l'algorisme K-Means.

La tècnica de agrupació jeràrquica té dos enfocaments:

    Aglomeratiu:L'aglomeratiu és a de baix a dalt enfocament, en el qual l'algoritme comença prenent tots els punts de dades com a clústers únics i fusionant-los fins que quedi un clúster.Divisió:L'algorisme divisiu és el contrari de l'algorisme aglomeratiu, ja que és a enfocament de dalt a baix.

Per què agrupació jeràrquica?

Com ja en tenim d'altres agrupació algorismes com ara K-Means Clustering , llavors per què necessitem agrupacions jeràrquiques? Així, com hem vist en el clustering K-means, hi ha alguns reptes amb aquest algorisme, que són un nombre predeterminat de clústers, i sempre intenta crear els clústers de la mateixa mida. Per resoldre aquests dos reptes, podem optar per l'algorisme de clúster jeràrquic perquè, en aquest algorisme, no necessitem tenir coneixements sobre el nombre predefinit de clústers.

En aquest tema, parlarem de l'algorisme de agrupació jeràrquica aglomerativa.

Aglomeració jeràrquica aglomerativa

L'algorisme de agrupació jeràrquica aglomerativa és un exemple popular d'HCA. Per agrupar els conjunts de dades en clústers, segueix el enfocament de baix a dalt . Vol dir que aquest algorisme considera cada conjunt de dades com un únic clúster al principi i després comença a combinar el parell de clústers més proper. Ho fa fins que tots els clústers es fusionen en un únic clúster que conté tots els conjunts de dades.

Aquesta jerarquia de clústers es representa en forma de dendrograma.

Com funciona el clustering jeràrquic aglomeratiu?

El funcionament de l'algorisme AHC es pot explicar mitjançant els passos següents:

instanciació en java
    Pas 1:Creeu cada punt de dades com un únic clúster. Suposem que hi ha N punts de dades, de manera que el nombre de clústers també serà N.
    Clúster jeràrquic en aprenentatge automàtic Pas-2:Agafeu dos punts o grups de dades més propers i fusioneu-los per formar un sol clúster. Per tant, ara hi haurà cúmuls N-1.
    Clúster jeràrquic en aprenentatge automàtic Pas-3: De nou, agafeu els dos grups més propers i fusioneu-los per formar un cúmul. Hi haurà agrupacions N-2.
    Clúster jeràrquic en aprenentatge automàtic Pas-4:Repetiu el pas 3 fins que només quedi un grup. Així, obtindrem els següents clústers. Considereu les imatges següents:
    Clúster jeràrquic en aprenentatge automàtic
    Clúster jeràrquic en aprenentatge automàtic
    Clúster jeràrquic en aprenentatge automàtic Pas-5:Un cop tots els clústers es combinen en un gran clúster, desenvolupeu el dendrograma per dividir els clústers segons el problema.

Nota: per entendre millor la agrupació jeràrquica, es recomana fer una ullada a la agrupació de k-means

Mesura de la distància entre dos cúmuls

Com hem vist, el distància més propera entre els dos clústers és crucial per a la agrupació jeràrquica. Hi ha diverses maneres de calcular la distància entre dos clústers, i aquestes maneres decideixen la regla d'agrupació. Aquestes mesures s'anomenen Mètodes d'enllaç . Alguns dels mètodes d'enllaç populars es mostren a continuació:

    Enllaç únic:És la distància més curta entre els punts més propers dels cúmuls. Considereu la imatge següent:
    Clúster jeràrquic en aprenentatge automàtic Enllaç complet:És la distància més llunyana entre els dos punts de dos cúmuls diferents. És un dels mètodes d'enllaç populars, ja que forma grups més estrets que els enllaços únics.
    Clúster jeràrquic en aprenentatge automàtic Enllaç mitjà:És el mètode d'enllaç en el qual es suma la distància entre cada parell de conjunts de dades i després es divideix pel nombre total de conjunts de dades per calcular la distància mitjana entre dos clústers. També és un dels mètodes d'enllaç més populars.Enllaç del centreide:És el mètode d'enllaç en què es calcula la distància entre el centroide dels clústers. Considereu la imatge següent:
    Clúster jeràrquic en aprenentatge automàtic

A partir dels plantejaments anteriors, podem aplicar-ne qualsevol segons el tipus de problema o requisit empresarial.

Elaboració de Dendrogram en agrupació jeràrquica

El dendrograma és una estructura en forma d'arbre que s'utilitza principalment per emmagatzemar cada pas com a memòria que realitza l'algorisme HC. A la trama del dendrograma, l'eix Y mostra les distàncies euclidianes entre els punts de dades i l'eix X mostra tots els punts de dades del conjunt de dades donat.

El funcionament del dendrograma es pot explicar mitjançant el diagrama següent:

Clúster jeràrquic en aprenentatge automàtic

Al diagrama anterior, la part esquerra mostra com es creen els clústers en agrupacions aglomeratives, i la part dreta mostra el dendrograma corresponent.

  • Com hem comentat anteriorment, en primer lloc, els punts de dades P2 i P3 es combinen i formen un clúster, corresponentment es crea un dendrograma, que connecta P2 i P3 amb una forma rectangular. L'alçada es decideix segons la distància euclidiana entre els punts de dades.
  • En el següent pas, P5 i P6 formen un clúster i es crea el dendrograma corresponent. És superior a l'anterior, ja que la distància euclidiana entre P5 i P6 és una mica més gran que la P2 i P3.
  • De nou, es creen dos nous dendrogrames que combinen P1, P2 i P3 en un dendrograma, i P4, P5 i P6, en un altre dendrograma.
  • Finalment, es crea el dendrograma final que combina tots els punts de dades junts.

Podem tallar l'estructura de l'arbre del dendrograma a qualsevol nivell segons el nostre requisit.

Implementació de Python de clúster jeràrquic aglomeratiu

Ara veurem la implementació pràctica de l'algorisme de agrupació jeràrquica aglomerativa utilitzant Python. Per implementar-ho, utilitzarem el mateix problema de conjunt de dades que hem utilitzat en el tema anterior de agrupació de K-means de manera que puguem comparar ambdós conceptes fàcilment.

El conjunt de dades conté la informació dels clients que han visitat un centre comercial per comprar. Per tant, el propietari del centre comercial vol trobar alguns patrons o algun comportament particular dels seus clients mitjançant la informació del conjunt de dades.

Passos per a la implementació d'AHC mitjançant Python:

Els passos per a la implementació seran els mateixos que els de la agrupació k-means, excepte alguns canvis com el mètode per trobar el nombre de clústers. A continuació es mostren els passos:

    Preprocessament de dades Trobar el nombre òptim de clústers mitjançant el Dendrograma Formació del model de clustering jeràrquic Visualització dels clústers

Passos de preprocessament de dades:

En aquest pas, importarem les biblioteques i els conjunts de dades del nostre model.

    Importació de les biblioteques
 # Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 

Les línies de codi anteriors s'utilitzen per importar les biblioteques per realitzar tasques específiques, com ara numpy per a les operacions matemàtiques, matplotlib per dibuixar els gràfics o el diagrama de dispersió, i pandes per importar el conjunt de dades.

    Importació del conjunt de dades
 # Importing the dataset dataset = pd.read_csv('Mall_Customers_data.csv') 

Com hem comentat anteriorment, hem importat el mateix conjunt de dades de Mall_Customers_data.csv, com vam fer a l'agrupament de k-means. Considereu la sortida següent:

Clúster jeràrquic en aprenentatge automàtic
    Extracció de la matriu de característiques

Aquí extreurem només la matriu de característiques ja que no tenim més informació sobre la variable dependent. El codi es mostra a continuació:

instanciació en java
 x = dataset.iloc[:, [3, 4]].values 

Aquí només hem extret 3 i 4 columnes, ja que utilitzarem una gràfica 2D per veure els clústers. Per tant, estem considerant la puntuació anual d'ingressos i despeses com a matriu de característiques.

Pas 2: Trobar el nombre òptim de clústers mitjançant el Dendrograma

Ara trobarem el nombre òptim de clústers utilitzant el Dendrograma per al nostre model. Per a això, farem servir scipy biblioteca ja que proporciona una funció que retornarà directament el dendrograma del nostre codi. Considereu les següents línies de codi:

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

A les línies de codi anteriors, hem importat el fitxer jerarquia mòdul de la biblioteca scipy. Aquest mòdul ens proporciona un mètode shc.denrogram(), que pren el enllaç () com a paràmetre. La funció d'enllaç s'utilitza per definir la distància entre dos clústers, així que aquí hem passat la x (matriu de característiques) i el mètode ' barri ,' el popular mètode d'enllaç en agrupació jeràrquica.

Les línies de codi restants són per descriure les etiquetes de la trama del dendrograma.

Sortida:

En executar les línies de codi anteriors, obtindrem la sortida següent :

Clúster jeràrquic en aprenentatge automàtic

Amb aquest Dendrograma, ara determinarem el nombre òptim de clústers per al nostre model. Per a això, trobarem el distància vertical màxima que no talla cap barra horitzontal. Considereu el diagrama següent:

Clúster jeràrquic en aprenentatge automàtic

En el diagrama anterior, hem mostrat les distàncies verticals que no estan tallant les seves barres horitzontals. Com podem visualitzar, el 4thla distància es veu com a màxima, així que segons això, el nombre de clústers serà de 5 (les línies verticals d'aquest rang). També podem agafar el 2ndnombre ja que és aproximadament igual al 4thdistància, però tindrem en compte els 5 clústers perquè el mateix hem calculat a l'algorisme K-means.

Per tant, el nombre òptim de clústers serà 5 , i entrenarem el model en el següent pas, fent servir el mateix.

Pas 3: Entrenar el model de clustering jeràrquic

Com que sabem el nombre òptim necessari de clústers, ara podem entrenar el nostre model. El codi es mostra a continuació:

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

En el codi anterior, hem importat el Clúster aglomeratiu classe del mòdul de clúster de la biblioteca scikit Learn.

Aleshores hem creat l'objecte d'aquesta classe anomenat com hc. La classe AgglomerativeClustering pren els paràmetres següents:

    n_clusters=5: Defineix el nombre de clústers, i aquí hem pres 5 perquè és el nombre òptim de clústers.afinitat='euclidiana': és una mètrica que s'utilitza per calcular l'enllaç.linkage='ward': Defineix els criteris d'enllaç, aquí hem utilitzat l'enllaç 'ward'. Aquest mètode és el mètode d'enllaç popular que ja hem utilitzat per crear el Dendrograma. Redueix la variància en cada clúster.

A l'última línia, hem creat la variable dependent y_pred per ajustar o entrenar el model. No només entrena el model, sinó que també retorna els clústers als quals pertany cada punt de dades.

la roda del ratolí no es desplaça correctament

Després d'executar les línies de codi anteriors, si passem per l'opció d'explorador de variables del nostre IDE Sypder, podem comprovar la variable y_pred. Podem comparar el conjunt de dades original amb la variable y_pred. Considereu la imatge següent:

Clúster jeràrquic en aprenentatge automàtic

Com podem veure a la imatge de dalt, el i_pred mostra el valor dels clústers, el que significa que l'identificador del client 1 pertany al 5thclúster (ja que la indexació comença des de 0, de manera que 4 significa 5thclúster), l'identificador de client 2 pertany a 4thclúster, etc.

Pas 4: visualització dels clústers

Com que hem entrenat el nostre model amb èxit, ara podem visualitzar els clústers corresponents al conjunt de dades.

Aquí farem servir les mateixes línies de codi que vam fer a l'agrupació k-means, excepte un canvi. Aquí no representarem el centroide que vam fer en k-means, perquè aquí hem utilitzat dendrograma per determinar el nombre òptim de clústers. El codi es mostra a continuació:

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

Sortida: en executar les línies de codi anteriors, obtindrem la següent sortida:

Clúster jeràrquic en aprenentatge automàtic