Ієрархічний алгоритм кластеризації Python!

Вихідний вузол: 1055669

Ця стаття була опублікована як частина Блогатон науки про дані

Вступ

У цій статті ми розглянемо інший підхід до кластеризації K Means, який називається ієрархічною кластеризацією. Порівняно з K Means або K Mode, ієрархічна кластеризація має інший основний алгоритм роботи механізму кластеризації. Ієрархічна кластеризація використовує методи агломерації або розділення, тоді як K Means використовує комбінацію центроїда та евклідової відстані для формування кластерів. Дендрограмми можна використовувати для візуалізації кластерів в ієрархічній кластеризації, що може допомогти з кращою інтерпретацією результатів за допомогою значущих таксономій. Нам не обов’язково вказувати кількість кластерів при створенні дендрограми.

Тут ми використовуємо Python для пояснення моделі ієрархічної кластеризації. У нашому наборі даних є дані про 200 клієнтів торгового центру. Ідентифікатор клієнта, жанр, вік, річний дохід і оцінка витрат включено до кадру даних. Сума, обчислена для оцінки витрат кожного з їхніх клієнтів, базується на кількох критеріях, таких як їхній дохід, кількість разів на тиждень, які вони відвідують торговий центр, і сума грошей, яку вони витратили за рік. Ця оцінка коливається від 1 до 100. Оскільки ми не знаємо відповідей, бізнес-проблема стає проблемою кластеризації. Остаточні категорії даних нам невідомі. У результаті наша мета — виявити деякі раніше невідомі кластери клієнтів.

Але спочатку ми розглянемо деякі важливі терміни ієрархічної кластеризації.

Важливі терміни в ієрархічній кластеризації

Методи зв'язування

Якщо є (a) оригінальні спостереження a[0],…,a[|a|1] в кластері (a) і (b) оригінальні об’єкти b[0],…,b[|b|1] в кластері ( b), то ми повинні обчислити відстань між двома кластерами (a) і (b), щоб об’єднати їх (b). Скажімо, є точка (d), яка не була призначена жодному з кластерів. Нам потрібно визначити, наскільки далеко кластер (a) знаходиться від кластера (d) і кластер (b) від кластера (d).

Зараз кластери зазвичай містять кілька точок, що вимагає іншого методу для обчислення матриці відстані. Метод, за допомогою якого обчислюється відстань між кластерами або відстань від точки до кластера, визначається зв’язком. Нижче наведено деякі з найбільш часто використовуваних механізмів підключення:

Одиночне з'єднання — Відстані між найбільш схожими членами обчислюються для кожної пари кластерів, а потім кластери об’єднуються на основі найкоротшої відстані.

Середнє зв'язування — Розраховується відстань між усіма членами одного кластера та всіма членами іншого кластера. Після цього середнє значення цих відстаней використовується для визначення того, які кластери об’єднаються.

Повне підключення — Для кожної пари кластерів обчислюються відстані між найбільш несхожими членами, а потім кластери об’єднуються на основі найкоротшої відстані.

Серединний зв'язок — Ми використовуємо середню відстань замість середньої відстані так само, як і середнє зчеплення.

Уорд зв'язок — Визначає відстань між кластерами за допомогою методу дисперсійного аналізу.

Центроїд зв'язку — Центроїд кожного кластера обчислюється шляхом усереднення всіх точок, призначених кластеру, а відстань між кластерами потім обчислюється за допомогою цього центроїда.

Розрахунок відстані

Існує кілька підходів до обчислення відстані між двома або більше кластерами, причому найпопулярнішим є Евклідова відстань. Інші показники відстані, такі як Мінковський, Сіті-Блок, Хеммінг, Жаккард і Чебишев, також можна використовувати з ієрархічною кластеризацією. Різні показники відстані впливають на ієрархічну кластеризацію, як показано на малюнку 2.

розрахунок відстані

Дендрограма

Відношення між об’єктами в просторі ознак представлено дендрограмою. У просторі ознак він використовується, щоб показати відстань між кожною парою послідовно об’єднаних об’єктів. Дендрограмми часто використовуються для дослідження ієрархічних кластерів перед тим, як прийняти рішення про відповідну кількість кластерів для набору даних. Відстань на дендрограмі - це відстань між двома кластерами, коли вони об'єднуються. Відстань на дендрограмі визначає, чи є два або більше кластерів непересічними чи можуть бути об’єднані разом, щоб утворити єдиний кластер.

Приклад

Тепер ми розглянемо приклади використання Python для демонстрації моделі ієрархічної кластеризації. У нас є дані про 200 клієнтів торгового центру набору даних. Ідентифікатор клієнта, жанр, вік, річний дохід і оцінка витрат включено до кадру даних. Сума, обчислена для оцінки витрат кожного з їхніх клієнтів, базується на кількох критеріях, таких як їхній дохід, кількість разів на тиждень, які вони відвідують торговий центр, і гроші, які вони витратили за рік. Ця оцінка коливається від 1 до 100. Оскільки ми не знаємо відповідей, бізнес-проблема стає проблемою кластеризації.

#1 Імпортування бібліотек
імпорт numpy як np імпорт matplotlib.pyplot як plt імпорт pandas як pd
#2 Імпорт набору даних Mall_Customers за допомогою pandas
набір даних = pd.read_csv('Mall_Customers.csv')
X = dataset.iloc[:, [3,4]].values

