logo

Хијерархијско груписање у машинском учењу

Хијерархијско груписање је још један алгоритам за машинско учење без надзора, који се користи за груписање неозначених скупова података у кластер и такође познат као хијерархијска кластер анализа или ХЦА.

У овом алгоритму развијамо хијерархију кластера у облику дрвета, а ова структура у облику дрвета је позната као дендрограм .

Понекад резултати кластерисања К-средстава и хијерархијског груписања могу изгледати слично, али се оба разликују у зависности од тога како функционишу. Пошто не постоји захтев да се унапред одреди број кластера као што смо урадили у К-Меанс алгоритму.

Техника хијерархијског груписања има два приступа:

    агломеративно:Агломератив је а одоздо према горе приступ, у коме алгоритам почиње узимањем свих тачака података као појединачних кластера и њиховим спајањем док не остане један кластер.подела:Дивизијски алгоритам је обрнуто од агломеративног алгоритма јер је а одозго на доле приступ.

Зашто хијерархијско груписање?

Као што већ имамо друге груписање алгоритми као што су Груписање К-средстава , зашто нам је онда потребно хијерархијско груписање? Дакле, као што смо видели у груписању К-средстава, постоје неки изазови са овим алгоритмом, који су унапред одређени број кластера, и увек покушава да створи кластере исте величине. Да бисмо решили ова два изазова, можемо се определити за хијерархијски алгоритам груписања јер у овом алгоритму не морамо да имамо знање о унапред дефинисаном броју кластера.

У овој теми ћемо разговарати о агломеративном хијерархијском алгоритму груписања.

Агломеративно хијерархијско груписање

Агломеративни хијерархијски алгоритам за груписање је популаран пример ХЦА. Да бисте груписали скупове података у кластере, следи приступ одоздо према горе . То значи да овај алгоритам на почетку разматра сваки скуп података као један кластер, а затим почиње да комбинује најближи пар кластера заједно. То ради све док се сви кластери не споје у један кластер који садржи све скупове података.

Ова хијерархија кластера је представљена у облику дендрограма.

Како функционише агломеративно хијерархијско груписање?

Рад АХЦ алгоритма се може објаснити следећим корацима:

    Корак 1:Направите сваку тачку података као један кластер. Рецимо да постоји Н тачака података, тако да ће број кластера такође бити Н.
    Хијерархијско груписање у машинском учењу Корак 2:Узмите две најближе тачке података или кластера и спојите их да бисте формирали један кластер. Дакле, сада ће постојати Н-1 кластери.
    Хијерархијско груписање у машинском учењу Корак-3: Опет, узмите два најближа кластера и спојите их заједно да бисте формирали један кластер. Биће Н-2 кластера.
    Хијерархијско груписање у машинском учењу Корак 4:Поновите корак 3 док не остане само један кластер. Дакле, добићемо следеће кластере. Размотрите слике испод:
    Хијерархијско груписање у машинском учењу
    Хијерархијско груписање у машинском учењу
    Хијерархијско груписање у машинском учењу Корак 5:Када се сви кластери комбинују у један велики кластер, развијте дендрограм да бисте поделили кластере према проблему.

Напомена: Да бисте боље разумели хијерархијско груписање, саветује се да погледате к-меанс груписање

Измерите растојање између два кластера

Као што смо видели, најближа удаљеност између два кластера је кључна за хијерархијско груписање. Постоје различити начини да се израчуна растојање између два кластера, а ови начини одлучују о правилу за груписање. Ове мере се зову Методе повезивања . Неке од популарних метода повезивања су наведене у наставку:

    Појединачна веза:То је најкраћа удаљеност између најближих тачака кластера. Размотрите слику испод:
    Хијерархијско груписање у машинском учењу Потпуна веза:То је најудаљеније растојање између две тачке два различита кластера. То је једна од популарних метода повезивања јер формира чвршће кластере од једноструког повезивања.
    Хијерархијско груписање у машинском учењу Просечна веза:То је метода повезивања у којој се раздаљина између сваког пара скупова података сабира, а затим дели са укупним бројем скупова података да би се израчунала просечна удаљеност између два кластера. То је такође један од најпопуларнијих метода повезивања.Центроид веза:То је метода повезивања у којој се израчунава растојање између тежишта кластера. Размотрите слику испод:
    Хијерархијско груписање у машинском учењу

