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






