В настоящее время методы кластерного анализа широко используются в различных сферах человеческой деятельности с целью обработки больших массивов многомерных данных. Это вызвано необходимостью проведения разбиения исходного множества объектов на кластеры путём выявления схожих объектов и объединения их в подмножества.
Для решения данной практической задачи применяются как методы четкой кластеризации, предполагающие отнесение объекта строго к одному из кластеров, так и методы нечеткой кластеризации, позволяющие произвести разбиение так, чтобы можно было определить, в какой мере объект принадлежит каждому из кластеров.
Целью данной работы является рассмотрение двух наиболее известных методов кластерного анализа – k-means алгоритма четкой кластеризации и Fuzzy C-means алгоритма нечеткой кластеризации. В рамках экспериментальной части необходимо провести сравнительный анализ качественных и количественных характеристик обоих алгоритмов, протестировав их на реальных априорных данных.
Постановка задачи.
Пусть нам дано множество X, состоящее из N объектов (X = {x1, x2,…,xN}), где каждый из которых характеризуется точкой в N-мерном Евклидовом пространстве. Необходимо разбить исходное множество на C кластеров.
Описание Fuzzy C-means алгоритма.
Кластеры задаются матрицей нечеткого разбиения, имеющей следующий вид[1,2]:
(1),
где μki – степень принадлежности k-ого объекта i-му кластеру; k – номер объекта; i – номер кластера; N – количество объектов; С – число кластеров.
При этом должно строго выполняться следующее условие:
(2)
На начальном этапе алгоритма мы задаём следующие параметры для работы алгоритма:
С – число кластеров;
m – экспоненциальный вес (или мера нечеткости), определяющий степень размытости кластеров, который, как правило, принимают равным двум (m = 2), так как не существует теоретически обоснованного правила выбора его значения[2];
ε – параметр останова алгоритма.
На втором этапе генерируется начальная матрица нечеткого разбиения (1), путем полного отнесения всех объектов первому кластеру.
На третьем этапе осуществляется расчет центров кластеров по следующей формуле[1]:
(3),
где ci – центр i-го кластера; μki – степень принадлежности k-ого объекта i-му кластеру; m – экспоненциальный вес; xk – вектор параметров k-ого объекта.
На четвертом этапе рассчитывается матрица расстояний, имеющая ту же размерность, что и матрица нечеткого разбиения. Каждый элемент данной матрицы равен Евклидову расстоянию от рассматриваемого объекта до центра конкретного кластера и рассчитывается по следующей формуле[1]:
(4),
где ρki – расстояние от k-ого объекта до центра i-го кластера; xk – вектор параметров k-ого объекта; ci – центр i-го кластера.
На пятом этапе осуществляется пересчет матрицы нечеткого разбиения по следующей формуле[1]:
(5),
где μ*ki – пересчитанная степень принадлежности k-ого объекта i-му кластеру.
На шестом шаге мы проверяем условие оптимальности полученного разбиения, согласно которому разности всех соответствующих пар элементов старой и новой матриц нечёткого разбиения по модулю должны быть меньше задаваемого на начальном этапе параметра останова:
(6)
Если условие (6) выполняется, алгоритм завершает свою работу. Иначе осуществляется переход на третий этап[2].
На рисунке 1 представлена блок-схема Fuzzy C-means алгоритма.
Рисунок 1 – Блок-схема Fuzzy C-means алгоритма
Описание k-means алгоритма.
На первом этапе работы алгоритма задаются произвольным образом C кластеров. Чаще всего на практике в качестве начальных положений центров кластеров выбирают любые C элементов исходного множества, подлежащего разбиению.
На втором этапе для каждого объекта рассчитываются Евклидовы расстояния до каждого центроида по формуле (4). Впоследствии объект относится к ближайшему кластеру.
На третьем этапе осуществляется пересчет координат центров кластеров по следующей формуле:
(7),
где ci – центр i-го кластера; Mi – число объектов в i-ом кластере; xki – вектор параметров k-ого объекта, отнесенного к i-ому кластеру.
Второй и третий этапы рекурсивно повторяются до тех пор, пока положения центроидов не перестанут меняться [3].
На рисунке 2 представлена блок-схема k-means алгоритма.
Рисунок 2 – Блок-схема k-means алгоритма
Экспериментальная часть.
Для проведения экспериментальной части Нижегородским научно-исследовательским институтом эпидемиологии и микробиологии им. И.Н. Блохиной (ННИИЭМ) была предоставлена тестовая выборка, состоящая из 170 пациентов в возрасте от 33 до 35 лет. Каждый пациент охарактеризован априорными сведениями в виде набора из 29 проб на предмет анализа состояния микробиоты желудочно-кишечного тракта. Каждый элемент данного набора представляет собой нормированное значение в интервале от 0 до 12 баллов.
Таким образом, в качестве исходных данных имеем множество из 170 объектов, каждому из которых поставлена в соответствие точка в 29-мерном пространстве. Задача сводится к разбиению предложенной выборки на четыре кластера: три степени заболевания и категория здоровых людей. Полученный результат разбиения необходимо сравнить с экспертными оценками, предоставленными ННИИЭМ для каждого пациента с целью оценки качества работы каждого из двух алгоритмов.
Для проведения тестирования алгоритмов на предложенной выборке было разработано приложение на языке C#, визуализирующее полученный результат разбиения на четыре кластера.
Визуализация полученного результата осуществляется в соответствии с таблицей 1.
Таблица 1 – Визуализация результата кластерного анализа
| Номер кластера | Назначаемый цвет | Степень заболевания | 
| 1 | Зеленый | Пациент здоров | 
| 2 | Синий | Первая степень заболевания | 
| 3 | Желтый | Вторая степень заболевания | 
| 4 | Красный | Третья степень заболевания | 
Оценка качества разбиения исходного множества осуществляется по следующей формуле:
(8),
где E – число объектов, отнесённых не в тот кластер, N – размер выборки.
Также в рамках экспериментальной части проводится исследование зависимости числа итераций и времени работы алгоритма от размера выборки.
Для оценки качественных и количественных характеристик проводится для различных выборок, кратных десяти, по десять опытов.
Полученные результаты.
На рисунке 3 представлен визуализированный результат полученного с помощью Fuzzy C-means алгоритма разбиения для предоставленной тестовой выборки в 170 человек. Вдоль оси абсцисс откладываются номера пациентов (k), а вдоль оси ординат – значения степени принадлежности k-ого пациента кластеру здоровых людей (μk1).
Рисунок 3 – Результат работы Fuzzy C-means алгоритма
На рисунке 4 представлен визуализированный результат полученного с помощью k-means алгоритма разбиения для предоставленной тестовой выборки в 170 человек. Для данного алгоритма результат разбиения представлен в трёхмерном пространстве, где вдоль осей откладываются значения наиболее ярких параметров вектора объекта.
В таблицу 2 сведены результаты исследования качественных и количественных показателей работы Fuzzy C-means алгоритма.
На рисунке 5 представлен график зависимости времени работы Fuzzy C-means алгоритма от размера исходного множества.
Кроме того, исследования показали, что количество итераций данного алгоритма не зависит от размера исходной выборки и в среднем колеблется между 10 и 12 итерациями.
Рисунок 4 – Результат работы k-means алгоритма
Таблица 2 – Оценка качественных и количественных показателей Fuzzy C-means алгоритма
| Размер выборки | Время выполнения, мс | Среднее время, мс | Среднее число E | Средний уровень Q | |||||||||
| t1 | t2 | t3 | t4 | t5 | t6 | t7 | t8 | t9 | t10 | ||||
| 10 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 100% | 
| 20 | 2 | 1 | 1 | 2 | 1 | 1 | 2 | 1 | 1 | 2 | 1.4 | 0 | 100% | 
| 30 | 2 | 2 | 1 | 2 | 2 | 1 | 2 | 2 | 2 | 2 | 1.8 | 1 | 96.7% | 
| 40 | 2 | 3 | 2 | 4 | 3 | 2 | 3 | 3 | 2 | 3 | 2.4 | 2 | 95% | 
| 50 | 3 | 3 | 2 | 3 | 3 | 5 | 3 | 4 | 3 | 3 | 3.2 | 2 | 96% | 
| 60 | 4 | 3 | 5 | 3 | 3 | 4 | 3 | 4 | 5 | 4 | 3.8 | 3 | 95% | 
| 70 | 4 | 6 | 7 | 4 | 4 | 4 | 3 | 4 | 5 | 6 | 4.7 | 4 | 94.3% | 
| 80 | 4 | 8 | 5 | 5 | 4 | 5 | 6 | 4 | 5 | 6 | 5.2 | 4 | 95% | 
| 90 | 5 | 4 | 5 | 4 | 6 | 8 | 5 | 5 | 5 | 6 | 5.3 | 4 | 95.6% | 
| 100 | 8 | 6 | 7 | 5 | 6 | 5 | 7 | 5 | 6 | 7 | 6.2 | 6 | 94% | 
| 110 | 7 | 7 | 5 | 7 | 6 | 5 | 7 | 6 | 7 | 6 | 6.3 | 6 | 94.5% | 
| 120 | 6 | 7 | 5 | 6 | 10 | 6 | 7 | 9 | 6 | 8 | 7 | 7 | 94.2% | 
| 130 | 8 | 6 | 7 | 7 | 6 | 7 | 9 | 7 | 8 | 9 | 7.4 | 8 | 93.8% | 
| 140 | 7 | 8 | 7 | 9 | 6 | 8 | 8 | 9 | 7 | 8 | 7.7 | 8 | 94.3% | 
| 150 | 9 | 9 | 7 | 8 | 8 | 7 | 10 | 8 | 8 | 10 | 8.4 | 8 | 94.7% | 
| 160 | 10 | 10 | 9 | 8 | 9 | 8 | 9 | 8 | 9 | 10 | 9 | 10 | 93.75% | 
| 170 | 8 | 11 | 10 | 11 | 13 | 12 | 9 | 11 | 10 | 12 | 10.7 | 10 | 94.1% | 
Рисунок 5 – График зависимости времени работы Fuzzy C-means алгоритма от размера выборки
В таблицу 3 сведены результаты исследования качественных и количественных показателей работы k-means алгоритма.
Таблица 3 – Оценка качественных и количественных показателей k-means алгоритма
| Размер выборки | Время выполнения, мс | Среднее время, мс | Среднее число E | Средний уровень Q | |||||||||
| t1 | t2 | t3 | t4 | t5 | t6 | t7 | t8 | t9 | t10 | ||||
| 10 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 100% | 
| 20 | 1 | 2 | 2 | 2 | 1 | 2 | 1 | 2 | 1 | 1 | 1.5 | 1 | 95% | 
| 30 | 2 | 2 | 3 | 2 | 2 | 2 | 3 | 3 | 2 | 2 | 2.3 | 2 | 93,3% | 
| 40 | 3 | 4 | 2 | 4 | 3 | 5 | 3 | 2 | 3 | 4 | 3.3 | 4 | 90% | 
| 50 | 4 | 5 | 3 | 3 | 3 | 5 | 3 | 4 | 5 | 4 | 3.9 | 6 | 88% | 
| 60 | 5 | 4 | 5 | 4 | 4 | 6 | 3 | 4 | 5 | 5 | 4.5 | 7 | 88.3% | 
| 70 | 5 | 6 | 7 | 6 | 5 | 7 | 3 | 6 | 5 | 4 | 5.4 | 7 | 90% | 
| 80 | 5 | 8 | 6 | 7 | 8 | 6 | 5 | 5 | 5 | 7 | 6.2 | 8 | 90% | 
| 90 | 7 | 6 | 5 | 4 | 6 | 8 | 8 | 8 | 7 | 7 | 6.6 | 8 | 91.1% | 
| 100 | 8 | 9 | 9 | 7 | 6 | 7 | 7 | 7 | 8 | 9 | 7.7 | 8 | 92% | 
| 110 | 9 | 8 | 9 | 7 | 9 | 8 | 7 | 9 | 7 | 8 | 8.1 | 9 | 91.8% | 
| 120 | 8 | 7 | 9 | 9 | 10 | 8 | 7 | 9 | 10 | 8 | 8.5 | 9 | 92.5% | 
| 130 | 10 | 8 | 9 | 8 | 9 | 8 | 10 | 10 | 9 | 10 | 9.1 | 9 | 93.1% | 
| 140 | 11 | 10 | 9 | 8 | 9 | 9 | 10 | 11 | 8 | 11 | 9.6 | 10 | 92.8% | 
| 150 | 9 | 10 | 11 | 11 | 9 | 10 | 10 | 11 | 11 | 10 | 10.2 | 11 | 92.7% | 
| 160 | 10 | 10 | 12 | 11 | 12 | 10 | 12 | 12 | 10 | 11 | 11 | 11 | 93.1% | 
| 170 | 13 | 11 | 10 | 11 | 12 | 13 | 13 | 12 | 11 | 12 | 11.8 | 13 | 92.3% | 
На рисунке 6 представлен график зависимости времени работы k-means алгоритма от размера исходного множества.
Рисунок 6 – График зависимости времени работы k-means алгоритма от размера выборки
Также исследования показали, что количество итераций данного алгоритма от размера исходной выборки не зависит, а зависит исключительно от задания начальных положений центроидов.
Выводы.
В ходе исследований было установлено, что у обоих алгоритмов с ростом размера выборки увеличивается число ошибок (объектов, отнесённых не в тот кластер). При этом Fuzzy C-means оказался эффективней, чем k-means, так как средний уровень качества для первого алгоритма составил 95.35%, а для второго – 92.12%.
Кроме того, в ходе экспериментальной части было выявлено, что число итераций для обоих алгоритмов не зависит от размера исходного множества. У Fuzzy C-means данный параметр лежит в пределах от 10 до 12, а у k-means он зависит лишь от начального выбора положений центроидов.
Также было установлено, что с ростом размера выборки время работы алгоритмов линейно возрастает. Но при этом быстродействие Fuzzy C-means выше, чем у k-means.
Библиографический список
1. Jan Jantzen «Neurofuzzy Modelling». [Электронный ресурс]. – Режим доступа: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.68.390&rep=rep1&type=pdf
2. Штовба С.Д. Введение в теорию нечетких множеств и нечеткую логику. Винница: Континент-Прим. – 2003. – 198 с.
3. Барсегян, А. А. Анализ данных и процессов: учеб. пособие / А. А. Барсегян, М. С. Куприянов, И. И. Холод, М. Д. Тесс, С. И. Елизаров. – 3-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2009. – 512 с.