Hierarhiline klasterdamisalgoritm Python!

Allikasõlm: 1055669

See artikkel avaldati osana Andmeteaduse ajaveebi

Sissejuhatus

Selles artiklis vaatleme teistsugust lähenemist K tähendab klasterdamisele, mida nimetatakse hierarhiliseks klastriks. Võrreldes K Meansi või K-režiimiga on hierarhilisel rühmitamisel klastrite mehhanismi toimimiseks erinev alusalgoritm. Hierarhiline klastrite moodustamine kasutab aglomeratiivseid või jagunevaid tehnikaid, samas kui K Means kasutab klastrite moodustamiseks tsentroidi ja eukleidilise kauguse kombinatsiooni. Dendrogramme saab kasutada klastrite visualiseerimiseks hierarhilises klastris, mis võib aidata tulemusi mõtestatud taksonoomiate kaudu paremini tõlgendada. Dendrogrammi tegemisel ei pea me määrama klastrite arvu.

Siin kasutame Pythonit hierarhilise klastrite mudeli selgitamiseks. Meie andmekogumis on 200 kaubanduskeskuse kliendi andmed. Andmeraamis sisaldub iga kliendi kliendi ID, žanr, vanus, aastasissetulek ja kuluskoor. Iga kliendi kuluskoori kohta arvutatav summa põhineb mitmel kriteeriumil, nagu nende sissetulek, kaubanduskeskuse külastuste arv nädalas ja aasta jooksul kulutatud rahasumma. See skoor jääb vahemikku 1–100. Kuna me ei tea vastuseid, muutub äriprobleem klastriprobleemiks. Andmete lõplikud kategooriad on meile teadmata. Sellest tulenevalt on meie eesmärk avastada mõned senitundmatud kliendiklastrid.

Kuid kõigepealt uurime mõnda olulist terminit hierarhilises klastris.

Olulised terminid hierarhilises klastris

Ühendusmeetodid

Kui klastris (a) on (a) algsed vaatlused a[0],…,a[|a|1] ja (b) algsed objektid b[0],…,b[|b|1] klastris ( b), siis peame arvutama kahe klastri (a) ja (b) vahelise kauguse, et neid kombineerida (b). Oletame, et on punkt (d), mis pole ühelegi klastrile määratud. Peame välja selgitama, kui kaugel on klaster (a) kobarast (d) ja kobar (b) kobarast (d).

Klastrid sisaldavad nüüd tavaliselt mitut punkti, mistõttu on kaugusmaatriksi arvutamiseks vaja teistsugust meetodit. Meetod, mille abil arvutatakse klastrite vaheline kaugus või punktist klastri vaheline kaugus, määratakse sidemega. Järgmised on mõned kõige sagedamini kasutatavad sidumismehhanismid.

Üksikühendus — Kõige sarnasemate liikmete vahelised kaugused arvutatakse iga klastripaari jaoks ja seejärel liidetakse klastrid lühima vahemaa alusel.

Keskmine seos — Arvutatakse kaugus ühe klastri kõigi liikmete ja teise klastri kõigi liikmete vahel. Pärast seda kasutatakse nende vahemaade keskmist, et määrata, millised klastrid ühinevad.

Täielik sidumine — Iga klastripaari jaoks arvutatakse kõige erinevamate liikmete vahelised kaugused ja seejärel liidetakse klastrid lühima vahemaa alusel.

Keskmine seos — Kasutame keskmise kauguse asemel mediaankaugust sarnaselt keskmise sidemega.

Jaoskonnaühendus — määrab dispersioonanalüüsi meetodi abil klastrite vahelise kauguse.

Tsentriidi ühendus — Iga klastri tsentroid arvutatakse kõigi klastrile määratud punktide keskmistamisega ja seejärel arvutatakse selle tsentroidi abil klastrite vaheline kaugus.

Kauguse arvutamine

Kahe või enama klastri vahelise kauguse arvutamiseks on mitu lähenemisviisi, millest kõige populaarsem on Eukleidiline kaugus. Hierarhilise rühmitusega saab kasutada ka muid kaugusmõõdikuid, nagu Minkowski, City Block, Hamming, Jaccard ja Chebyshev. Erinevad kaugusmõõdikud mõjutavad hierarhilist klastrit, nagu on näidatud joonisel 2.

kauguse arvutamine

Dendrogramm

Objektide vahelist seost tunnusruumis kujutab dendrogramm. Funktsiooniruumis kasutatakse seda kauguse näitamiseks järjestikku liidetud objektide paari vahel. Dendrogramme kasutatakse sageli hierarhiliste klastrite uurimiseks enne, kui otsustatakse andmestiku jaoks sobiva arvu klastreid. Dendrogrammi kaugus on kahe klastri vaheline kaugus nende ühinemisel. Dendrogrammi kaugus määrab, kas kaks või enam klastrit on lahutatud või neid saab ühendada üheks klastriks.

Näide

Nüüd vaatame näiteid Pythoni kasutamisest hierarhilise klastrite mudeli demonstreerimiseks. Meil on 200 kaubanduskeskuse kliendi andmed andmestik. Andmeraamis sisaldub iga kliendi kliendi ID, žanr, vanus, aastasissetulek ja kuluskoor. Iga kliendi kuluskoori kohta arvutatav summa põhineb mitmel kriteeriumil, nagu nende sissetulek, kaubanduskeskuse külastuste arv nädalas ja aasta jooksul kulutatud raha. See skoor jääb vahemikku 1–100. Kuna me ei tea vastuseid, muutub äriprobleem klastriprobleemiks.

