K-Means Clustering
Изучи кластеризацию K-Means для обучения без учителя. Узнай, как этот алгоритм сегментирует данные, улучшает приложения ИИ и помогает в работе таких моделей, как Ultralytics YOLO26.
Кластеризация K-Means — это фундаментальный и широко используемый алгоритм в области обучения без учителя, разработанный для выявления скрытых структур внутри неразмеченных данных. Его основная цель — разделить набор данных на отдельные подгруппы, называемые кластерами, таким образом, чтобы точки данных внутри одной группы были максимально похожими, а точки в разных группах — максимально различались. Являясь краеугольным камнем интеллектуального анализа данных и разведочного анализа, K-Means позволяет специалистам по данным автоматически организовывать сложную информацию в удобные для использования категории без необходимости предварительной разметки или участия человека.
Link to this sectionКак работает алгоритм#
Работа K-Means носит итеративный характер и опирается на метрики расстояния для определения оптимальной группировки обучающих данных. Алгоритм работает путем организации элементов в K кластеров, где каждый элемент принадлежит кластеру с ближайшим средним значением или центроидом. Этот процесс минимизирует дисперсию внутри каждой группы. Рабочий процесс обычно состоит из следующих шагов:
-
Инициализация: Алгоритм выбирает K начальных точек в качестве центроидов. Их можно выбрать случайным образом или с помощью оптимизированных методов, таких как k-means++, чтобы ускорить сходимость.
-
Назначение: Каждая точка данных в наборе присваивается ближайшему центроиду на основе конкретной метрики расстояния, чаще всего евклидова расстояния.
-
Обновление: Центроиды пересчитываются путем взятия среднего значения всех точек данных, отнесенных к этому кластеру.
-
Итерация: Шаги 2 и 3 повторяются до тех пор, пока центроиды не перестанут значительно перемещаться или не будет достигнуто максимальное количество итераций.
Определение правильного количества кластеров (K) — критически важный аспект использования этого алгоритма. Практики часто используют такие методы, как метод локтя, или анализируют коэффициент силуэта, чтобы оценить, насколько хорошо разделены полученные кластеры.
Link to this sectionРеальные применения в ИИ#
Кластеризация K-Means очень универсальна и находит применение в различных отраслях для упрощения и предварительной обработки данных.
- Сжатие изображений и квантование цвета: В компьютерном зрении (CV) K-Means помогает уменьшить размер файлов изображений путем кластеризации цветов пикселей. Группируя тысячи цветов в меньший набор доминирующих цветов, алгоритм эффективно выполняет уменьшение размерности, сохраняя при этом визуальную структуру изображения. Этот метод часто используется перед обучением продвинутых моделей обнаружения объектов для нормализации входных данных.
- Сегментация клиентов: Компании используют кластеризацию для группировки клиентов на основе истории покупок, демографических данных или поведения на сайте. Это позволяет создавать целевые маркетинговые стратегии, что является ключевым компонентом решений ИИ в ритейле. Выявляя ценных покупателей или риски оттока, компании могут эффективно адаптировать свои сообщения.
- Обнаружение аномалий: Изучая структуру «нормальных» кластеров данных, системы могут идентифицировать выбросы, которые находятся далеко от любого центроида. Это ценно для обнаружения мошенничества в финансах и обнаружения аномалий в сетевой безопасности, помогая помечать подозрительные действия, отклоняющиеся от стандартных паттернов.
- Генерация анкорных боксов: Исторически детекторы объектов, такие как старые версии YOLO, использовали K-Means для вычисления оптимальных анкорных боксов из обучающих наборов данных. Хотя современные модели, такие как YOLO26, используют продвинутые безъякорные методы, понимание K-Means остается актуальным для эволюции архитектур обнаружения.
Link to this sectionПример реализации#
Хотя фреймворки глубокого обучения, такие как Ultralytics Platform, справляются со сложными конвейерами обучения, 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 0Link to this sectionСравнение с похожими алгоритмами#
Важно отличать K-Means от других алгоритмов с похожими названиями или функциями, чтобы правильно выбрать инструмент для проекта.
- K-Means vs. K-Nearest Neighbors (KNN): Их часто путают из-за «K» в названиях. K-Means — это алгоритм обучения без учителя, используемый для кластеризации неразмеченных данных. В отличие от него, K-Nearest Neighbors (KNN) — это алгоритм обучения с учителем, используемый для классификации изображений и регрессии, который опирается на размеченные данные для получения прогнозов на основе класса большинства соседей.
- K-Means vs. DBSCAN: Хотя оба метода кластеризуют данные, K-Means предполагает, что кластеры имеют сферическую форму и требуют предварительного определения количества кластеров. DBSCAN группирует данные на основе плотности, может находить кластеры произвольной формы и лучше справляется с шумом. Это делает DBSCAN более подходящим для сложных пространственных данных, встречающихся в наборах данных с нерегулярной структурой, где количество кластеров неизвестно.






