Hierarkisk klyngealgoritme Python!

Kilde node: 1055669

Denne artikkelen ble publisert som en del av Data Science Blogathon

Introduksjon

I denne artikkelen skal vi se på en annen tilnærming til K Means-klynger kalt hierarkisk clustering. Sammenlignet med K Means eller K Mode, har hierarkisk Clustering en annen underliggende algoritme for hvordan klyngemekanismen fungerer. Hierarkisk clustering bruker agglomerative eller splittende teknikker, mens K Means bruker en kombinasjon av tyngdepunkt og euklidisk avstand for å danne klynger. Dendrogrammer kan brukes til å visualisere klynger i hierarkisk clustering, noe som kan hjelpe med en bedre tolkning av resultater gjennom meningsfulle taksonomier. Vi trenger ikke spesifisere antall klynger når vi lager et dendrogram.

Her bruker vi Python for å forklare den hierarkiske klyngemodellen. Vi har 200 kjøpesenterkunders data i datasettet vårt. Hver kundes kunde-ID, sjanger, alder, årlig inntekt og forbrukspoeng er inkludert i datarammen. Beløpet beregnet for hver av kundenes forbruksscore er basert på flere kriterier, for eksempel inntekt, antall ganger per uke de besøker kjøpesenteret og hvor mye penger de brukte i løpet av et år. Denne poengsummen varierer fra 1 til 100. Fordi vi ikke vet svarene, blir et forretningsproblem et klyngeproblem. Dataens endelige kategorier er ukjente for oss. Som et resultat er målet vårt å oppdage noen tidligere ukjente kundeklynger.

Men først ser vi på noen viktige termer i hierarkisk klynging.

Viktige vilkår i hierarkisk gruppering

Koblingsmetoder

Hvis det er (a) originale observasjoner a[0],...,a[|a|1] i klynge (a) og (b) originale objekter b[0],...,b[|b|1] i klynge ( b), så må vi beregne avstanden mellom to klynger (a) og (b) for å kombinere dem (b). La oss si at det er et punkt (d) som ikke er tilordnet noen av klyngene. Vi må finne ut hvor langt klyngen (a) er fra klyngen (d) og klyngen (b) er fra klyngen (d).

Klynger inneholder nå vanligvis flere punkter, noe som krever en annen metode for å beregne avstandsmatrisen. Metoden som avstanden mellom klynger, eller punkt-til-klyngeavstand, beregnes på, bestemmes av kobling. Følgende er noen av de mest brukte koblingsmekanismene:

Enkel kobling — Avstandene mellom de mest like medlemmene beregnes for hvert par av klynger, og klyngene slås deretter sammen basert på den korteste avstanden.

Gjennomsnittlig kobling — Avstanden mellom alle medlemmer av en klynge og alle medlemmer av en annen klynge beregnes. Deretter brukes gjennomsnittet av disse avstandene for å bestemme hvilke klynger som skal slå seg sammen.

Komplett kobling — For hvert par av klynger beregnes avstandene mellom de mest forskjellige medlemmene, og klyngene slås deretter sammen basert på den korteste avstanden.

Median kobling — Vi bruker medianavstanden i stedet for gjennomsnittsavstanden på lignende måte som gjennomsnittskoblingen.

Avdelingskobling — Bestemmer avstanden mellom klynger ved hjelp av variansanalysemetoden.

Centroid kobling — Centroiden til hver klynge beregnes ved å beregne gjennomsnittet av alle punkter som er tilordnet klyngen, og avstanden mellom klyngene beregnes deretter ved å bruke denne tyngdepunktet.

Avstandsberegning

Det finnes flere tilnærminger for å beregne avstand mellom to eller flere klynger, med euklidisk avstand som den mest populære. Andre avstandsmålinger, som Minkowski, City Block, Hamming, Jaccard og Chebyshev, kan også brukes med hierarkisk klynging. Ulike avstandsmålinger har innvirkning på hierarkisk clustering, som vist i figur 2.

avstandsberegning

Dendrogram

Forholdet mellom objekter i et funksjonsrom er representert av et dendrogram. I et funksjonsrom brukes det til å vise avstanden mellom hvert par med sekvensielt sammenslåtte objekter. Dendrogrammer brukes ofte for å undersøke hierarkiske klynger før man bestemmer seg for riktig antall klynger for datasettet. Dendrogramavstanden er avstanden mellom to klynger når de kombineres. Dendrogramavstanden bestemmer om to eller flere klynger er usammenhengende eller kan settes sammen for å danne en enkelt klynge.

Eksempel

Nå ser vi på eksempler som bruker Python for å demonstrere den hierarkiske klyngemodellen. Vi har 200 kjøpesenterkunders data i vår datasett. Hver kundes kunde-ID, sjanger, alder, årlig inntekt og forbrukspoeng er inkludert i datarammen. Beløpet beregnet for hver av kundenes forbruksscore er basert på flere kriterier, for eksempel inntekt, antall ganger per uke de besøker kjøpesenteret og pengene de brukte i et år. Denne poengsummen varierer fra 1 til 100. Fordi vi ikke vet svarene, blir et forretningsproblem et klyngeproblem.

