MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

Проектирование систем управления\Fuzzy Logic Toolbox

С.Д.Штовба "Введение в теорию нечетких множеств и нечеткую логику"

В оглавление книги \ К следующему разделу \ К предыдущему разделу

9. Синтез нечетких моделей с помощью субтрактивной кластеризации и ANFIS-алгоритма

В этом разделе рассматривается двухэтапная процедура построения нечетких моделей типа Сугэно. На первом этапе синтезируются нечеткие правила из экспериментальных данных с использование субтрактивной кластеризации. На втором этапе настраиваются параметры нечеткой модели с помощью ANFIS-алгоритма. Субтрактивная кластеризация может использоваться как быстрый автономный метод синтеза нечетких правил из данных. Кроме того, этот метод может рассматриваться как своего рода препроцессинг для ANFIS-алгоритма - синтезированная нечеткая модель является начальной точкой для обучения. Важным преимуществом применения кластеризации для синтеза нечеткой модели является то, что правила базы знаний получаются объектно-ориентированными. Это понижает возможность "комбинаторного взрыва" - катастрофического увеличения объема базы знаний при большом числе входных переменных. Изложение материала проводится на примере построения нечеткой модели зависимости количества автомобильных поездок из пригорода от его демографических показателей.

Исходные данные для моделирования были собраны из 100 транспортных зон округа Ньюкасл (Делавэр). Необходимо узнать как зависит количество автомобильных поездок, заказанных из района, от пяти его демографических показателей: количество жителей; количество домов; количество автомобилей, средний уровень доходов на один дом; уровень занятости населения. Синтезируемая нечеткая модель будет иметь один выход и пять входов.

Для загрузки данных необходимо напечатать команду tripdata . Сценарий tripdata создает в рабочей области несколько переменных. 75 из 100 пар данных "входы-выход" используются как обучающая выборка (переменные datin and datout). Для проверки генерализирующих свойств модели используется тестирующая выборка (переменные chkdatin и chkdatout), содержащая оставшиеся 25 пар данных. На рис. 9.1 приведена обучающая выборка. Эти графики построены командами:

subplot(2,1,1), plot(datin);

subplot(2,1,2), plot(datout);

Рисунок 9.1 - Обучающая выборка: демографические показатели района (вверху) и количество автомобильных поездок (внизу)

Функция genfis2 синтезирует нечеткую модель типа Сугэно с использование субтрактивной кластеризации. При вызове этой функции необходимо указать радиусы кластеров. Радиусы определяют насколько далеко от центра кластера могут быть его элементы. Значения радиусов должны находится в диапазоне [0, 1] в связи с тем, что при кластеризации исходные данные масштабируется на единичный гиперкуб. Обычно малые значения радиусов приводят к нахождению множества мелких кластеров, и, следовательно, к очень детализированной базе нечетких правил. Большие значения радиусов приводят к нахождению всего нескольких крупных кластеров и тем самым обеспечивают компактную базу знаний. Однако при этом можно упустить некоторые особенности моделируемой зависимости. Как правило, хорошие нечеткие базы знаний синтезируют при значениях радиусов из диапазона [0.2, 0.5]. Радиусы кластеров задаются третьим аргументом функции genfis2. Будем считать, что в кластерном анализе все координаты являются равноважными, поэтому значение этого аргумента можно задать скаляром. Следующая команда вызывает функцию genfis2 при значении радиусов кластера равных 0.5: fis=genfis2(datin,datout,0.5) .

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

fuzout=evalfis(datin,fis);

trnRMSE=norm(fuzout-datout)/sqrt(length(fuzout))

В результате получим значение корня квадратного из средней квадратической невязки равное: trnRMSE = 0.5276. Теперь проверим как работает модель вне точек обучения ‑ на тестирующей выборке. Для этого выполним аналогичные команды для тестирующей выборки:

chkfuzout=evalfis(chkdatin,fis);

chkRMSE=norm(chkfuzout-chkdatout)/sqrt(length(chkfuzout))

Значение ошибки на тестирующей выборке равно: chkRMSE = 0.6170. Неудивительно, что ошибка на тестирующей выборке больше, чем на обучающей. Сравним экспериментальные данные из тестирующей выборки с результатами нечеткого моделирования применяя команды:

