Hierarkisk klyngealgoritme Python!

Kildeknude: 1055669

Denne artikel blev offentliggjort som en del af Data Science Blogathon

Introduktion

I denne artikel vil vi se på en anden tilgang til K Means-klynger kaldet Hierarkisk Klynger. I sammenligning med K Means eller K Mode har hierarkisk Clustering en anden underliggende algoritme for, hvordan klyngemekanismen fungerer. Hierarkisk clustering bruger agglomerative eller splittende teknikker, hvorimod K Means bruger en kombination af tyngdepunkt og euklidisk afstand til at danne klynger. Dendrogrammer kan bruges til at visualisere klynger i hierarkisk clustering, hvilket kan hjælpe med en bedre fortolkning af resultater gennem meningsfulde taksonomier. Vi behøver ikke at angive antallet af klynger, når vi laver et dendrogram.

Her bruger vi Python til at forklare den hierarkiske klyngemodel. Vi har 200 indkøbscenterkunders data i vores datasæt. Hver kundes kunde-id, genre, alder, årlige indkomst og forbrugsscore er alle inkluderet i datarammen. Beløbet beregnet for hver af deres kunders forbrugsscore er baseret på flere kriterier, såsom deres indkomst, antallet af gange om ugen, de besøger indkøbscentret, og mængden af ​​penge, de har brugt på et år. Denne score går fra 1 til 100. Fordi vi ikke kender svarene, bliver et forretningsproblem et klyngeproblem. Dataens endelige kategorier er ukendte for os. Som et resultat heraf er vores mål at opdage nogle hidtil ukendte kundeklynger.

Men først ser vi på nogle vigtige termer i hierarkisk klyngedannelse.

Vigtige vilkår i hierarkisk klyngedannelse

Sammenkoblingsmetoder

Hvis der er (a) originale observationer a[0],...,a[|a|1] i klynge (a) og (b) originale objekter b[0],...,b[|b|1] i klynge ( b), så skal vi beregne afstanden mellem to klynger (a) og (b) for at kombinere dem (b). Lad os sige, at der er et punkt (d), som ikke er blevet tildelt nogen af ​​klyngerne. Vi bliver nødt til at finde ud af, hvor langt klyngen (a) er fra klyngen (d) og klyngen (b) er fra klyngen (d).

Klynger indeholder nu typisk flere punkter, hvilket nødvendiggør en anden metode til at beregne afstandsmatrixen. Metoden, hvorved afstanden mellem klynger, eller punkt til klynge-afstand, beregnes, bestemmes af kobling. Følgende er nogle af de mest almindeligt anvendte koblingsmekanismer:

Enkelt kobling — Afstandene mellem de mest ens medlemmer beregnes for hvert par af klynger, og klyngerne slås derefter sammen baseret på den korteste afstand.

Gennemsnitlig forbindelse — Afstanden mellem alle medlemmer af en klynge og alle medlemmer af en anden klynge beregnes. Derefter bruges gennemsnittet af disse afstande til at bestemme, hvilke klynger der vil smelte sammen.

Komplet kobling — For hvert par af klynger beregnes afstandene mellem de mest uens medlemmer, og klyngerne slås derefter sammen baseret på den korteste afstand.

Medianforbindelse — Vi bruger medianafstanden i stedet for den gennemsnitlige afstand på samme måde som den gennemsnitlige kobling.

Afdelingsforbindelse — Bestemmer afstanden mellem klynger ved hjælp af variansanalysemetoden.

Centroid forbindelse — Tyngdepunktet for hver klynge beregnes ved at tage et gennemsnit af alle punkter, der er tildelt klyngen, og afstanden mellem klyngerne beregnes derefter ved hjælp af dette tyngdepunkt.

Afstandsberegning

Der findes flere metoder til at beregne afstand mellem to eller flere klynger, hvor Euklidisk Afstand er den mest populære. Andre afstandsmålinger, såsom Minkowski, City Block, Hamming, Jaccard og Chebyshev, kan også bruges med hierarkisk clustering. Forskellige afstandsmålinger har en indflydelse på hierarkisk klyngedannelse, som vist i figur 2.

afstandsberegning

Dendrogram

Forholdet mellem objekter i et funktionsrum er repræsenteret ved et dendrogram. I et funktionsrum bruges det til at vise afstanden mellem hvert par af sekventielt flettede objekter. Dendrogrammer bruges ofte til at undersøge hierarkiske klynger, før man beslutter sig for det passende antal klynger til datasættet. Dendrogramafstanden er afstanden mellem to klynger, når de kombineres. Dendrogramafstanden bestemmer, om to eller flere klynger er usammenhængende eller kan sættes sammen for at danne en enkelt klynge.

Eksempel

Nu ser vi på eksempler, der bruger Python til at demonstrere den hierarkiske klyngemodel. Vi har 200 indkøbscenterkunders data i vores datasæt. Hver kundes kunde-id, genre, alder, årlige indkomst og forbrugsscore er alle inkluderet i datarammen. Beløbet beregnet for hver af deres kunders forbrugsscore er baseret på flere kriterier, såsom deres indkomst, antallet af gange om ugen, de besøger indkøbscentret, og de penge, de har brugt i et år. Denne score går fra 1 til 100. Fordi vi ikke kender svarene, bliver et forretningsproblem et klyngeproblem.