#1 Importerer bibliotekene
importer numpy som np importer matplotlib.pyplot som plt importer pandaer som pd
#2 Importerer Mall_Customers-datasettet av pandaer
datasett = pd.read_csv('Mall_Customers.csv') X = datasett.iloc[:, [3,4]].values

Dette nye trinnet i hierarkisk clustering innebærer også å bestemme det optimale antallet klynger. Vi kommer ikke til å bruke albuemetoden denne gangen. Vi vil bruke dendrogrammet.

#3 Bruke dendrogrammet for å finne det optimale antallet klynger. # Det første vi skal gjøre er å importere scipy-bibliotek. scipy er et # Python-bibliotek med åpen kildekode som inneholder verktøy for å gjøre hierarkisk clustering og bygge dendrogrammer. # Importer bare det nødvendige verktøyet. importer scipy.cluster.hierarchy som sch 
#La oss lage en dendrogramvariabel # kobling er faktisk selve algoritmen for hierarkisk clustering, og i #linkage må vi spesifisere hvilke data vi bruker og engasjerer oss på. Dette er X datasett dendrogram = sch.dendrogram(sch.linkage(X, method = "ward")) plt.title('Dendrogram') plt.xlabel('Customers') plt.ylabel('Euklidiske avstander') plt. forestilling()

Ward-metoden er en metode som forsøker å redusere variansen innenfor hver klynge. Det er nesten det samme som da vi brukte K-betyr for å minimere wcss for å plotte vårt albuemetodediagram; den eneste forskjellen er at i stedet for wcss, minimerer vi innen-klyngevariantene. Innenfor hver klynge er dette variansen. Dendrogrammet er vist nedenfor.

dendogram

Kunder er representert på x-aksen, og den euklidiske avstanden mellom klynger er representert på y-aksen. Hvordan finner vi ut det beste antallet klynger basert på dette diagrammet? Vi ønsker å finne den lengste vertikale avstanden vi kan uten å krysse noen horisontale linjer, som er den røde innrammede linjen i diagrammet ovenfor. La oss telle linjene på diagrammet og finne ut hvor mange klynger som er best. For dette datasettet vil klyngenummeret være 5.

#4 Tilpasning av hierarkisk clustering til Mall_Customes-datasettet # Det er to algoritmer for hierarkisk clustering: Agglomerative Hierarchical Clustering og # Divisive Hierarchical Clustering. Vi velger euklidisk avstand og avdelingsmetode for vår # algoritmeklasse fra sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 5, affinity = 'euklidisk', linkage ='ward') # La oss prøve å tilpasse den hierarkiske klyngealgoritmen til datasettet X mens du oppretter # klyngevektoren som forteller for hver kunde hvilken klynge kunden tilhører. y_hc=hc.fit_predict(X)
# 5 Visualisere klyngene. Denne koden ligner på k-betyr visualiseringskode. #Vi erstatter bare y_kmeans vektornavnet til y_hc for den hierarkiske klyngingen 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='grønn', 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 ='Klynge 5') plt.title('Clusters of Customers (Hierarchical Clustering Model)') plt.xlabel('Annual Income(k$)') plt.ylabel ('Spending Score(1-100') plt.show()
klynger | Hierarkisk gruppering
Klynge1(rød), Klynge2 (blå), Klynge3(grønn), Klynge4(cyan), Klynge5 (magenta)

Disse klyngene kan betraktes som kjøpesenterets kundesegment.

Det er alt som er til en standard hierarkisk klyngemodell. Datasettet så vel som alle kodene er tilgjengelige i Github-delen.

konklusjonen

I enhver klyngeøvelse er det en tidkrevende prosess å bestemme antall klynger. Fordi den kommersielle siden av virksomheten er mer opptatt av å hente ut mening fra disse gruppene, er det avgjørende å visualisere klyngene i to dimensjoner og se om de er forskjellige. PCA eller faktoranalyse kan brukes for å nå dette målet. Dette er en vanlig metode for å presentere endelige resultater for ulike interessenter, noe som gjør det lettere for alle å konsumere produksjonen.

EndNote

Takk for at du leser!
Jeg håper du likte artikkelen og økte kunnskapen din.
Det er bare å kontakte meg on Epost
Noe som ikke er nevnt eller ønsker å dele tankene dine? Kommenter gjerne nedenfor, så kommer jeg tilbake til deg.

om forfatteren

Hardikkumar M. Dhaduk
Dataanalytiker | Spesialist i digital dataanalyse | Datavitenskap-lærer
Kontakt meg videre Linkedin
Kontakt meg videre Github

Media vist i denne artikkelen eies ikke av Analytics Vidhya og brukes etter forfatterens skjønn.

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

Tidstempel:

Mer fra Analytics Vidhya