#1 Teekide importimine
import numpy kui np import matplotlib.pyplot kui plt import pandad pd-na
#2 Mall_Customersi andmestiku importimine pandade poolt
dataset = pd.read_csv('Mall_Customers.csv')
X = andmestik.iloc[:, [3,4]].väärtused

See uus samm hierarhilises klastrites hõlmab ka klastrite optimaalse arvu määramist. Seekord me küünarnuki meetodit ei kasuta. Kasutame dendrogrammi.

#3 Dendrogrammi kasutamine klastrite optimaalse arvu leidmiseks. # Esimene asi, mida me tegema hakkame, on scipy raamatukogu importimine. scipy on avatud lähtekoodiga # Pythoni teek, mis sisaldab tööriistu hierarhiliseks klastriteks ja dendrogrammide koostamiseks.
# Importige ainult vajalik tööriist.
import scipy.cluster.hierarchy kui sch 
#Lubame luua dendrogrammi muutuja # linkage on tegelikult hierarhilise klastrite algoritm ise ja siis #linkage'is peame määrama, millistele andmetele me rakendame ja kaasame. See on X andmestik
dendrogramm = sch.dendrogram(sch.linkage(X, meetod = "ward"))
plt.title('Dendrogramm')
plt.xlabel('Kliendid')
plt.ylabel('Eukleidilised kaugused')
plt.show()

Wardi meetod on meetod, mis püüab vähendada dispersiooni igas klastris. See on peaaegu sama, mis siis, kui kasutasime oma küünarnuki meetodite diagrammi koostamisel wcss-i minimeerimiseks K-vahendeid; ainus erinevus on see, et wcss-i asemel minimeerime klastrisisesed variandid. Igas klastris on see dispersioon. Dendrogramm on näidatud allpool.

dendogramm

Kliendid on esindatud x-teljel ja eukleidiline kaugus klastrite vahel on esindatud y-teljel. Kuidas me selle diagrammi põhjal parima klastrite arvu välja selgitame? Soovime leida pikima vertikaalse vahemaa, mis on võimalik ilma horisontaaljooni ületamata, mis on punase raamiga joon ülaltoodud diagrammil. Loendame diagrammil olevad jooned ja selgitame välja, mitu klastrit on parimad. Selle andmestiku puhul on klastri number 5.

#4 Hierarhilise klastri sobitamine Mall_Customesi andmestikuga
# Hierarhiliseks rühmitamiseks on kaks algoritmi: agglomeratiivne hierarhiline rühmitamine ja # Divisive Hierarchical Clustering. Valime oma # algoritmiklassi jaoks eukleidilise kauguse ja osakonna meetodi sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 5, afiinsus = 'eukleidiline', linkage ='ward')
# Proovime sobitada hierarhilise klastrite algoritmi andmekoguga X, luues samal ajal # klastrite vektori, mis ütleb iga kliendi kohta, millisesse klastrisse klient kuulub.
y_hc=hc.fit_predict(X)
# 5 Klastrite visualiseerimine. See kood sarnaneb k-mean visualiseerimiskoodiga.
#Asendame hierarhilise klastri plt.scatter(X[y_hc==0, 0], X[y_hc==0, 1], s=100, c='red', label = vektori nime y_kmeans väärtusega y_hc ainult 'klaster 1')
plt.scatter(X[y_hc==1, 0], X[y_hc==1, 1], s=100, c='sinine', silt ='klaster 2')
plt.scatter(X[y_hc==2, 0], X[y_hc==2, 1], s=100, c='roheline', silt ='klaster 3')
plt.scatter(X[y_hc==3, 0], X[y_hc==3, 1], s=100, c='tsüaan', silt ='klaster 4')
plt.scatter(X[y_hc==4, 0], X[y_hc==4, 1], s=100, c='magenta', silt ='klaster 5')
plt.title('Klientide klastrid (hierarhiline klastrimudel)')
plt.xlabel('Aastatulu(k$)')
plt.ylabel('Kulutuste skoor(1-100')
plt.show()
klastrid | Hierarhiline klasterdamine
Kobar 1 (punane), kobar 2 (sinine), kobar3 (roheline), kobar 4 (tsüaan), kobar 5 (magenta)

Neid klastreid võib pidada kaubanduskeskuse kliendisegmendiks.

See on kõik, mis standardse hierarhilise klastrite mudeli jaoks on. Andmekogum ja kõik koodid on saadaval Githubi jaotises.

Järeldus

Igas klastrite moodustamises on klastrite arvu määramine aeganõudev protsess. Kuna ettevõtte äriline pool on rohkem seotud nende rühmade tähenduse eraldamisega, on ülioluline visualiseerida klastreid kahes mõõtmes ja vaadata, kas need on erinevad. Selle eesmärgi saavutamiseks saab kasutada PCA-d või faktorianalüüsi. See on levinud meetod lõpptulemuste esitlemiseks erinevatele sidusrühmadele, muutes väljundi tarbimise kõigile lihtsamaks.

Lõpumärkus

Tänan teid lugemise eest!
Loodan, et teile meeldis artikkel ja täiendasite oma teadmisi.
Palun võtke minuga ühendust on E-POST
Midagi pole mainitud või soovite oma mõtteid jagada? Kommenteerige julgelt allpool ja ma võtan teiega ühendust.

Teave Autor

Hardikkumar M. Dhaduk
Andmeanalüütik | Digitaalse andmeanalüüsi spetsialist | Andmeteaduse õppija
Võtke minuga ühendust LinkedIn
Võtke minuga ühendust Github

Selles artiklis näidatud meediumid ei kuulu Analytics Vidhyale ja neid kasutatakse autori äranägemisel.

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

Ajatempel:

Veel alates Analüütika Vidhya