Метод нечёткой кластеризации C-средних (англ. fuzzy clustering, soft k-means, c-means) позволяет разбить имеющееся множество элементов мощностью
на заданное число нечётких множеств
. Метод нечеткой кластеризации C-средних можно рассматривать как усовершенствованный метод k-средних, при котором для каждого элемента из рассматриваемого множества рассчитывается степень его принадлежности (англ. responsibility) каждому из кластеров.
Алгоритм был разработан J.C. Dunn в 1973[1] и улучшен J.C. Bezdek в 1981[2].
Алгоритм:
- Задать случайным образом
центров кластеров
;
- Рассчитать матрицу принадлежности элементов к кластерам
. В случае нормального распределения:
, где
—
-й элемент множества,
— центр кластера
,
— расстояние между точками
и
,
— плотность вероятности нормального распределения в точке
.
- Переместить центры кластеров
;
- Рассчитать функцию потерь (например, исходя из принципа максимального правдоподобия). В случае нормального распределения функция потерь будет равна:
;
- Если значение функции потерь уменьшается, то повторить цикл с п.2.
Метод нечеткой кластеризации C-средних имеет ограниченное применение из-за существенного недостатка — невозможность корректного разбиения на кластеры, в случае когда кластеры имеют различную дисперсию по различным размерностям (осям) элементов (например, кластер имеет форму эллипса). Данный недостаток устранен в алгоритмах Mixture models и GMM (Gaussian mixture models).