Кластеризация K-средних
Изучите кластеризацию K-средних, ключевой алгоритм обучения без учителя для группировки данных в кластеры. Изучите его процесс, приложения и сравнения!
Кластеризация K-Means — это фундаментальный и широко используемый алгоритм в области
неконтролируемого обучения, предназначенный для выявления
скрытых структур в немаркированных данных. Его основная
цель — разделить набор данных на отдельные подгруппы, называемые кластерами, таким образом, чтобы точки данных в одной и той же
группе были максимально похожими, а точки в разных группах — отличались друг от друга. Являясь краеугольным камнем
интеллектуального анализа данных и исследовательского анализа, K-Means позволяет
специалистам по данным автоматически организовывать сложную информацию в удобные для управления категории без необходимости
предварительно заданных меток или контроля со стороны человека.
Как работает алгоритм
Работа K-Means является итеративной и основана на метриках расстояния для определения оптимальной группировки
учебных данных. Алгоритм работает путем организации
элементов в K кластеров, где каждый элемент принадлежит кластеру с ближайшим средним значением или центроидом. Этот
процесс минимизирует дисперсию внутри каждой группы. Рабочий процесс
обычно состоит из следующих шагов:
-
Инициализация: алгоритм выбирает K начальных точек в качестве центроидов. Их можно выбрать
случайно или с помощью оптимизированных методов, таких как k-means++, чтобы ускорить
сходимость.
-
Задача: каждая точка данных в наборе данных сопоставляется ближайшему центроиду на основе определенной
метрики расстояния, чаще всего
евклидова расстояния.
-
Обновление: центроиды пересчитываются путем вычисления среднего значения (среднего) всех точек данных, назначенных
этому кластеру.
-
Итерация: Шаги 2 и 3 повторяются до тех пор, пока центроиды не перестанут значительно смещаться или не будет достигнуто максимальное
количество итераций.
Определение правильного количества кластеров (K) является критически важным аспектом использования этого алгоритма. Практики
часто используют такие методы, как метод «локтя», или
анализируют
оценку силуэта,
чтобы оценить, насколько хорошо разделены полученные кластеры.
Приложения реального мира в искусственном интеллекте
Кластеризация K-Means является очень универсальной и находит применение в различных отраслях для упрощения и
предварительной обработки данных.
-
Сжатие изображений и квантование цветов: в
компьютерном зрении (CV) K-Means помогает уменьшить
размер файлов изображений путем кластеризации цветов пикселей. Группируя тысячи цветов в меньший набор доминирующих
цветов, алгоритм эффективно выполняет
уменьшение размерности, сохраняя при этом
визуальную структуру изображения. Эта техника часто используется перед обучением продвинутых
моделей обнаружения объектов для нормализации входных данных.
-
Сегментация клиентов: компании используют кластеризацию для группировки клиентов на основе истории покупок,
демографических данных или поведения на веб-сайте. Это позволяет разрабатывать целевые маркетинговые стратегии, которые являются ключевым компонентом
решений искусственного интеллекта в розничной торговле. Выявляя высокоценных
покупателей или риски оттока клиентов, компании могут эффективно адаптировать свои сообщения.
-
Обнаружение аномалий: изучая структуру «нормальных» кластеров данных, системы могут
выявлять отклонения, которые значительно отличаются от любого центроида. Это
ценно для выявления мошенничества в финансах и
обнаружения аномалий в сетевой безопасности, помогая
отмечать подозрительные действия, которые отклоняются от стандартных моделей.
-
Генерация анкор-боксов: Исторически сложилось так, что детекторы объектов, такие как старые YOLO , использовали K-Means для
вычисления оптимальных анкор-боксов из обучающих
наборов данных. Хотя современные модели, такие как YOLO26, используют передовые
методы без анкор-боксов, понимание K-Means по-прежнему остается актуальным для развития архитектур детектирования.
Пример реализации
В то время как фреймворки глубокого обучения, такие как Ultralytics , обрабатывают
сложные конвейеры обучения, K-Means часто используется для анализа статистики наборов данных. Следующий Python
демонстрирует, как кластеризовать 2D-координаты — моделируя центроиды объектов — с помощью популярной
библиотеки Scikit-learn.
import numpy as np
from sklearn.cluster import KMeans
# Simulated coordinates of detected objects (e.g., from YOLO26 inference)
points = np.array([[10, 10], [12, 11], [100, 100], [102, 101], [10, 12], [101, 102]])
# Initialize K-Means to find 2 distinct groups (clusters)
kmeans = KMeans(n_clusters=2, random_state=0, n_init="auto").fit(points)
# Output the cluster labels (0 or 1) for each point
print(f"Cluster Labels: {kmeans.labels_}")
# Output: [1 1 0 0 1 0] -> Points near (10,10) are Cluster 1, near (100,100) are Cluster 0
Сравнение с аналогичными алгоритмами
Важно отличать K-Means от других алгоритмов с похожими названиями или функциями, чтобы гарантировать выбор правильного
инструмента для проекта.
-
K-Means против K-Nearest Neighbors (KNN): их часто путают из-за буквы «K» в их
названии. K-Means — это неконтролируемый алгоритм, используемый для кластеризации данных без меток. В отличие от него,
K-Nearest Neighbors (KNN) — это
контролируемый алгоритм обучения, используемый для
классификации изображений и регрессии, который опирается
на помеченные данные для прогнозирования на основе большинства классов соседей.
-
K-Means против DBSCAN: Хотя оба метода кластеризуют данные, K-Means предполагает, что кластеры являются сферическими, и требует
заранее определить количество кластеров.
DBSCAN
группирует данные на основе плотности, может находить кластеры произвольной формы и лучше обрабатывает шумы. Это делает DBSCAN
более подходящим для сложных пространственных данных, встречающихся в наборах данных с
нерегулярными структурами, где количество кластеров неизвестно.