Hijerarhijsko grupiranje još je jedan nenadzirani algoritam strojnog učenja koji se koristi za grupiranje neoznačenih skupova podataka u klaster, a poznat je i kao hijerarhijska analiza klastera ili HCA.
U ovom algoritmu razvijamo hijerarhiju klastera u obliku stabla, a ta struktura u obliku stabla poznata je kao dendrogram .
Ponekad rezultati klasteriranja K-srednjih vrijednosti i hijerarhijskog grupiranja mogu izgledati slično, ali se oba razlikuju ovisno o tome kako rade. Budući da ne postoji zahtjev za unaprijed određivanjem broja klastera kao što smo to učinili u algoritmu K-Means.
Tehnika hijerarhijskog klasteriranja ima dva pristupa:
Zašto hijerarhijsko grupiranje?
Kao što već imamo druge grupiranje algoritmi kao što su K-znači grupiranje , zašto nam je onda potrebno hijerarhijsko grupiranje? Dakle, kao što smo vidjeli u klasteriranju K-srednjih vrijednosti, postoje neki izazovi s ovim algoritmom, a to su unaprijed određeni broj klastera, a on uvijek pokušava stvoriti klastere iste veličine. Kako bismo riješili ova dva izazova, možemo se odlučiti za algoritam hijerarhijskog klasteriranja jer u ovom algoritmu ne moramo imati znanje o unaprijed definiranom broju klastera.
U ovoj temi raspravljat ćemo o aglomerativnom hijerarhijskom algoritmu klasteriranja.
Aglomerativno hijerarhijsko grupiranje
Algoritam aglomerativnog hijerarhijskog klasteriranja popularan je primjer HCA. Za grupiranje skupova podataka u klastere, slijedi pristup odozdo prema gore . To znači da ovaj algoritam svaki skup podataka na početku smatra jednim klasterom, a zatim počinje kombinirati najbliži par klastera. To čini sve dok se svi klasteri ne spoje u jedan klaster koji sadrži sve skupove podataka.
Ova hijerarhija klastera predstavljena je u obliku dendrograma.
Kako funkcionira aglomerativno hijerarhijsko grupiranje?
Rad AHC algoritma može se objasniti pomoću sljedećih koraka:
Napomena: za bolje razumijevanje hijerarhijskog klasteriranja, savjetuje se da pogledate k-srednje klasteriranje
Izmjerite udaljenost između dva grozda
Kao što smo vidjeli, najbliža udaljenost između dva klastera ključna je za hijerarhijsko grupiranje. Postoje različiti načini za izračunavanje udaljenosti između dva klastera, a ti načini određuju pravilo za klasteriranje. Ove mjere su tzv Metode povezivanja . Neke od popularnih metoda povezivanja navedene su u nastavku:
Od gore navedenih pristupa, možemo primijeniti bilo koji od njih prema vrsti problema ili poslovnom zahtjevu.
Rad na dendrogramu u hijerarhijskom grupiranju
Dendrogram je struktura nalik stablu koja se uglavnom koristi za pohranjivanje svakog koraka kao memorije koju izvodi HC algoritam. Na dijagramu dendrograma, Y-os prikazuje euklidske udaljenosti između podatkovnih točaka, a x-os prikazuje sve podatkovne točke zadanog skupa podataka.
Rad dendrograma može se objasniti pomoću dijagrama u nastavku:
python ili
Na gornjem dijagramu lijevi dio prikazuje kako nastaju klasteri u aglomerativnom klasteriranju, a desni dio prikazuje odgovarajući dendrogram.
- Kao što smo gore spomenuli, prvo se podatkovne točke P2 i P3 kombiniraju i tvore klaster, sukladno tome nastaje dendrogram koji povezuje P2 i P3 s pravokutnim oblikom. Visina se određuje prema euklidskoj udaljenosti između podatkovnih točaka.
- U sljedećem koraku, P5 i P6 formiraju klaster, te se kreira odgovarajući dendrogram. Veći je od prethodnog, jer je euklidska udaljenost između P5 i P6 malo veća od P2 i P3.
- Ponovno se stvaraju dva nova dendrograma koji kombiniraju P1, P2 i P3 u jednom dendrogramu, te P4, P5 i P6 u drugom dendrogramu.
- Na kraju se stvara konačni dendrogram koji kombinira sve podatkovne točke.
Možemo rezati strukturu stabla dendrograma na bilo kojoj razini prema našim zahtjevima.
Python implementacija aglomerativnog hijerarhijskog klasteriranja
Sada ćemo vidjeti praktičnu implementaciju algoritma aglomerativnog hijerarhijskog klasteriranja pomoću Pythona. Da bismo to implementirali, koristit ćemo isti problem sa skupom podataka koji smo koristili u prethodnoj temi klasteriranja K-srednjih vrijednosti tako da možemo lako usporediti oba koncepta.
Skup podataka sadrži informacije o kupcima koji su posjetili trgovački centar radi kupovine. Dakle, vlasnik trgovačkog centra želi pronaći neke obrasce ili neko određeno ponašanje svojih kupaca koristeći informacije skupa podataka.
algoritmi sortiranja merge sort
Koraci za implementaciju AHC-a pomoću Pythona:
Koraci za implementaciju bit će isti kao i klasteriranje k-srednjih vrijednosti, osim nekih promjena kao što je metoda za pronalaženje broja klastera. U nastavku su navedeni koraci:
Koraci prethodne obrade podataka:
U ovom koraku uvest ćemo biblioteke i skupove podataka za naš model.
# Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd
Gornje linije koda koriste se za uvoz biblioteka za obavljanje specifičnih zadataka, kao što su numpy za matematičke operacije, matplotlib za crtanje grafikona ili raspršenog dijagrama, i pande za uvoz skupa podataka.
# Importing the dataset dataset = pd.read_csv('Mall_Customers_data.csv')
Kao što je gore navedeno, uvezli smo isti skup podataka od Mall_Customers_data.csv, kao što smo učinili u klasteriranju k-značenja. Razmotrite donji izlaz:
Ovdje ćemo izdvojiti samo matricu značajki budući da nemamo dodatnih informacija o ovisnoj varijabli. Kod je dan u nastavku:
x = dataset.iloc[:, [3, 4]].values
Ovdje smo izdvojili samo 3 i 4 stupca jer ćemo koristiti 2D dijagram da vidimo klastere. Dakle, razmatramo godišnji rezultat prihoda i potrošnje kao matricu značajki.
Korak 2: Pronalaženje optimalnog broja klastera pomoću Dendrograma
Sada ćemo pronaći optimalan broj klastera koristeći Dendrogram za naš model. Za ovo ćemo koristiti scipy jer pruža funkciju koja će izravno vratiti dendrogram za naš kod. Razmotrite donje retke koda:
#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()
U gornjim redcima koda uvezli smo hijerarhija modul scipy knjižnice. Ovaj modul nam daje metodu shc.denrogram(), koji uzima veza() kao parametar. Funkcija povezivanja koristi se za definiranje udaljenosti između dva klastera, tako da smo ovdje proslijedili x (matricu značajki) i metodu ' odjeljenje ,' popularna metoda povezivanja u hijerarhijskom klasteriranju.
Preostale linije koda trebaju opisati oznake za dijagram dendrograma.
Izlaz:
Izvršavanjem gornjih redaka koda, dobit ćemo donji izlaz :
Koristeći ovaj dendrogram, sada ćemo odrediti optimalan broj klastera za naš model. Za ovo ćemo pronaći najveća okomita udaljenost koji ne siječe vodoravnu šipku. Razmotrite dijagram u nastavku:
U gornjem dijagramu prikazali smo okomite udaljenosti koje ne sijeku njihove vodoravne šipke. Kao što možemo zamisliti, 4thudaljenost izgleda kao maksimalna, pa prema ovome, broj klastera će biti 5 (okomite crte u ovom rasponu). Također možemo uzeti 2ndbroj jer je približno jednak 4thudaljenost, ali ćemo razmotriti 5 klastera jer smo iste izračunali u algoritmu K-srednjih vrijednosti.
sivi kod
Dakle, optimalan broj klastera bit će 5 , a mi ćemo trenirati model u sljedećem koraku, koristeći isti.
Korak 3: Obuka hijerarhijskog modela klasteriranja
Kako znamo potreban optimalan broj klastera, sada možemo trenirati naš model. Kod je naveden u nastavku:
#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)
U gornjem kodu uvezli smo AglomerativeClustering klasa modula klastera knjižnice učenja scikit.
Zatim smo kreirali objekt ove klase pod nazivom as hc. Klasa AgglomerativeClustering uzima sljedeće parametre:
U posljednjem smo retku kreirali zavisnu varijablu y_pred za prilagođavanje ili treniranje modela. Ne obučava samo model, već vraća i klastere kojima svaka podatkovna točka pripada.
Nakon izvršavanja gornjih redaka koda, ako prođemo kroz opciju istraživača varijabli u našem Sypder IDE-u, možemo provjeriti varijablu y_pred. Izvorni skup podataka možemo usporediti s varijablom y_pred. Razmotrite sliku u nastavku:
Kao što možemo vidjeti na gornjoj slici, y_pred pokazuje vrijednost klastera, što znači da ID kupca 1 pripada 5thklaster (kako indeksiranje počinje od 0, tako da 4 znači 5thklaster), ID kupca 2 pripada 4thklaster, i tako dalje.
Korak 4: Vizualizacija klastera
Kako smo uspješno uvježbali naš model, sada možemo vizualizirati klastere koji odgovaraju skupu podataka.
Ovdje ćemo koristiti iste retke koda kao što smo koristili u k-means klasteriranju, osim jedne promjene. Ovdje nećemo iscrtavati centroid koji smo radili u k-srednjim vrijednostima, jer smo ovdje koristili dendrogram za određivanje optimalnog broja klastera. Kod je naveden u nastavku:
#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()
Izlaz: Izvođenjem gornjih redaka koda, dobit ćemo donji izlaz: