K-Means Clustering
Изучи кластеризацию K-Means для обучения без учителя. Узнай, как этот алгоритм разделяет данные, расширяет возможности приложений ИИ и помогает создавать модели, такие как Ultralytics YOLO26.
Кластеризация методом 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 Platform, обрабатывают сложные конвейеры обучения, K-Means часто используется для анализа статистики наборов данных. Следующий фрагмент кода на Python демонстрирует кластеризацию двумерных координат, имитирующих центроиды объектов, с помощью популярной библиотеки 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 ближайших соседей (KNN): их часто путают из-за буквы «K» в названиях. K-Means — это алгоритм обучения без учителя, используемый для кластеризации немаркированных данных. Напротив, метод K ближайших соседей (KNN) — это алгоритм обучения с учителем, используемый для классификации изображений и регрессии, который опирается на маркированные данные и строит прогнозы на основе класса большинства соседей.
- K-Means и DBSCAN: оба алгоритма кластеризуют данные, однако K-Means предполагает, что кластеры имеют сферическую форму, и требует заранее определить их количество. DBSCAN группирует данные на основе плотности, может находить кластеры произвольной формы и лучше обрабатывает шум. Благодаря этому DBSCAN превосходит K-Means при работе со сложными пространственными данными в наборах данных с нерегулярной структурой, когда число кластеров неизвестно.









