Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
fuzzy.doc
Скачиваний:
96
Добавлен:
18.12.2018
Размер:
2.93 Mб
Скачать

Порядок выполнения работы

  1. Изучить теоретическую часть.

  2. Ответить на контрольные вопросы.

  3. Получить у преподавателя задание на лабораторную работу.

  4. Сформировать отчет о проделанной работе.

Содержание отчета

  1. Постановка задачи.

  2. Структура системы нечеткого вывода согласно заданию на лабораторную работу.

  3. Набор функций принадлежности для каждой входной и выходной переменной.

  4. Множество правил нечеткого вывода.

  5. Результаты нечеткого вывода при различных значениях входных параметров.

  6. Выводы.

Контрольные вопросы

  1. Какова структура типовой системы нечеткого вывода?

  2. В чем отличие метода нечеткого вывода по Суджено от метода нечеткого вывода по Мамдани?

  3. Каким образом формируются антеценденты и консеквенты нечетких правил в 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.... Каждая строка матрицы в файле представляет собой набор координат отдельного кластера. Количество строк соответствует количеству кластеров.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]