Цей новий крок в ієрархічній кластеризації також передбачає визначення оптимальної кількості кластерів. Цього разу ми не будемо використовувати метод ліктя. Скористаємося дендрограмою.

#3 Використання дендрограми для знаходження оптимальної кількості кластерів. # Перше, що ми збираємося зробити, це імпортувати бібліотеку scipy. scipy — це # бібліотека Python з відкритим кодом, яка містить інструменти для ієрархічної кластеризації та створення дендрограм.
# Імпортуйте лише необхідний інструмент.
імпорт scipy.cluster.hierarchy як sch 
#Давайте створимо змінну дендрограми # linkage — це фактично сам алгоритм ієрархічної кластеризації, а потім у #linkage ми маємо вказати, які дані ми застосовуємо та використовуємо. Це набір даних X
dendrogram = sch.dendrogram(sch.linkage(X, method = "ward"))
plt.title('Дендрограма')
plt.xlabel('Клієнти')
plt.ylabel('Евклідові відстані')
plt.show()

Метод Уорда – це метод, який намагається зменшити дисперсію в кожному кластері. Це майже так само, як коли ми використовували K-середні для мінімізації wcss для побудови діаграми методу ліктя; єдина відмінність полягає в тому, що замість wcss ми мінімізуємо варіанти всередині кластера. У кожному кластері це дисперсія. Дендрограмма показана нижче.

дендограма

Клієнти представлені на осі абсцис, а евклідова відстань між кластерами представлена ​​на осі у. Як визначити найкращу кількість кластерів на основі цієї діаграми? Ми хочемо знайти найдовшу вертикальну відстань, яку ми можемо, не перетинаючи жодної горизонтальної лінії, яка є лінією в червоній рамці на діаграмі вище. Давайте порахуємо лінії на діаграмі та визначимо, скільки кластерів найкраще. Для цього набору даних номер кластера буде 5.

#4 Пристосування ієрархічної кластеризації до набору даних Mall_Customes
# Існує два алгоритми для ієрархічної кластеризації: агломеративна ієрархічна кластеризація та # роздільна ієрархічна кластеризація. Ми обираємо евклідову відстань і метод варди для нашого # класу алгоритму з sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 5, affinity = 'euclidean', linkage ='ward')
# Давайте спробуємо адаптувати алгоритм ієрархічної кластеризації до набору даних X, створюючи # вектор кластерів, який повідомляє кожному клієнту, до якого кластера належить клієнт.
y_hc=hc.fit_predict(X)
#5 Візуалізація кластерів. Цей код схожий на код візуалізації k-середніх.
#Ми лише замінюємо назву вектора y_kmeans на y_hc для ієрархічної кластеризації plt.scatter(X[y_hc==0, 0], X[y_hc==0, 1], s=100, c='red', label = «Кластер 1»)
plt.scatter(X[y_hc==1, 0], X[y_hc==1, 1], s=100, c='синій', мітка ='Кластер 2')
plt.scatter(X[y_hc==2, 0], X[y_hc==2, 1], s=100, c='green', label ='Cluster 3')
plt.scatter(X[y_hc==3, 0], X[y_hc==3, 1], s=100, c='блакитний', мітка ='Кластер 4')
plt.scatter(X[y_hc==4, 0], X[y_hc==4, 1], s=100, c='magenta', label ='Cluster 5')
plt.title('Кластери клієнтів (модель ієрархічної кластеризації)')
plt.xlabel('Річний дохід (k$)')
plt.ylabel('Оцінка витрат (1-100')
plt.show()
кластери | Ієрархічна кластеризація
Кластер1 (червоний), кластер2 (синій), кластер3 (зелений), кластер4 (блакитний), кластер5 (пурпуровий)

Ці кластери можна розглядати як сегмент клієнтів торгового центру.

Це все, що стосується стандартної моделі ієрархічної кластеризації. Набір даних, а також усі коди доступні в розділі Github.

Висновок

У будь-якій вправі з кластеризації визначення кількості кластерів є трудомістким процесом. Оскільки комерційна сторона бізнесу більше стурбована вилученням сенсу з цих груп, дуже важливо візуалізувати кластери у двох вимірах і побачити, чи є вони різними. Для досягнення цієї мети можна використовувати PCA або факторний аналіз. Це поширений метод представлення кінцевих результатів різним зацікавленим сторонам, що полегшує для всіх споживання результату.

кінцева примітка

Дякую за читання!
Сподіваюся, вам сподобалася стаття і ви розширили свої знання.
Будь ласка, не соромтеся зв'язатися зі мною on Електронна адреса
Щось не згадали або хочете поділитися своїми думками? Не соромтеся залишати коментарі нижче, і я зв’яжуся з вами.

Про автора

Хардіккумар М. Дхадук
Аналітик даних | Спеціаліст з аналізу цифрових даних | Учень Data Science
Зв'яжіться зі мною далі Linkedin
Зв'яжіться зі мною далі Github

Носії, показані в цій статті, не належать Analytics Vidhya і використовуються на розсуд автора.

Джерело: https://www.analyticsvidhya.com/blog/2021/08/hierarchical-clustering-algorithm-python/

Часова мітка:

Більше від Аналітика Vidhya