Открыть сервис

Метод k-средних

Метод k-средних (англ. k-means clustering) — это один из наиболее распространённых алгоритмов кластеризации, используемый в статистике, машинном обучении и анализе данных. Алгоритм решает задачу разбиения множества объектов (наблюдений) на заданное число групп (кластеров) k таким образом, чтобы объекты внутри одного кластера были максимально похожи друг на друга (обладали минимальным внутрикластерным разбросом), а объекты из разных кластеров — максимально различны. Метод относится к группе неиерархических, итеративных алгоритмов и основан на принципе минимизации суммы квадратов расстояний от точек до центров кластеров (центроидов).

История

Метод k-средних был независимо предложен несколькими исследователями в разных областях. Впервые математическая формулировка задачи кластеризации методом наименьших квадратов была опубликована Гуго Штейнгаузом в 1956 году. Однако наиболее известная версия алгоритма, получившая широкое распространение, была разработана Джеймсом Маккуином в 1967 году. В 1957 году Стюарт Ллойд предложил аналогичный алгоритм для обработки сигналов (импульсно-кодовой модуляции), который позже, в 1982 году, был опубликован и стал известен как «алгоритм Ллойда». В 1965 году Е. В. Форги опубликовал независимое описание того же метода. Таким образом, метод k-средних имеет несколько «отцов-основателей», и его современная реализация обычно объединяет идеи этих авторов.

Основные понятия и формальная постановка

Кластеры и центроиды

Пусть дано множество из n объектов, каждый из которых описывается d числовыми признаками (координатами в d-мерном пространстве). Задача кластеризации заключается в разбиении этого множества на k непересекающихся подмножеств (кластеров) C₁, C₂, ..., Cₖ. Каждый кластер характеризуется своим центром — центроидом (англ. centroid), который обычно определяется как среднее арифметическое всех точек, входящих в данный кластер. Для кластера Cⱼ центроид μⱼ вычисляется по формуле:

μⱼ = (1/|Cⱼ|) * Σ(x ∈ Cⱼ) x,

где |Cⱼ| — количество точек в кластере.

Функция стоимости (целевая функция)

Алгоритм k-средних стремится минимизировать целевую функцию, называемую инерцией или суммой квадратов внутрикластерных расстояний (WCSS — Within-Cluster Sum of Squares):

J = Σⱼ Σ(x ∈ Cⱼ) ||x — μⱼ||²,

где ||·|| обозначает евклидово расстояние. Чем меньше значение J, тем более компактными и однородными являются кластеры. Минимизация этой функции является NP-трудной задачей в общем случае, поэтому алгоритм находит лишь локальный оптимум.

Алгоритм работы

Стандартная реализация алгоритма k-средних (алгоритм Ллойда) состоит из следующих шагов:

  1. Инициализация. Выбираются k начальных центроидов. Способ инициализации существенно влияет на конечный результат. Наиболее распространённые методы:
  1. Присвоение (Assignment). Каждый объект (точка) относится к ближайшему центроиду на основе выбранной метрики расстояния (обычно евклидовой). Формально: для каждой точки x определяется кластер j, для которого расстояние ||x — μⱼ|| минимально.
  1. Обновление (Update). Вычисляются новые центроиды как средние арифметические точек, отнесённых к каждому кластеру на предыдущем шаге.
  1. Проверка сходимости. Шаги 2 и 3 повторяются до тех пор, пока центроиды не перестанут изменяться (или их изменение не станет меньше заданного порога), либо до достижения максимального числа итераций. Алгоритм гарантированно сходится к локальному минимуму за конечное число итераций.

Выбор числа кластеров (k)

Одной из ключевых проблем метода является необходимость заранее задавать количество кластеров k. Для его выбора используются различные эвристические методы:

Разновидности и модификации

Применение

Метод k-средних широко используется в различных областях:

Достоинства и недостатки

Достоинства

Недостатки

Критика и ограничения

Несмотря на популярность, метод k-средних подвергается критике за свою жёсткость: он не подходит для данных со сложной нелинейной структурой, кластеров неправильной формы или разной плотности. В таких случаях более эффективными могут быть иерархическая кластеризация, DBSCAN (плотностный метод) или спектральная кластеризация. Кроме того, алгоритм чувствителен к масштабу признаков — перед применением рекомендуется проводить нормализацию или стандартизацию данных.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →