Изучите кластеризацию K-средних, ключевой алгоритм обучения без учителя для группировки данных в кластеры. Изучите его процесс, приложения и сравнения!
Кластеризация K-Means - это широко используемый алгоритм в области неконтролируемого обучения, предназначенный для разделения набора данных на отдельные, непересекающиеся подгруппы. В более широком контексте машинного обучения (МОО) этот метод необходим для обнаружения скрытых паттернов и структур в немаркированных данных. Алгоритм работает путем организации точек данных в $K$ кластеров, где каждая точка принадлежит к кластеру с ближайшим средним значением, служащим прототипом группы. Такой подход позволяет минимизировать дисперсию внутри каждого кластера, гарантируя, что точки данных в одной и той же группы как можно больше похожи друг на друга, сохраняя при этом различия между группами.
Процесс K-Means является итерационным и начинается с выбора $K$ начальных центроидов, которые выступают в качестве центральных точки для кластеров. Эти центроиды могут быть выбраны случайным образом или с помощью более интеллектуальных методов инициализации, таких как инициализация k-means++ для повышения скорости сходимости. Затем алгоритм проходит два основных этапа, пока результаты не стабилизируются:
Этот цикл повторяется до тех пор, пока центроиды не перестанут значительно смещаться, что свидетельствует о сходимости алгоритма. Определение оптимального количества кластеров - важная часть процесса, которая часто достигается с помощью таких методов, как метод локтя или путем анализа показатель силуэта для измерения расстояния разделения между полученными кластерами.
Кластеризация K-Means является универсальной и находит применение в различных отраслях промышленности для для добычи и анализа данных.
В то время как современные детекторы объектов, такие как Ultralytics YOLO11 часто используют передовые методы регрессии или безъякорные головы, K-Means сыграли ключевую роль в эволюции моделей обнаружения. В предыдущих итерациях, таких как YOLOv2 и YOLOv5, использовалась кластеризация K-Means на границах на размерах ограничительной рамки набора данныхCOCO для определения оптимальных якорных ящиков. Эти предварительно рассчитанные якоря обеспечивали модель с лучшими предпосылками для предсказания формы объектов, что значительно улучшило стабильность обучения и запоминание.
Обычно K-Means путают с K-Nearest Neighbors (KNN), но они служат но они служат принципиально разным целям.
Другой родственной концепцией является DBSCAN, в которой кластеризация основана на плотности, а не на расстоянии от центральной точки. В отличие от K-Means, DBSCAN не требует заранее задавать количество кластеров и лучше справляется с выбросами.
Следующий пример на Python демонстрирует, как использовать K-Means для кластеризации цветов пикселей, что является распространенным шаг предварительной обработки данных в задачах технического зрения.
import numpy as np
from sklearn.cluster import KMeans
# Simulate a small image (10x10 pixels) with 3 RGB channels
# In a real scenario, you would load an image using cv2.imread()
image_data = np.random.randint(0, 255, (10, 10, 3), dtype=np.uint8)
pixels = image_data.reshape(-1, 3)
# Apply K-Means to reduce the image to 3 dominant colors (clusters)
kmeans = KMeans(n_clusters=3, n_init="auto", random_state=42).fit(pixels)
# The cluster centers represent the dominant colors
print(f"Dominant RGB Colors:\n{kmeans.cluster_centers_}")