- •Лабораторная работа №1 исследование способов формирования нечетких множеств и операции над ними
- •Теоретическая часть
- •Практическая часть
- •1. Используемые типы функций принадлежности в matlab
- •2. Операции с нечеткими множествами в среде matlab
- •Пример 1.7
- •Построение нечетких систем типа Мамдани.
- •Редактор снв
- •Редактор фп
- •Редактор правил вывода
- •Наконец, общее описание правила вывода в индексном формате может быть представлено в следующем виде:
- •Пример 2.1
- •Средство просмотра правил вывода
- •Средство просмотра поверхности вывода
- •Построение нечетких систем типа Суджено.
- •Редактор снв
- •Редактор фп
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
Порядок выполнения работы
-
Изучить теоретическую часть.
-
Ответить на контрольные вопросы.
-
Получить у преподавателя задание на лабораторную работу.
-
Сформировать отчет о проделанной работе.
Содержание отчета
-
Постановка задачи.
-
Структура системы нечеткого вывода согласно заданию на лабораторную работу.
-
Набор функций принадлежности для каждой входной и выходной переменной.
-
Множество правил нечеткого вывода.
-
Результаты нечеткого вывода при различных значениях входных параметров.
-
Выводы.
Контрольные вопросы
-
Какова структура типовой системы нечеткого вывода?
-
В чем отличие метода нечеткого вывода по Суджено от метода нечеткого вывода по Мамдани?
-
Каким образом формируются антеценденты и консеквенты нечетких правил в MATLAB?
ЛАБОРАТОРНАЯ РАБОТА №3
ИССЛЕДОВАНИЕ АЛГОРИТМА НЕЧЕТКОЙ КЛАСТЕРИЗАЦИИ
Цель работы: Изучить FCM алгоритм кластеризации. Ознакомиться и получить практические навыки решения задач кластеризации методами нечеткой логики.
Теоретическая часть
Целью FCM (Fuzzy-C-Means) алгоритма кластеризации является автоматическая классификация множества объектов, которые задаются векторами признаков в соответствующем пространстве признаков. Другими словами, такой алгоритм определяет кластеры и, соответственно, классифицирует объекты. Кластеры представляются нечеткими множествами и, кроме того, границы между кластерами также являются нечеткими.
FCM алгоритм кластеризации предполагает, что объекты принадлежат всем кластерам с определенной ФП. Степень принадлежности зависит от расстояния до соответствующих кластерных центров. Данный алгоритм итеративно вычисляет центры кластеров и новые степени принадлежности объектов.
Для заданного множества входных векторов и выделяемых кластеров предполагается, что любой пинадлежит любому с принадлежностью . Принимаются во внимание следующие условия для :
(3.1)
Цель алгоритма заключается в минимизации суммы всех взвешенных расстояний :
,
где - фиксированный параметр, задаваемый перед итерациями.
Для достижения вышеуказанной цели необходимо решить следующие уравнения:
Совместно с уравнениями (3.1) данная система дифференциальных уравнений имеет следующее решение:
(3.2)
(взвешенный центр гравитации) и
. (3.3)
Алгоритм нечеткой кластеризации выполняется по следующим четырем шагам:
Шаг 1: Инициализация
Выбираются следующие параметры:
- необходимое количество кластеров , ;
- мера расстояний как Евклидово расстояние;
- фиксированный параметр (обычно ~ 1.5);
- начальная (на нулевой итерации) матрица принадлежности объектов с учетом заданных начальных центров кластеров в соответствие с (3.1).
Шаг 2: Регулирование позиций центров кластеров
На - м итерационном шаге при известной матрицы вычисляется в соответствии с (3.2)
Шаг 3:Корректировка значений принадлежности
Учитывая известные вычисляются по формуле (3.3) если . Иначе:
Шаг 3:Остановка алгоритма
Алгоритм нечеткой кластеризации останавливается при выполнении следующего условия:
,
где - матричная норма (например, Евклидова норма), - заранее задаваемая константа.
Практическая часть
Существует два способа решения задач кластеризации в MATLAB: с использованием командной строки или графического интерфейса пользователя (ГИП). Рассмотрим первый из указанных способов.
Для нахождения центров кластеров в MATLAB имеется встроенная функция fcm, описание которой представлено ниже.
Описание функции.
[center,U,obj_fcn] = fcm(data,cluster_n).
Аргументами данной функции являются:
-
data - множество данных подлежащих кластеризации, каждая строка описывает точку в многомерном пространстве характеристик;
-
cluster_n - количество кластеров (более одного).
Функцией возвращаются следующие параметры:
-
center - матрица центров кластеров, каждая строка которой содержит координаты центра отдельного кластера;
-
U - результирующая матрица ФП;
-
obj_fcn - значение целевой функции на каждой итерации (вычисляемая по формуле (3.2)).
Пример 3.1.
// загрузка данных, подлежащих кластеризации, из файла
load fcmdata.dat
// определение центров кластеризации (два кластера)
[center, U, obj_fcn] = fcm(fcmdata, 2);
// определение максимальной степени принадлежности отдельного элемента
// данных кластеру
maxU = max(U);
// распределение строк матрицы данных между соответствующими кластерами
index1 = find(U(1, :) == maxU);
index2 = find(U(2, :) == maxU);
// построение данных, соответствующих первому кластеру
plot(fcmdata(index1, 1), fcmdata(index1, 2), 'ko', 'markersize', 5,'LineWidth',1);
hold on
// построение данных, соответствующих второму кластеру
plot(fcmdata(index2,1),fcmdata(index2,2),'kx','markersize',5,'LineWidth',1);
// построение кластерных центров
plot(center(1,1),center(1,2),'ko','markersize',15,'LineWidth',2)
plot(center(2,1),center(2,2),'kx','markersize',15,'LineWidth',2)
На рис. 3.1 представлено множество данных, подлежащих кластеризации и найденные центры кластеров (см. пример 3.1).
Функция fcm выполняется итерационно до тех пор, пока изменения целевой функции превышают некоторый заданный порог. На каждом шаге в командное окно MATLAB выводится порядковый номер итерации и текущее значение целевой функции:
Iteration count = 1, obj. fcn = 8.945391
Iteration count = 2, obj. fcn = 7.307679
Iteration count = 3, obj. fcn = 6.898674
Iteration count = 4, obj. fcn = 5.407245
Iteration count = 5, obj. fcn = 4.076222
Iteration count = 6, obj. fcn = 3.830818
Iteration count = 7, obj. fcn = 3.802979
Iteration count = 8, obj. fcn = 3.798441
Iteration count = 9, obj. fcn = 3.797614
Iteration count = 10, obj. fcn = 3.797463
Iteration count = 11, obj. fcn = 3.797435
Iteration count = 12, obj. fcn = 3.797430
Для оценки динамики изменения значений целевой функции используется функция построения графика plot(obj_fcn). Результаты, соответстующие примеру 3.1 показаны на рис. 3.2.
Указанная функция кластеризации может быть вызвана с дополнительным набором параметров: fcm(data,cluster_n,options). Дополнительные аргументы используются для управления процессом кластеризации:
-
options(1) - показатель степени для матрицы U (по умолчанию: 2.0);
-
options(2) - максимальное количество итераций (по умолчанию: 100);
-
options(3) - предельное изменение значений целевой функции (по умолчанию: 1e-5);
-
options(4) - отображение информации на каждой шаге (по умолчанию: 1).
Пример определения функции fcm c дополнительными параметрами:
[center, U, obj_fcn] = fcm(fcmdata, 2,[2,100,1e-5,1])
Второй способ решения задач кластеризации в MATLAB основан на использовании ГИП. Соответствующий инструмент вызывается командой findcluster. Основное окно инструмента кластеризации показано на рис. 3.3.
Для загрузки исходных данных, подлежащих кластеризации, используется кнопка Load Data.... Формат исходных данных следующий: каждая строка представляет собой точку в многомерном пространстве характеристик, количество строк соответствует количеству точек (элементов данных). Графическую интерпретацию исходных данных можно наблюдать в графическом окне основного окна инструмента.
Выбор FCM алгоритма кластеризации осуществляется с использованием выпадающего меню Methods (пункт меню - fcm). Далее определяются параметры алгоритма кластеризации:
-
количество кластеров (строка ввода - Cluster Num.);
-
максимальное количество итераций (строка ввода - Max Iteration#);
-
минимальное значение улучшения целевой функции (строка ввода - Min. Improvement);
-
показатель степени при матрице ФП (строка ввода - Exponent).
Определив необходимые значения указанных параметров осуществляется запуск алгоритма кластеризации, нажав кнопку Start. Количество произведенных итераций и значение целевой функции можно просмотреть в нижней части основного окна инструмента кластеризации.
Координаты найденных центров кластеров можно сохранить нажав кнопку Save Center.... Каждая строка матрицы в файле представляет собой набор координат отдельного кластера. Количество строк соответствует количеству кластеров.