Hierarhični algoritem združevanja v skupine Python!

Izvorno vozlišče: 1055669

Ta članek je bil objavljen kot del Blogathon o znanosti o podatkih

Predstavitev

V tem članku bomo pogledali drugačen pristop k združevanju K sredstev, imenovan Hierarhično združevanje v gruče. V primerjavi s K sredstvi ali načinom K ima hierarhično združevanje v gruče drugačen osnovni algoritem delovanja mehanizma združevanja v gruče. Hierarhično združevanje v skupine uporablja aglomerativne ali ločevalne tehnike, medtem ko K Means uporablja kombinacijo centroidne in evklidske razdalje za oblikovanje grozdov. Dendrograme je mogoče uporabiti za vizualizacijo grozdov v hierarhičnem združevanju, kar lahko pomaga pri boljši interpretaciji rezultatov s smiselnimi taksonomijami. Pri izdelavi dendrograma ni treba določiti števila grozdov.

Tukaj uporabljamo Python za razlago hierarhičnega modela združevanja v gruče. V naboru podatkov imamo 200 podatkov o strankah nakupovalnih centrov. ID podatkov vsake stranke, zvrst, starost, letni dohodek in ocena porabe so vključeni v podatkovni okvir. Znesek, izračunan za oceno porabe vsake stranke, temelji na več merilih, kot so njihov dohodek, kolikokrat na teden obiščejo nakupovalni center in znesek denarja, ki so ga porabili v enem letu. Ta ocena se giblje od 1 do 100. Ker ne poznamo odgovorov, poslovni problem postane problem združevanja. Končne kategorije podatkov nam niso znane. Zato je naš cilj odkriti nekaj prej neznanih grozdov strank.

Najprej pa preučimo nekaj pomembnih izrazov v hierarhičnem združevanju v gruče.

Pomembni izrazi pri hierarhičnem združevanju v gruče

Metode povezovanja

Če obstajajo (a) izvirna opažanja a [0],…, a [| a | 1] v gruči (a) in (b) izvirni objekti b [0],…, b [| b | 1] v gruči ( b), potem moramo izračunati razdaljo med dvema grozdoma (a) in (b), da ju združimo (b). Recimo, da obstaja točka (d), ki ni bila dodeljena nobeni od grozdov. Ugotoviti bomo morali, kako daleč je grozd (a) od grozda (d) in gruča (b) od grozda (d).

Grozdi zdaj običajno vsebujejo več točk, kar zahteva drugačno metodo za izračun matrike razdalje. Metoda, s katero se izračuna razdalja med grozdi ali razdalja med grozdi, je določena s povezavo. Spodaj je navedenih nekaj najpogosteje uporabljenih mehanizmov povezovanja:

Enojna povezava - Razdalje med najbolj podobnimi člani se izračunajo za vsak par gruč, nato pa se združijo na podlagi najkrajše razdalje.

Povprečna povezava - Izračuna se razdalja med vsemi člani ene gruče in vsemi člani druge gruče. Po tem se povprečje teh razdalj uporabi za določitev, kateri grozdi se bodo združili.

Popolna povezava - Za vsak par gruč se izračunajo razdalje med najbolj različnimi člani in se nato združijo na podlagi najkrajše razdalje.

Srednja povezava - Srednjo razdaljo uporabljamo namesto povprečne razdalje na podoben način kot povprečna povezava.

Varnostna povezava - Določi razdaljo med grozdi z uporabo metode variance.

Centroidna povezava - Središče vsake skupine se izračuna s povprečjem vseh točk, dodeljenih gruči, nato pa se s tem centroidom izračuna razdalja med grozdi.

Izračun razdalje

Obstaja več pristopov za izračun razdalje med dvema ali več grozdi, pri čemer je Evklidova razdalja najbolj priljubljena. Druge meritve razdalje, kot so Minkowski, City Block, Hamming, Jaccard in Chebyshev, je mogoče uporabiti tudi s hierarhičnim združevanjem v gruče. Različne meritve razdalje vplivajo na hierarhično združevanje v skupine, kot je prikazano na sliki 2.

izračun razdalje

Dendrogram

Odnos med predmeti v prostoru značilnosti predstavlja dendrogram. V prostoru funkcij se uporablja za prikaz razdalje med vsakim parom zaporedno združenih predmetov. Dendrogrami se pogosto uporabljajo za pregled hierarhičnih grozdov, preden se odločijo za ustrezno število gruč za nabor podatkov. Razdalja dendrograma je razdalja med dvema grozdoma, ko se združita. Razdalja dendrograma določa, ali sta dva ali več grozdov ločeni ali jih je mogoče združiti v enotno skupino.

Primer

Zdaj si oglejmo primere uporabe Pythona za prikaz hierarhičnega modela združevanja v gruče. Podatke o strankah nakupovalnih centrov imamo 200 nabor podatkov. ID podatkov vsake stranke, zvrst, starost, letni dohodek in ocena porabe so vključeni v podatkovni okvir. Znesek, izračunan za oceno porabe vsake stranke, temelji na več merilih, kot so njihov dohodek, kolikokrat na teden obiščejo nakupovalni center in denar, ki so ga porabili za eno leto. Ta ocena se giblje od 1 do 100. Ker ne poznamo odgovorov, poslovni problem postane problem združevanja.

