Машинное обучение - страница 10



5. Повторение шагов 3 и 4: Процессы присвоения точек к кластерам и пересчета центроидов повторяются до тех пор, пока не будет достигнуто определенное условие остановки. Обычно это ограничение числа итераций или малая изменчивость центроидов.

6. Вывод результатов: По завершении алгоритма получаем набор кластеров, где каждая точка данных относится к определенному кластеру.

Формула, используемая в методе K-средних для определения принадлежности точки кластеру, выглядит следующим образом:

d(x, c) = sqrt((x1 – c1)^2 + (x2 – c2)^2 + … + (xn – cn)^2)

где:

– d(x, c) представляет собой расстояние между точкой данных x и центроидом c,

– x1, x2, …, xn представляют координаты точки данных x,

– c1, c2, …, cn представляют координаты центроида c.

Формула использует Евклидово расстояние для вычисления расстояния между точкой данных и центроидом. Она измеряет разницу между каждой координатой точки данных и соответствующей координатой центроида, затем суммирует квадраты этих разностей и извлекает квадратный корень из суммы.

Это расстояние помогает определить, к какому кластеру должна быть отнесена точка данных. Чем ближе точка к центроиду, тем меньше значение расстояния, и она будет отнесена к этому кластеру.

Метод K-средних использует эту формулу для вычисления расстояния между каждой точкой данных и всеми центроидами, а затем выбирает ближайший центроид для каждой точки данных в качестве принадлежности к кластеру.

Метод K-средних является итеративным алгоритмом, который стремится минимизировать сумму квадратов расстояний между точками данных и центроидами. Он обладает простотой реализации и хорошей масштабируемостью, что делает его популярным методом для кластеризации данных в различных областях, включая бизнес, науку, медицину и другие.

Рассмотрим пример кода сегментации клиентов в банковской сфере с использованием метода K-средних (K-means). Этот метод может помочь выявить группы клиентов с общими характеристиками и поведением, что позволит банку адаптировать свои продукты и услуги под каждую группу более эффективно.

```python

import pandas as pd

from sklearn.cluster import KMeans

from sklearn.preprocessing import StandardScaler

# Загрузка данных о клиентах банка

data = pd.read_csv('customer_data.csv')

# Предобработка данных: масштабирование числовых признаков

scaler = StandardScaler()

scaled_data = scaler.fit_transform(data[['Age', 'Income', 'Balance']])

# Определение количества кластеров

k = 3

# Создание и обучение модели K-средних

kmeans = KMeans(n_clusters=k, random_state=42)

kmeans.fit(scaled_data)

# Получение меток кластеров для каждого клиента

cluster_labels = kmeans.labels_

# Добавление меток кластеров в исходные данные

data['Cluster'] = cluster_labels

# Вывод результатов сегментации

for cluster in range(k):

cluster_data = data[data['Cluster'] == cluster]

print(f"Cluster {cluster}:")

print(cluster_data.describe())

print('\n')

# Описание каждого кластера:

# – Можно проанализировать средний возраст, доход и баланс по каждому кластеру

# – Определить основные характеристики и поведение клиентов в каждом кластере

```

В данном примере мы используем библиотеки pandas и scikit-learn для загрузки данных о клиентах банка, предобработки данных и применения метода K-средних. Сначала данные подвергаются масштабированию с помощью StandardScaler, чтобы привести числовые признаки к одному масштабу.

Затем мы задаем количество кластеров (в данном случае k = 3) и создаем экземпляр модели KMeans. Обучение модели происходит методом fit, где модель вычисляет центроиды кластеров, чтобы минимизировать сумму квадратов расстояний до точек данных внутри каждого кластера.