Из горе наведених приступа можемо применити било који од њих према врсти проблема или пословном захтеву.

прег_матцх

Вокинг Дендрограма у хијерархијском груписању

Дендрограм је структура налик стаблу која се углавном користи за чување сваког корака као меморије коју изводи ХЦ алгоритам. У дијаграму дендрограма, И-оса приказује еуклидске удаљености између тачака података, а к-оса приказује све тачке података датог скупа података.

Рад дендрограма се може објаснити коришћењем дијаграма у наставку:

Хијерархијско груписање у машинском учењу

У горњем дијаграму, леви део показује како се стварају кластери у агломеративном груписању, а десни део приказује одговарајући дендрограм.

  • Као што смо горе расправљали, прво, тачке података П2 и П3 се комбинују заједно и формирају кластер, сходно томе се креира дендрограм, који повезује П2 и П3 са правоугаоним обликом. Висина се одређује према еуклидској удаљености између тачака података.
  • У следећем кораку, П5 и П6 формирају кластер и креира се одговарајући дендрограм. Већа је него код претходног, пошто је еуклидско растојање између П5 и П6 мало веће од П2 и П3.
  • Опет, креирају се два нова дендрограма који комбинују П1, П2 и П3 у једном дендрограму и П4, П5 и П6 у другом дендрограму.
  • Коначно се креира коначни дендрограм који комбинује све тачке података заједно.

Можемо исећи структуру стабла дендрограма на било ком нивоу према нашим захтевима.

Питхон имплементација агломеративног хијерархијског груписања

Сада ћемо видети практичну примену алгоритма агломеративног хијерархијског груписања користећи Питхон. Да бисмо ово имплементирали, користићемо исти проблем скупа података који смо користили у претходној теми груписања К-средстава тако да можемо лако да упоредимо оба концепта.

Скуп података садржи информације о купцима који су посетили тржни центар ради куповине. Дакле, власник тржног центра жели да пронађе неке обрасце или одређено понашање својих купаца користећи информације скупа података.

Кораци за имплементацију АХЦ-а користећи Питхон:

Кораци за имплементацију ће бити исти као код к-меанс кластера, осим неких промена као што је метода за проналажење броја кластера. Испод су кораци:

    Предобрада података Проналажење оптималног броја кластера помоћу Дендрограма Обука хијерархијског модела кластера Визуелизација кластера

Кораци за претходну обраду података:

У овом кораку ћемо увести библиотеке и скупове података за наш модел.

    Увоз библиотека
 # Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 

Горе наведене линије кода се користе за увоз библиотека за обављање специфичних задатака, као што су нумпи за математичке операције, матплотлиб за цртање графикона или дијаграма расејања, и панде за увоз скупа података.

    Увоз скупа података
 # Importing the dataset dataset = pd.read_csv('Mall_Customers_data.csv') 

Као што је горе објашњено, увезли смо исти скуп података од Малл_Цустомерс_дата.цсв, као што смо урадили у груписању к-значи. Размотрите доњи излаз:

Хијерархијско груписање у машинском учењу
    Екстраховање матрице карактеристика

Овде ћемо издвојити само матрицу карактеристика пошто немамо више информација о зависној променљивој. Код је дат у наставку:

 x = dataset.iloc[:, [3, 4]].values 

Овде смо издвојили само 3 и 4 колоне јер ћемо користити 2Д дијаграм да видимо кластере. Дакле, разматрамо годишњи приход и резултат потрошње као матрицу карактеристика.

