Алгоритмы кластеризации | Нечеткая кластеризация
FCM-алгоритм кластеризацииАлгоритм нечеткой кластеризации называют FCM-алгоритмом (FuzzyClassifier Means, Fuzzy C-Means). Целью FCM-алгоритма кластеризации является автоматическая классификация множества объектов, которые задаются векторами признаков в пространстве признаков. Другими словами, такой алгоритм определяет кластеры и соответственно классифицирует объекты. Кластеры представляются нечеткими множествами, и, кроме того, границы между кластерами также являются нечеткими. Для заданного множества К входных векторов хk и N выделяемых кластеров сjпредполагается, что любой хк принадлежит любому сj с принадлежностью µjkинтервалу [0,1], где j – номер кластера, а k – номер входного вектора. Принимаются во внимание следующие условия нормирования для µjk:
где q – фиксированный параметр, задаваемый перед итерациями. Для достижения вышеуказанной цели необходимо решить следующую систему уравнений: Совместно с условиями нормирования µjk данная система дифференциальных уравнений имеет следующее решение: (взвешенный центр гравитации) и
Алгоритм нечеткой кластеризации выполняется по шагамШаг 1. Инициализация. Выбираются следующие параметры: • необходимое количество кластеров N, 2 < N < К;
На t-м итерационном шаге при известной матрице
Шаг 3. Корректировка значений принадлежности µjk.
Шаг 4. Остановка алгоритма. Алгоритм нечеткой кластеризации останавливается при выполнении следующего условия:
Решение задач кластеризацииСуществуют два способа решения задач кластеризации в Matlab: с использованием командной строки или графического интерфейса пользователя. Рассмотрим первый из указанных способов. Для нахождения центров кластеров в Matlab имеется, встроенная функция fcm,описание которой представлено ниже. Аргументами данной функции являются: 1) data – множество данных, подлежащих кластеризации, каждая строка описывает точку в многомерном пространстве характеристик; Функцией возвращаются следующие параметры: 1) center – матрица центров кластеров, каждая строка которой содержит координаты центра отдельного кластера;
Пример П11. Программа нечеткой кластеризации. // загрузка данных, подлежащих кластеризации, из файла На рис. П15 представлено множество данных, подлежащих кластеризации и найденные центры кластеров для примера П.11.
Функция fcm выполняется итерационно до тех пор, пока изменения целевой функции превышают некоторый заданный порог. На каждом шаге в командном окнеМаtlab выводятся порядковый номер итерации и соответствующее текущее значение целевой функции.
Для оценки динамики изменения значений целевой функции используется команда построения графика plot(obj_fcm). Результаты примера П11 показаны на рис. П16.
Функцию кластеризации можно вызвать с дополнительным набором параметров: fcm (data, cluster_n, options). Дополнительные аргументы используются для управления процессом кластеризации: • options(1) – показатель степени для матрицы U (по умолчанию – 2.0); Пример определения функции fcm с дополнительными параметрами: [center, U, obj_fcn] = fсm(fcmdata, 2, [2,100,le-5,1]).
Второй способ решения задач кластеризации в Matlab основан на использовании ГИП, который вызывается командой findcluster. Главное окно инструмента кластеризации показано на рис. П17. Кнопка <Load Data> используется для загрузки подлежащих кластеризации исходных данных следующего формата: каждая строка представляет собой точку в многомерном пространстве характеристик, количество строк соответствует количеству точек (элементов данных). Графическую интерпретацию исходных данных можно наблюдать в одноименном окне главного окна инструмента. Выбор типа алгоритма кластеризации осуществляется с использованием ниспадающего меню Methods (пункт меню – fcm). Далее определяются параметры алгоритма кластеризации: • количество кластеров (строка ввода – Cluster Num); После определения необходимых значений указанных параметров осуществляется запуск алгоритма кластеризации с помощью кнопки <Start>. Количество произведенных итераций и значение целевой функции можно просмотреть в нижней части главного окна инструмента кластеризации.
Координаты найденных центров кластеров можно сохранить, щелкнув мышью по кнопке <Save Center...>. Каждая строка матрицы в файле представляет собой набор координат отдельного кластера. Количество строк соответствует количеству кластеров. |