Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ Компьютерный практикум.doc
Скачиваний:
489
Добавлен:
20.03.2016
Размер:
3.35 Mб
Скачать
    1. Построение нейронечеткой модели с помощью anfis-редактора

Цель работы: Научиться использовать ANFIS-редактор системы MATLAB для построения нейронечеткой модели.

Задание: Используя ANFIS-редактор построить нейронечеткую систему типа Сугено из экспериментальных данных.

Пример выполнения:

Задача: Построить нечеткую модель зависимости валового дохода от основных средств и основных фондов с использованием нечеткой нейронной сети, сконструированной в ANFIS-редакторе.

Пусть обучающая выборка составляет 100 примеров, а тестовая – 20. В среде MATLAB вводим данные обучающей выборки r_set и тестовой выборки r_test: матрицы состоящие из 3-х столбцов, первые два которых содержат данные входных переменных, третий – выходной переменной. Командой anfisedit загружаем ANFIS-редактор, в которой сгенерируем и обучим нечеткую систему типа Сугено (рис. 6.26):

Для загрузки обучающей выборки в окне ANFIS-редактора в блоке загрузки данных (Load data) в меню типа (Type) выбираем тип обучения (Training), а в качестве источника загрузки (From) выбираем рабочую область MATLAB (worksp.) и нажимаем кнопку загрузки данных (Load data). Появится окно (рис. 6.27) в котором указываем имя массива обучающей выборки r_set и нажимаем кнопку OK.

Для загрузки тестовой выборки в меню типа устанавливаем тип тестирования (Testing), нажимаем кнопку загрузки данных (Load data), в появившемся окне вводим имя массива тестовой выборки r_test и нажимаем кнопку OK. В блоке генерации нечеткой системы (Generate FIS) имеются следующие альтернативы: загрузка системы с диска (Load from disk), загрузка системы из рабочей области MATLAB (Load from worksp.), генерирование системы по алгоритму решетчатого разбиения без кластеризации (Grid partition) и генерирование системы через субтрактивную кластеризацию по горному методу (Sub. clustering). Выберем метод решетчатого разбиения Grid partition, согласно которому функции принадлежности нечетких термов равномерно распределяются внутри диапазона изменения данных. База знаний содержит все возможные варианты правил. Коэффициенты в заключениях правил принимаются равными нулю. Нажимаем на кнопку генерации нечеткой системы (Generate FIS). В появившемся окне (рис. 6.28) необходимо указать количество и тип функций принадлежности входных и выходных переменных и нажать на кнопку OK.

Рис. 6.26. ANFIS-редактор

Рис. 6.27. Окно ввода имени массива обучающей выборки

Архитектуру синтезированной нейронечеткой сети (рис. 6.29) можно посмотреть нажав на кнопку структуры сети (Structure) блока информации системы ANFIS (ANFIS Info.)

В блоке обучения (Train FIS) необходимо выбрать метод обучения (Optim. Method), точность обучения (Error tolerance), количество итераций обучения (Epochs) и нажать на кнопку обучения (Train Now). В АNFIS-редакторе реализованы два метода обучения: метод обратного распространения ошибки (backpropa) и гибридный алгоритм, объединяющий метод обратного распространения ошибки и метода наименьших квадратов (hybrid). Выберем гибридный метод обучения, укажем точность обучения равную 0, количество итераций равное 300 и нажмем на кнопку обучения. Динамика обучения выводится в основном окне редактора ANFIS (рис. 6.30): ось абсцисс соответствует итерациям алгоритма обучения, ось ординат – значениям средней квадратичной ошибки.

Рис. 6.28. Выбор количества и типа функций принадлежности

Рис. 6.29. Архитектура синтезированной нейро-нечеткой сети

После настройки ошибка обучения составила 5.8778. Для проверки модели на тестовой выборке в блоке тестирования нечеткой системы (Test FIS) выберем тестовые данные (Testing data) и нажмем на кнопку тестирования (Test Now). Результаты тестирования выводится в основном окне редактора ANFIS (рис. 6.31). Экспериментальные данные показаны точками, а результаты моделирования звездочками. Ошибка на тестовой выборке составила 3.3583. Используя меню Файл->Экспорт->В файл (File->Export->To File) можно сохранить на диске синтезированную нейронечеткую сеть. С помощью меню Редактирование->Свойства нечеткой системы (Edit->Properties FIS) можно в FIS-редакторе посмотреть и при необходимости отредактировать синтезированную систему (рис. 6.32).

Рис. 6.30. Обучение синтезированной нейронечеткой сети

Рис. 6.31. Тестирование синтезированной нейронечеткой сети

Рис. 6.32. FIS-редактор

Сравним результаты нечеткой модели с результатами линейной регрессии вида . Для этого в режиме командной строки средыMATLAB вычисляем ошибки линейной регрессии на обучающей и тестовой выборках с использованием несложных вычислений, например следующим образом:

n=length(r_set);

n_t=length(r_test);

X=[ones(n,1) r_set(:,1) r_set(:,2)];

A=X\r_set(:,3);

%Несоответствие на обучающей выборке

Out_m=X*A;

r_tr=norm(r_set(:,3)-Out_m)/sqrt(n);%ошибка

%Несоответствие на тестовой выборке

X_test=[ones(n_t,1) r_test(:,1) r_test(:,2)];

Out_m=X_test*A;

r_check=norm(r_test(:,3)-Out_m)/sqrt(n_t); %ошибка

В результате ошибки линейной регрессии на обучающей и тестовой выборках составили 6.2841 и 3.9043 соответственно.

Мы можем получить нелинейную модель вида и вычислить ошибки регрессии используя следующий код:

n=length(r_set);

n_t=length(r_test);

X=[ones(n,1) r_set(:,1) r_set(:,2) r_set2(:,1) r_set2(:,2)];

A=X\r_set(:,3);

%Несоответствие на обучающей выборке

Out_m=X*A;

r_tr=norm(r_set(:,3)-Out_m)/sqrt(n);%ошибка

%Несоответствие на тестовой выборке

X_test=[ones(n_t,1) r_test(:,1) r_test(:,2) r_test2(:,1) r_test2(:,2)];

A=X_test\r_test(:,3);

Out_m=X_test*A;

r_check=norm(r_test(:,3)-Out_m)/sqrt(n_t); %ошибка,

где r_set2 и r_test2 – это матрицы, все элементы которых равны квадратам элементов матриц r_set и r_test соответственно. Для приведенного примера ошибки обучающей и тестовой выборок составили 5.9873 и 3.4317 соответственно.

Заметим, что приведенной код вычисления ошибок регрессии не является универсальным и может быть заменен другим, например, с использованием имеющихся функций среды MATLAB.

Таким образом, нечеткая модель точнее линейной и нелинейной моделей регрессии описывает рассматриваемую зависимость.

Вывод (пример):

В ходе выполнения лабораторной работы я научился работать с ANFIS-редактором для построения нечетких нейронных сетей.

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

  1. Что представляют собой нечеткие нейронные сети?

  2. Какая нечеткая система лежит в основе систем ANFIS?

  3. Как можно просмотреть базу знаний синтезированной системы ANFIS?

  4. Какие методы генерации ANFIS-систем предусмотрены в ANFIS-редакторе?

  5. Какие опции необходимо ввести при выборе метода субтрактивной кластеризации для генерации нечеткой системы?