Корак 2: Проналажење оптималног броја кластера помоћу Дендрограма

Сада ћемо пронаћи оптималан број кластера користећи Дендрограм за наш модел. За ово ћемо користити сципи библиотека јер пружа функцију која ће директно вратити дендрограм за наш код. Размотрите доле редове кода:

 #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() 

У горњим редовима кода увезли смо хијерархија модул сципи библиотеке. Овај модул нам пружа метод схц.денрограм(), који узима веза() као параметар. Функција повезивања се користи за дефинисање удаљености између два кластера, тако да смо овде пренели к(матрицу карактеристика) и метод ' штићеник ', популаран метод повезивања у хијерархијском груписању.

Преостале линије кода треба да описују ознаке за дијаграм дендрограма.

упоредиви интерфејс у ​​Јави

Излаз:

Извршавањем горњих линија кода добићемо доњи излаз :

Хијерархијско груписање у машинском учењу

Користећи овај Дендрограм, сада ћемо одредити оптималан број кластера за наш модел. За ово ћемо пронаћи максимално вертикално растојање која не сече никакву хоризонталну траку. Размотрите дијаграм испод:

Хијерархијско груписање у машинском учењу

У горњем дијаграму смо приказали вертикална растојања која не секу њихове хоризонталне шипке. Као што можемо да замислимо, 4тхудаљеност изгледа максимално, па према овоме, број кластера ће бити 5 (вертикалне линије у овом опсегу). Можемо узети и 2ндброј јер је приближно једнак 4тхудаљености, али ћемо размотрити 5 кластера јер смо исто израчунали у алгоритму К-средње вредности.

Дакле, оптималан број кластера ће бити 5 , а ми ћемо обучити модел у следећем кораку, користећи исти.

Корак 3: Обука хијерархијског модела груписања

Пошто знамо потребан оптималан број кластера, сада можемо да тренирамо наш модел. Код је дат у наставку:

 #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) 

У горњи код смо увезли АггломеративеЦлустеринг класа кластера модул сцикит леарн библиотеке.

Затим смо креирали објекат ове класе назван као хц. Класа АггломеративеЦлустеринг узима следеће параметре:

    н_цлустерс=5: Дефинише број кластера, а ми смо овде узели 5 јер је то оптималан број кластера.аффинити='еуклидски': То је метрика која се користи за израчунавање везе.линкаге='вард': Дефинише критеријуме повезивања, овде смо користили везу 'одеће'. Ова метода је популарна метода повезивања коју смо већ користили за креирање Дендрограма. Смањује варијансу у сваком кластеру.

У последњем реду, креирали смо зависну променљиву и_пред да се уклопи или обучи модел. Он обучава не само модел, већ и враћа кластере којима свака тачка података припада.

Након извршавања горњих редова кода, ако прођемо кроз опцију истраживача променљивих у нашем Сипдер ИДЕ-у, можемо проверити променљиву и_пред. Можемо да упоредимо оригинални скуп података са променљивом и_пред. Размотрите слику испод:

Хијерархијско груписање у машинском учењу

Као што видимо на горњој слици, и_пред приказује вредност кластера, што значи да ИД клијента 1 припада 5тхкластер (како индексирање почиње од 0, тако да 4 значи 5тхкластер), ИД клијента 2 припада 4тхкластер, и тако даље.

Корак 4: Визуелизација кластера

Пошто смо успешно обучили наш модел, сада можемо да визуализујемо кластере који одговарају скупу података.

Овде ћемо користити исте линије кода као и код к-меанс кластерисања, осим једне промене. Овде нећемо цртати центар који смо радили у к-средњацима, јер смо овде користили дендрограм да одредимо оптималан број кластера. Код је дат у наставку:

инт у стринг Ц++
 #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() 

Излаз: Извршавањем горњих линија кода, добићемо доњи излаз:

Хијерархијско груписање у машинском учењу