Кластеризация BIRCH в машинном обучении
BIRCH – это алгоритм кластеризации в машинном обучении. Он обеспечивает сбалансированное сокращение и кластеризацию с использованием иерархий. В этой статье я познакомлю вас с концепцией кластеризации BIRCH в машинном обучении и ее реализацией с использованием Python.
Кластеризация BIRCH
BIRCH – это алгоритм кластеризации в машинном обучении, специально разработанный для кластеризации очень большого набора данных. Часто он работает быстрее, чем другие алгоритмы кластеризации, такие как пакетные K-средние. Он дает результат, очень похожий на пакетный алгоритм K-средних, если количество объектов в наборе данных не превышает 20.
При обучении модели с использованием алгоритма BIRCH создается древовидная структура с достаточным количеством данных, чтобы быстро назначить каждую точку данных кластеру. Сохраняя все точки данных в дереве, этот алгоритм позволяет использовать ограниченную память при работе с очень большим набором данных. В следующем разделе я расскажу вам о его реализации с использованием языка программирования Python.
Кластеризация BIRCH с использованием Python
Алгоритм BIRCH начинается с порогового значения, затем проходит обучение на данных, а затем в дерево вставляются точки данных. Если во время обучения на данных ему не хватает памяти, он увеличивает пороговое значение и повторяет процесс. Теперь давайте посмотрим, как реализовать кластеризацию BIRCH с помощью Python. Я начну эту задачу с импорта необходимых библиотек Python и набора данных:
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set() data = pd.read_csv("https://biconsult.ru/img/datascience-ml-ai/customers.csv") print(data.head())
Так выглядит набор данных:
CustomerID |
Gender |
Age |
Annual Income (k$) |
Spending Score (1-100) |
1 |
Male |
19 |
15 |
39 |
2 |
Male |
21 |
15 |
81 |
3 |
Female |
20 |
16 |
6 |
4 |
Female |
23 |
16 |
77 |
5 |
Female |
31 |
17 |
40 |
Набор данных, который я здесь использую, основан на сегментации клиентов. Давайте подготовим данные для реализации алгоритма кластеризации. Здесь я для простоты переименую столбцы, а затем выберу только два столбца для реализации алгоритма кластеризации BIRCH с использованием Python:
data["Income"] = data[["Annual Income (k$)"]] data["Spending"] = data[["Spending Score (1-100)"]] data = data[["Income", "Spending"]] print(data.head())
Результат:
|
Income |
Spending |
0 |
15 |
39 |
1 |
15 |
81 |
2 |
16 |
6 |
3 |
16 |
77 |
4 |
17 |
40 |
Итак, мы подготовили данные, и теперь давайте импортируем класс BIRCH из библиотеки sklearn в Python, используем его с данными и посмотрим на результаты, визуализировав кластеры:
from sklearn.cluster import Birch model = Birch(branching_factor=30, n_clusters=5, threshold=2.5) model.fit(data) pred = model.predict(data) plt.scatter(data["Income"], data["Spending"], c=pred, cmap='rainbow', alpha=0.5, edgecolors='b') plt.show()
Резюме
Алгоритм BIRCH дает сбалансированное итеративное сокращение и кластеризацию с использованием иерархий. Это работает лучше всего при кластеризации очень большого набора данных, содержащего менее 20 функций. Надеюсь, вам понравилась эта статья о концепции алгоритма BIRCH в машинном обучении и его реализации с использованием Python.