#1 Import af bibliotekerne
importer numpy som np importer matplotlib.pyplot som plt importer pandaer som pd
#2 Import af Mall_Customers-datasættet af pandaer
dataset = pd.read_csv('Mall_Customers.csv') X = dataset.iloc[:, [3,4]].values

Dette nye trin i hierarkisk klyngedannelse indebærer også at bestemme det optimale antal klynger. Vi kommer ikke til at bruge albuemetoden denne gang. Vi vil gøre brug af dendrogrammet.

#3 Brug af dendrogrammet til at finde det optimale antal klynger. # Den første ting vi skal gøre er at importere scipy bibliotek. scipy er et open source # Python-bibliotek, der indeholder værktøjer til at lave hierarkisk clustering og bygge dendrogrammer. # Importer kun det nødvendige værktøj. importer scipy.cluster.hierarchy som sch 
#Lads skabe en dendrogramvariabel # linkage er faktisk selve algoritmen for hierarkisk clustering, og så i #linkage skal vi specificere hvilke data vi anvender og engagerer os på. Dette er X dataset dendrogram = sch.dendrogram(sch.linkage(X, method = "ward")) plt.title('Dendrogram') plt.xlabel('Kunder') plt.ylabel('Euklidiske afstande') plt. at vise()

Ward-metoden er en metode, der forsøger at reducere varians inden for hver klynge. Det er næsten det samme, som da vi brugte K-midler til at minimere wcss for at plotte vores albue metodediagram; den eneste forskel er, at vi i stedet for wcss minimerer varianterne inden for klynge. Inden for hver klynge er dette variansen. Dendrogrammet er vist nedenfor.

dendogram

Kunder er repræsenteret på x-aksen, og den euklidiske afstand mellem klynger er repræsenteret på y-aksen. Hvordan finder vi ud af det bedste antal klynger baseret på dette diagram? Vi ønsker at finde den længste lodrette afstand, vi kan uden at krydse nogen vandrette linjer, som er den røde indrammede linje i diagrammet ovenfor. Lad os tælle linjerne på diagrammet og finde ud af, hvor mange klynger der er bedst. For dette datasæt vil klyngenummeret være 5.

#4 Tilpasning af hierarkisk clustering til Mall_Customes-datasættet # Der er to algoritmer til hierarkisk clustering: Agglomerative Hierarchical Clustering og # Divisive Hierarchical Clustering. Vi vælger euklidisk distance og afdelingsmetode for vores # algoritmeklasse fra sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 5, affinity = 'euklidisk', linkage ='ward') # Lad os prøve at tilpasse den hierarkiske klyngealgoritme til datasættet X mens du opretter # clusters vektoren, der fortæller for hver kunde, hvilken klynge kunden tilhører. y_hc=hc.fit_predict(X)
#5 Visualisering af klyngerne. Denne kode ligner k-betyder visualiseringskode. #Vi erstatter kun vektornavnet y_kmeans til y_hc for den hierarkiske clustering 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øn', label ='Klynge 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('Klynger af kunder (hierarkisk klyngemodel)') plt.xlabel('Årlig indkomst(k$)') plt.ylabel ('Spending Score(1-100') plt.show()
klynger | Hierarkisk klyngedannelse
Klynge 1 (rød), Klynge 2 (blå), Klynge 3 (grøn), Klynge 4 (cyan), Klynge 5 (Magenta)

Disse klynger kan opfattes som indkøbscentrets kundesegment.

Det er alt, der er til en standard hierarkisk klyngemodel. Datasættet såvel som alle koderne er tilgængelige i Github-sektionen.

Konklusion

I enhver klyngeøvelse er det en tidskrævende proces at bestemme antallet af klynger. Fordi den kommercielle side af virksomheden er mere optaget af at udvinde mening fra disse grupper, er det afgørende at visualisere klyngerne i to dimensioner og se, om de er adskilte. PCA eller faktoranalyse kan bruges til at nå dette mål. Dette er en almindelig metode til at præsentere de endelige resultater for forskellige interessenter, hvilket gør det lettere for alle at forbruge outputtet.

EndNote

Tak for at læse!
Jeg håber, du nød artiklen og øgede din viden.
Du velkommen til at kontakte mig on E-mail
Noget der ikke er nævnt eller vil dele dine tanker? Du er velkommen til at kommentere nedenfor, så vender jeg tilbage til dig.

Om forfatteren

Hardikkumar M. Dhaduk
Dataanalytiker | Specialist i digital dataanalyse | Lærer i datavidenskab
Opret forbindelse med mig på Linkedin
Opret forbindelse med mig på Github

Medierne vist i denne artikel ejes ikke af Analytics Vidhya og bruges efter forfatterens skøn.

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

Tidsstempel:

Mere fra Analyse Vidhya