#1 Uvoz knjižnic
uvoz numpy kot np uvoz matplotlib.pyplot kot plt uvoz pand kot pd
#2 Uvoz nabora podatkov Mall_Customers s strani pand
nabor podatkov = pd.read_csv ('Mall_Customers.csv') X = niz podatkov.iloc [:, [3,4]]. vrednosti

Ta novi korak v hierarhičnem združevanju v gruče vključuje tudi določitev optimalnega števila gruč. Tokrat ne bomo uporabili metode komolcev. Uporabili bomo dendrogram.

#3 Z uporabo dendrograma poiščite optimalno število grozdov. # Prva stvar, ki jo bomo naredili, je uvoz knjižnice scipy. scipy je odprtokodna knjižnica # Python, ki vsebuje orodja za hierarhično združevanje v skupine in izdelavo dendrogramov. # Uvozite samo potrebno orodje. uvoz scipy.cluster.hierarchy kot sch 
#Dovolite, da ustvarite spremenljivko dendrograma #povezovanje je pravzaprav sam algoritem hierarhičnega združevanja v gruče, nato pa moramo v #linkage določiti, katere podatke uporabimo in uporabimo. To je dendrogram nabora podatkov X = sch.dendrogram (sch.linkage (X, method = "oddelek")) plt.title ('Dendrogram') plt.xlabel ('Kupci') plt.ylabel ('evklidske razdalje') plt. show ()

Wardova metoda je metoda, ki poskuša zmanjšati varianco znotraj vsake skupine. To je skoraj enako kot takrat, ko smo uporabili K-sredstva za zmanjšanje wcss-a, da smo narisali našo shemo metode komolcev; edina razlika je v tem, da namesto wcss minimiziramo različice znotraj gruče. Znotraj vsake skupine je to razlika. Dendrogram je prikazan spodaj.

dendogram

Stranke so predstavljene na osi x, evklidska razdalja med grozdi pa na osi y. Kako na podlagi tega diagrama ugotovimo najboljše število grozdov? Želimo najti najdaljšo navpično razdaljo, ne da bi prečkali vodoravne črte, to je črta z rdečim okvirjem na zgornjem diagramu. Preštejmo vrstice na diagramu in ugotovimo, koliko grozdov je najboljših. Za ta nabor podatkov bo številka gruče 5.

# 4 Prilagajanje hierarhičnega združevanja v nabor podatkov Mall_Customes # Obstajata dva algoritma za hierarhično združevanje v skupine: aglomerativno hierarhično združevanje v gruče in # deljeno hierarhično združevanje v gruče. Evklidsko metodo razdalje in oddelka za naš # algoritemski razred izberemo iz sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering (n_clusters = 5, affinity = 'euclidean', linkage = 'ward') # Poskusimo prilagoditi hierarhični algoritem združevanja v nabor podatkov X pri ustvarjanju vektorja # clusters, ki za vsako stranko pove, kateri gruči pripada stranka. y_hc = hc.fit_predict (X)
#5 Vizualizacija grozdov. Ta koda je podobna kodi za vizualizacijo k-pomeni. #Ime vektorja y_kmeans zamenjamo samo z y_hc za hierarhično združevanje plt.scatter (X [y_hc == 0, 0], X [y_hc == 0, 1], s = 100, c = 'rdeča', oznaka = 'Gruča 1') plt.scatter (X [y_hc == 1, 0], X [y_hc == 1, 1], s = 100, c = 'modra', label = 'Gruča 2') plt.scatter ( X [y_hc == 2, 0], X [y_hc == 2, 1], s = 100, c = 'zelena', oznaka = 'Gruča 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 = 'Cluster 5') plt.title ('Grozdi strank (hierarhični model združevanja)') plt.xlabel ('Letni dohodek (k $)') plt.ylabel ('Ocena porabe (1-100') plt.show ()
grozdi | Hierarhično združevanje
Gruča1 (rdeča), gruča2 (modra), gruča3 (zelena), gruča4 (modra), gruča5 (škrlatna)

Te grozde lahko razumemo kot segment strank nakupovalnega središča.

To je vse, kar obstaja za standardni model hierarhičnega združevanja v gruče. Nabor podatkov in vse kode so na voljo v razdelku Github.

zaključek

Pri vsaki vaji združevanja je določanje števila grozdov dolgotrajen proces. Ker se poslovna stran podjetja bolj ukvarja z pridobivanjem pomena iz teh skupin, je ključnega pomena, da si grozde vizualiziramo v dveh dimenzijah in preverimo, ali se razlikujejo. Za dosego tega cilja lahko uporabite PCA ali faktorsko analizo. To je običajna metoda za predstavitev končnih rezultatov različnim zainteresiranim stranem, ki vsem olajša porabo rezultatov.

Končna opomba

Hvala za branje!
Upam, da ste uživali v članku in povečali svoje znanje.
Prosim, da me kontaktirate on E-pošta
Nekaj ​​ni omenjeno ali želite deliti svoje misli? Komentirajte spodaj in se vam bom oglasil.

O Author

Hardikkumar M. Dhaduk
Analitik podatkov | Strokovnjak za analizo digitalnih podatkov | Učenec podatkovnih znanosti
Poveži se z mano naprej linkedIn
Poveži se z mano naprej GitHub

Mediji, prikazani v tem članku, niso v lasti Analytics Vidhya in se uporabljajo po presoji avtorja.

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

Časovni žig:

Več od Analitika Vidhya