plot(chkdatout)

hold on

plot(chkfuzout,'o')

hold off

legend('экспериментальные данные', 'нечеткое моделирование')

Результаты выполнения этих команд показаны на рис. 9-2. Видно, что нечеткая модель описывает тенденцию в данных. Однако, в отдельных случаях расхождения между экспериментальными данными и результатами моделирования значительные.

Рисунок 9.2 - Тестирование нечеткой модели, синтезированной с помощью субтрактивной кластеризации

Попытаемся улучшить модель с помощью ANFIS-обучения. Зададим относительно небольшое количество итераций обучения - 50. При обучении будем использовать только обучающую выборку с последующей проверкой настроенной нечеткой модели на тестирующей выборке. Обучение нечеткой модели осуществим командой fis2=anfis([datin datout],fis,[50 0 0.1]); .

Рассчитаем ошибки моделирования на обучающей и тестирующей выборках после обучения:

fuzout2=evalfis(datin,fis2);

trnRMSE2=norm(fuzout2-datout)/sqrt(length(fuzout2))

chkfuzout2=evalfis(chkdatin,fis2);

chkRMSE2=norm(chkfuzout2-chkdatout)/sqrt(length(chkfuzout2))

Значения ошибок равны: trnRMSE2 = 0.3407 и chkRMSE2 = 0.5836. Качество моделирования значительно возросло на обучающей выборке. В то же время адекватность модели на тестирующей выборке улучшилась несущественно. На это указывает и графики на рис. 9.3, построенные командами:

plot(chkdatout)

hold on

plot(chkfuzout2,'o')

legend('экспериментальные данные', 'нечеткое моделирование')

hold off

Рисунок 9.3 - Тестирование нечеткой модели после ANFIS-обучения

Исследуем как зависит адекватность нечеткой модели от длительности обучения. Для этого вызовем функцию anfis в следующем формате:

[fis3,trnErr,stepSize,fis4,chkErr]=anfis([datin datout],fis,[200 0 0.1],[], [chkdatin chkdatout]);

Третий входной аргумент этой функции задает 200 итераций обучения. При обучении используется и тестирующая выборка, заданная четвертым входным аргументом функции anfis. Длинный список выходных аргументов возвращает протокол обучения модели: размер шага (stepSize), ошибки моделирования на обучающей (trnErr) и тестирующей (chkErr) выборках на каждой итерации алгоритма. После 200 итераций алгоритма минимальные ошибки на обучающей и тестирующих выборках равны 0.326566 и 0.582545, соответственно. На первый взгляд может показаться, что длительное обучение привело к хорошим результатам - предыдущие модели имели большие значения ошибок. Однако, указанные минимальные значения ошибок соответствует не одной и той же модели, а двум: fis3 - нечеткая модель с минимальной ошибкой на обучающей выборке и fis4 - нечеткая модель с минимальной ошибкой на тестирующей выборке. Посмотрим, на каких итерациях алгоритма обучения получены нечеткие модели с минимальными ошибками. Для этого выведем кривые обучения с помощью команд:

plot(1:200, trnErr, 'r--', 1:200, chkErr, 'b-');

legend ('ошибка на обучающей выборке', 'ошибка на тестирующей выборке');

Из кривых обучения (рис. 9.4) видно, что ошибка на тестирующей выборке имеет тенденцию к уменьшению на протяжении около 50 итераций. Наименьшее значение этой ошибки достигается на 52-й итерации алгоритма обучения. После этого значение ошибки на тестирующей выборке начинает немного возрастать, хотя функция anfis продолжает минимизировать ошибку на обучающей выборке на протяжении всех 200 итераций. Начиная с 52-й итерации проявляется эффект переобучения, состоящий в потере генерализирующих свойств модели. Переобученная модель очень хорошо отражает реальность, репрезентированной обучающей выборкой. Вне точек обучения адекватность такой модели низкая - результаты моделирования сильно отличаются от экспериментальных данных. Для недопущения переобучения обычно используют тактику "раннего останова" ‑ прекращение обучения при возрастании ошибки на тестирующей выборке.

Рисунок 9.4 - Графики зависимости ошибок нечеткого моделирования от количества итераций обучения

В оглавление книги \ К следующему разделу \ К предыдущему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика