- •Составители: с. П. Соколова, е. А. Кузьмина
- •Содержание
- •Лабораторная работа № 1. Работа в системе matlab
- •1. Методические указания
- •1. Структура и возможности пакета
- •2. Структура данных системы нечеткого вывода
- •3. Разработка нечеткой системы типа Мамдани
- •3.1. Процесс нечеткого вывода
- •3.2. Алгоритм Мамдани (Mamdani)
- •4. Порядок выполнения работы
- •Лабораторная работа № 3. Нечеткая модель оценивания финансовой состоятельности клиентов
- •1.1. Содержательная постановка задачи оценивания финансовой состоятельности клиентов
- •1.2. Нечеткая модель оценивания финансовой состоятельности клиентов
- •1.3. Фаззификация входных и выходных переменных
- •1.4. Формирование базы правил систем нечеткого вывода
- •1.5. Построение нечеткой модели средствами Fuzzy Logic Toolbox и анализ полученных результатов
- •Лабораторная работа № 4. Нечеткая система для анализа и прогнозирования валютных цен на финансовом рынке
- •2. Порядок выполнения работы
- •3. Оформление отчета
- •4. Рекомендованная литература
- •Лабораторная работа № 5. Работа с точечными, многомерными данными в системе matlab
- •1. Деловая графика в системе matlab
- •2. Основные действия над точечными матрицами в системе matlab
- •3. Основные действия над интервальными матрицами
- •4. Многомерные матрицы (массивы)
- •5. Сингулярное разложение многомерной матрицы
- •6. Порядок выполнения работы
- •7. Оформление отчета
- •8. Контрольные вопросы
- •9. Рекомендованная литература
- •Лабораторная работа № 6. Построение интеллектуального модуля симулятора для анализа динамики фондового рынка
- •1. Технический анализ в оценке динамики фондового рынка
- •2. Симулятор для оценивания динамики фондового рынка
- •2.1. Формирование обучающих классов
- •2.2. Формирование таблицы индикаторов на основе «японские свечи»
- •2.3. Формирование многомерной таблицы с различными периодами наблюдений
- •. Формирование многомерной интервальной матрицы индикаторов
- •3. Порядок выполнения работы:
- •4. Контрольные вопросы
- •5. Рекомендованная литература
Лабораторная работа № 4. Нечеткая система для анализа и прогнозирования валютных цен на финансовом рынке
Цель работы: построение нечеткой системы анализа и прогнозирования валютных цен на финансовом рынке.
1. Методические указания
Постановка задачи формулируется следующим образом [6]: необходимо, зная динамику изменения курсовой стоимости продажи некоторой валюты за фиксированный интервал времени, предсказать динамику ее курсовой стоимости на определенный момент времени в будущем. Следует отметить, что характерной особенностью динамики изменения курса (тренда) является наличие двух основных тенденций в колебаниях соответствующих цен. С одной стороны, наблюдается общее долгосрочное повышение курсовой стоимости, связанное с величиной инфляции. С другой стороны, наблюдается краткосрочное колебание цен, связанное с целым рядом случайных факторов, адекватное представление которых в той или иной формальной модели вряд ли возможно.
Традиционно для решения данной задачи применяются различные модели технического анализа, основанные на использовании различных индикаторов. В то же самое время наличие неявных тенденций в динамике изменения курсовой стоимости позволяет применить модель адаптивных нейро-нечетких сетей.
В качестве исходных данных воспользуемся, например, информацией о динамике по валюте Евро (EUR) за некоторый временной интервал. Возьмем значения курсовой стоимости EUR за 1 единицу в период с 11.08.2007 по 12.10.07, данная информация представлена в таблице 2.
Таблица 2
Динамика стоимости EUR с 11.08.2007 по 12.10.2007
Дата |
Курс Евро |
|
Дата |
Курс Евро |
11.08.2007 |
34.8808 |
|
13.09.2007 |
35.2223 |
14.08.2007 |
34.8325 |
|
14.09.2007 |
35.2309 |
15.08.2007 |
34.7413 |
|
15.09.2007 |
35.1674 |
16.08.2007 |
34.5813 |
|
18.09.2007 |
35.1358 |
17.08.2007 |
34.5480 |
|
19.09.2007 |
35.1010 |
18.08.2007 |
34.5502 |
|
20.09.2007 |
35.2135 |
21.08.2007 |
34.7372 |
|
21.09.2007 |
35.2188 |
22.08.2007 |
34.8259 |
|
22.09.2007 |
35.3186 |
23.08.2007 |
34.8511 |
|
25.09.2007 |
35.3088 |
24.08.2007 |
34.8377 |
|
26.09.2007 |
35.2193 |
25.08.2007 |
34.9344 |
|
27.09.2007 |
35.2954 |
28.08.2007 |
35.0773 |
|
28.09.2007 |
35.3261 |
29.08.2007 |
35.0006 |
|
29.09.2007 |
35.3457 |
30.08.2007 |
35.0042 |
|
02.10.2007 |
35.4443 |
31.08.2007 |
35.0114 |
|
03.10.2007 |
35.3712 |
01.09.2007 |
35.0233 |
|
04.10.2007 |
35.3428 |
04.09.2007 |
34.9221 |
|
05.10.2007 |
35.2531 |
05.09.2007 |
34.8571 |
|
06.10.2007 |
35.2837 |
06.09.2007 |
34.8951 |
|
09.10.2007 |
35.2693 |
07.09.2007 |
35.0210 |
|
10.10.2007 |
35.1788 |
08.09.2007 |
35.0848 |
|
11.10.2007 |
35.2652 |
11.09.2007 |
35.2366 |
|
12.10.2007 |
35.3414 |
12.09.2007 |
35.1857 |
|
|
|
Предположим, что нечеткая модель гибридной сети будет содержать 4 входных переменных. При этом первая входная переменная будет соответствовать курсу EUR на текущий банковский день, вторая ‑ курсу EUR на предыдущий банковский день, т. е. на день (i-1), где через i обозначен текущий банковский день. Тогда третья входная переменная будет соответствовать курсу EUR на (i-2) банковский день, а четвертая ‑ курсу EUR на (i-З) банковский день. Соответствующие обучающие данные сведены в таблицу 3.
Таблица 3
Обучающие данные для построения модели гибридной сети
Первая входная переменная |
Вторая входная переменная |
Третья входная переменная |
Четвертая входная переменная |
Выходная переменная |
34.5813 |
34.7413 |
34.8325 |
34.8808 |
34.5480 |
34.5480 |
34.5813 |
34.7413 |
34.8325 |
34.5502 |
34.5502 |
34.5480 |
34.5813 |
34.7413 |
34.7372 |
34.7372 |
34.5502 |
34.5480 |
34.5813 |
34.8259 |
34.8259 |
34.7372 |
34.5502 |
34.5480 |
34.8511 |
34.8511 |
34.8259 |
34.7372 |
34.5502 |
34.8377 |
34.8377 |
34.8511 |
34.8259 |
34.7372 |
34.9344 |
34.9344 |
34.8377 |
34.8511 |
34.8259 |
35.0773 |
35.0773 |
34.9344 |
34.8377 |
34.8511 |
35.0006 |
35.0006 |
35.0773 |
34.9344 |
34.8377 |
35.0042 |
35.0042 |
35.0006 |
35.0773 |
34.9344 |
35.0114 |
35.0114 |
35.0042 |
35.0006 |
35.0773 |
35.0233 |
35.0233 |
35.0114 |
35.0042 |
35.0006 |
34.9221 |
34.9221 |
35.0233 |
35.0114 |
35.0042 |
34.8571 |
34.8571 |
34.9221 |
35.0233 |
35.0114 |
34.8951 |
34.8951 |
34.8571 |
34.9221 |
35.0233 |
35.0210 |
35.0210 |
34.8951 |
34.8571 |
34.9221 |
35.0848 |
35.0848 |
35.0210 |
34.8951 |
34.8571 |
35.2366 |
35.2366 |
35.0848 |
35.0210 |
34.8951 |
35.1857 |
35.1857 |
35.2366 |
35.0848 |
35.0210 |
35.2223 |
35.2223 |
35.1857 |
35.2366 |
35.0848 |
35.2309 |
35.2309 |
35.2223 |
35.1857 |
35.2366 |
35.1674 |
35.1674 |
35.2309 |
35.2223 |
35.1857 |
35.1358 |
35.1358 |
35.1674 |
35.2309 |
35.2223 |
35.1010 |
35.1010 |
35.1358 |
35.1674 |
35.2309 |
35.2135 |
35.2135 |
35.1010 |
35.1358 |
35.1674 |
35.2188 |
35.2188 |
35.2135 |
35.1010 |
35.1358 |
35.3186 |
35.3186 |
35.2188 |
35.2135 |
35.1010 |
35.3088 |
35.3088 |
35.3186 |
35.2188 |
35.2135 |
35.2193 |
35.2193 |
35.3088 |
35.3186 |
35.2188 |
35.2954 |
35.2954 |
35.2193 |
35.3088 |
35.3186 |
35.3261 |
35.3261 |
35.2954 |
35.2193 |
35.3088 |
35.3457 |
35.3457 |
35.3261 |
35.2954 |
35.2193 |
35.4443 |
35.4443 |
35.3457 |
35.3261 |
35.2954 |
35.3712 |
35.3712 |
35.4443 |
35.3457 |
35.3261 |
35.3428 |
35.3428 |
35.3712 |
35.4443 |
35.3457 |
35.2531 |
35.2531 |
35.3428 |
35.3712 |
35.4443 |
35.2837 |
35.2837 |
35.2531 |
35.3428 |
35.3712 |
35.2693 |
35.2693 |
35.2837 |
35.2531 |
35.3428 |
35.1788 |
35.1788 |
35.2693 |
35.2837 |
35.2531 |
35.2652 |
Для большего удобства подготовки соответствующего файла с обучающими данными целесообразно воспользоваться редактором электронных таблиц MSExcel, обладающим возможностью копирования содержимого ряда ячеек.
Сохраним обучающую выборку во внешнем файле под именем euro.dat. После этого откроем редактор ANFIS, в который загрузим этот файл с обучающими данными. Внешний вид редактора ANFIS с загруженными обучающими данными изображен на рис. 26.
Перед генерацией структуры системы нечеткого вывода типа Сугено после вызова диалогового окна свойств зададим для каждой из входных переменных по 3 лингвистических терма, а в качестве типа их функций принадлежности выберем треугольные функции (установленные системой MATLAB по умолчанию). В качестве типа функции принадлежности выходной переменной зададим линейную функцию рис. 27.
Рисунок 26. Графический интерфейс редактора ANFIS после загрузки обучающих данных
Рисунок 27. Диалоговое окно для задания количества и типа функций принадлежности.
Для обучения гибридной сети воспользуемся гибридным методом обучения с уровнем ошибки 0, а количество циклов обучения зададим равным 15. После окончания обучения данной гибридной сети может быть выполнен анализ графика ошибки обучения (рис. 28), который показывает, что обучение практически закончилось на 15 цикле.
Рисунок 28. График зависимости ошибки обучения от количества циклов обучения
После обучения гибридной сети можно визуально оценить структуру построенной нечеткой модели (рис. 29). Очевидно, графическая наглядность данной модели оставляет желать лучшего, поскольку общее количество правил в разработанной адаптивной системе нейро-нечеткого вывода равно 81, что затрудняет их визуальный контроль и оценку.
С помощью графических средств системы MATLAB можно выполнить контроль и настройку параметров функций принадлежности входных переменных и правил нечетких продукций. Для выполнения соответствующих операций можно воспользоваться редактором функций принадлежности (рис. 30). Однако до проверки адекватности построенной нечеткой модели оставим все параметры функций принадлежности без изменений.
Рисунок 29. Структура сгенерированной системы нечеткого вывода.
Выполним проверку адекватности построенной нечеткой модели гибридной сети. Для этой цели сделаем ретроспективный прогноз значения курсовой стоимости EUR на следующий банковский день, например, на 12 октября 2007, считая для этого текущим банковским днем 11 октября 2007. Поскольку точность количественных значений, обеспечиваемая графическими средствами пакета Fuzzy Logic Toolbox, является недостаточной для решения данной задачи, воспользуемся функцией командной строки evalfis. В качестве аргументов этой функции укажем вектор значений курсовой стоимости EUR на текущий и 3 предшествующих банковских дня. Полный формат вызова этой функции будет следующим:
>> out = evalfis([35.2652 35.1788 35.2693 35.2837],fis)
где out ‑ условное имя выходной переменной; 35.2693 ‑ значение курсовой стоимости за , 35.2837 ‑ значение курсовой, 35.2531 ‑ значение курсовой, 35.2652 ‑ значение курсовой; fis ‑ имя структуры FIS, предварительно загруженной в рабочую область системы MATLAB.
Рисунок 30. Графический интерфейс редактора функций принадлежности для построенной системы нечеткого вывода для проверки первой входной переменной.
out =
35.2947
После выполнения этой команды с помощью разработанной нечеткой модели получено значение выходной переменной для 12.10.07, равное 35.2947. Сравнивая полученное значение с соответствующим значением из таблицы 2, можно констатировать, что был получен достаточно хороший прогноз.
Таким образом, проверка построенной нечеткой модели гибридной сети показывает достаточно высокую степень ее адекватности реальным исходным данным.
