Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Экспертные системы (техника и технология проектирования). Методические указания к лабораторным работам

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
1 Мб
Скачать

бавить еще один столбец, содержащий будущие известные значения BD100, на которых можно обучать нейросеть.

Остальные величины в данный момент не имеют значения. На практике это могут быть цены на сырьевые товары (нефть, золото) на мировом рынке, значения фондовых индексов, отражающих движение цен на биржах (Dow-Jones, Nikkei и др.), индикаторы технического анализа и т.д.

Для загрузки исходных данных примера запустите программу NetMaker, нажмите кнопку Create BrainMaker File и в списке файлов открывшегося окна выберите файл PRICE1.DAT

3) На третьем шаге производится анализ и предварительная обработка данных. Эта часть работы выполняется в программе NetMaker.

NetMaker. Предварительный анализ и подготовка данных

Построим график изменения BD100 (рисунок 1). Значение BD100 сильно колеблется, но при этом общее движение цены (тренд) направлено вверх.

Рисунок 1 – График изменения BD100

Чтобы прогноз был более точным, имеет смысл использовать не абсолютные значения BD100, а только их изменения по сравнению с предыдущим днем. То же относится и к величинам price1, price2. Итак, добавим три новых столбца BD100D, price1D, price2D с приращениями абсолютных значений. Поскольку данные в столбцах с изменениями цен получаются в результате вычитания значений предыдущего дня из значений текущего, первая строка будет содержать некорректные значения. Поэтому в дальнейшем мы ее удалим. Значения в столбцах index1D, index2D, utilD, transpD уже записаны в виде приращений.

Для анализа взаимосвязей между входными данными и значениями BD100, которые мы собираемся прогнозировать, можно использовать Data Correlator. Рассмотрим взаимосвязь между BD100 и index1D, построив, с помощью Data Correlator, следующий график (рисунок

2).

41

Рисунок 2 – График степень корреляции BD100 и index1D

На горизонтальной оси показано время, причем единица времени соответствует одной строке из входной таблицы (в нашем случае это один день). Ноль делит горизонтальную ось на две части будущее и прошедшее время относительно BD100. В левой части показано прошедшее, а в правой будущее время.

На вертикальной оси представлена степень корреляции или взаимосвязи BD100 и index1D. Положительная корреляция означает, что если значения в первом столбце увеличиваются, то растут значения и во втором столбце. И наоборот, если значения в первом столбце уменьшаются, то уменьшаются значения и во втором столбце. Отрицательная корреляция означает, что если значения в первом столбце увеличиваются, то значения во втором столбце уменьшаются. И наоборот, если значения в первом столбце уменьшаются, то увеличиваются значения во втором столбце. Степень корреляции может изменяться от -1 до 1. Абсолютное значение, равное 1, означает, что изменения данных величин в точности соответствуют друг другу. Насколько существенна корреляция с абсолютным значением меньше 1 (0.1, 0.3, 0.6), однозначно сказать нельзя, и лучше считать, что эта оценка является субъективным мнением аналитика и зависит от ряда других обстоятельств.

Теперь проанализируем полученный график. Обратите внимание на пик, расположенный немного левее нулевого значения на горизонтальной оси. Временное смещение (лаг) равно - 1, а степень корреляции около 0.25. Нулевой лаг означает, что изменения значений в первом и втором столбцах происходят одновременно. На данном графике отрицательный лаг означает, что сначала происходит изменение значений index1D, а затем, через промежуток времени, равный лагу, изменяются значения BD100.

Положительный лаг означает, что сначала происходит изменение BD100, а затем, через промежуток времени, равный лагу, изменяются значения index1D. Таким образом, нас больше всего интересует сильная корреляция с отрицательным лагом, при которой изменения входного параметра могут повлечь за собой изменение прогнозируемой величины через ка- кое-то время. Следовательно, если изменения index1D предшествуют изменению BD100, можно использовать значения index1D для предсказания значений BD100 на один день вперед. Поэтому добавим в таблицу столбец, в котором содержатся вчерашние значения index1D и назовем его ind-1.

Попробуем выявить присущие данному рынку циклы, что позволит установить оптимальную дальность прогноза равной одному циклу. Для этого воспользуемся инструментом Cyclic Analysis, с помощью которого получаем график, изображенный на рисунке 3.

42

Рисунок 3 – График анализа циклов

На горизонтальной оси показана частота появления цикла, на вертикальной его сила. Левый пик с частотой, равной 1, – это цикл, соответствующий общему движению рынка. Нам же надо найти самый короткий, ярко выраженный цикл. Этому циклу соответствует другой пик с частотой 51. Чтобы разглядеть его получше, можно изменить масштаб графика. Определим длину этого цикла. Общее количество дней = 185, частота = 51. Следовательно, длина цикла: 185/51 ≈ 4 дня.

Для уменьшения случайного шума сгладим BD100D с помощью скользящего среднего (Moving Average). Для сглаживания рекомендуется использовать интервал, равный половине цикла. В нашем случае это два дня. Новую колонку назовем Bdavg2 и запишем в нее значения скользящего среднего.

Теперь рассмотрим, как нейросеть «видит» входные данные. К сожалению, нельзя просто задать столбец с данными за понедельник, вторник и т.д. Нейросеть «видит» только один факт, представленный текущей строкой. Она «не помнит» что было до этого. Поэтому, если вы хотите подать на вход данные за последние 100 торговых дней, то в каждой строке должно быть 100 полей. И неважно, что в предыдущей строке входного файла они уже есть. Придется указать их еще раз. При этом следует иметь в виду, что с увеличением количества входов растет сама нейросеть, а ее способность к обучению соответственно снижается. В то же время, если нейросеть будет «видеть» тренд, она сделает лучший прогноз. Выбор оптимальных данных и их количества не имеет однозначного решения, и на практике производится в процессе настройки нейросети.

Так как в примере цикл составляет 4 дня, то для информирования нейросети о тренде будем использовать текущие значения входного параметра и значения четырехдневной давности. Текущие значения уже есть, следовательно, надо создать столбцы с данными за четыре дня назад для всех входных столбцов, кроме ind-1. Путем смещения значений в столбцах

BD100D, price1D, price2D, index1D, index2D, line, streng, utilD, transpD на 4 строки вниз по-

лучаем новые столбцы со значениями четырехдневной давности. Метки новых столбцов: BD-4, pric1-4, pric2-4, ind1-4, ind2-4, line-4, stren-4, util-4, tran-4 соответственно.

При обучении нейросети в каждой строке входного набора данных (факте) следует указать заранее известное значение (pattern), которое должна предсказывать нейросеть. В процессе обучения нейросеть сравнивает свой ответ с этим эталоном и, в случае ошибки, меняет свою структуру. Этот процесс продолжается до тех пор, пока не будет достигнут требуемый уровень точности. Для этих целей сформируем столбец BD+4 с будущими значениями BD100D, т.е. с теми, которые BD100D примет через 4 дня. Это делается путем смещения значений столбца BD100D вверх на 4 строки.

Теперь можно привести в порядок наши данные:

удалим столбцы BD100, price1 и price2 они больше не понадобятся;

переместим BD+4 в правый крайний столбец.

43

При формировании столбцов с данными за 4 дня назад был произведен сдвиг на четыре строки вниз. Ранее мы сдвигались на одну строку вниз при создании столбцов BD100D, price1D, price2D. Следовательно, надо удалить первые 5 строк, которые не содержат корректных данных. Кроме того, для формирования BD+4 мы перемещались вверх на 4 строки. Поэтому нужно удалить еще 4 нижние строки. В результате всех этих операций осталось 176 фактов из 185. Иначе говоря, на этапе подготовки данных было потеряно около 5% входных данных. Эти потери следует учитывать при планировании количества данных в процессе развертывания нейросети.

Теперь следует указать назначение каждой колонки полученной таблицы:

­комментарии (Annote) – колонка day;

­вход (Input) – колонки index1D, index2D, line, streng, utilD, transpD, BD100D, price1D, price2D, Bdavg2, ind-1, BD-4, pric1-4, pric2-4, ind1-4, ind2-4, line-4, tran-4;

­образец для обучения (Pattern) – колонки stren-4, util-4, BD+4.

Итак, предварительная обработка данных закончена, и можно создать файлы для программы BrainMaker. Формируются три файла: описание нейросети, данные для обучения и данные для тестирования нейросети.

4) Далее в пакете BrainMaker выполним обучение, тестирование и использование нейросети.

BrainMaker. Обучение и тестирование нейросети, получение результатов

Для обучения надо запустить BrainMaker и загрузить файл с описанием нейросети. При этом ссылки на файлы с данными для обучения и тестирования будут сделаны автоматически. При обучении сети используется 158 фактов из 176, т. е. 10% или 18 фактов зарезервированы для тестирования при формировании файлов в NetMaker.

Предсказывать какие-либо изменения на финансовых рынках достаточно сложно, поэтому зададим требуемую точность предсказания равной 80%. После запуска обучения на экране возникнет картинка, приведенная на рисунке 4.

Рисунок 4 – Окно результатов запуска обучения

Черные горизонтальные столбики (термометры) показывают входные и выходные значения. Их использование облегчает наблюдение за быстро меняющимися значениями. Обратите внимание, что BD+4 соответствуют два термометра: Out показывает значение, сгенерированное нейросетью, а Ptn – то значение, которое должно быть предсказано.

Первая строка с данными под главным меню называется status line. В ней показано, что в текущий момент делает BrainMaker, и какие задействованы файлы. Learning rate используется для более точной настройки процесса обучения нейросети.

Tolerance – это максимально допустимая величина ошибки во время обучения. Если tolerance=0, то выходной результат (output), выдаваемый нейросетью, должен абсолютно точно совпадать с образцом для обучения (pattern). В большинстве случаев это нереально, особенно для финансовых приложений, которые считаются наиболее сложными. При tolerance=0.1 выход нейросети (output) будет рассматриваться как корректный, если он отличается не более чем на 10% от заданного значения (pattern). Если же output будет вне этого интервала, то BrainMaker внесет изменения в структуру нейросети таким образом, чтобы при

44

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

Строка statistics line содержит информацию о ходе обучения или тестирования нейросети:

­Fact – порядковый номер факта из обучающей или тестирующей последовательности (№ строки в таблице с исходными данными), который обрабатывается в это время;

­Total – общее количество фактов, обработанных на данный момент;

­Bad – количество фактов, для которых был получен некорректный результат в текущем проходе входной последовательности;

­Last – количество фактов, для которых был получен некорректный результат в предыдущем проходе входной последовательности;

­Good – количество фактов, для которых был получен корректный результат в текущем проходе входной последовательности;

­Last – количество фактов, для которых был получен корректный результат в предыдущем проходе входной последовательности;

­Run – общее количество проходов входной последовательности, включая текущий.

В процессе обучения можно наблюдать его динамику (рисунок 5).

Рисунок 5 – Динамика процесса обучения

Верхний график в виде гистограммы отображает распределение ошибок за один проход обучающей последовательности фактов. На горизонтальной оси показана величина ошибки, а на вертикальной – количество ошибок. По мере обучения вертикальные столбики смещаются влево, отражая процесс уменьшения величины ошибок при обработке фактов. Обучение заканчивается, когда не остается ни одного факта, обработанного с ошибкой, величина которой больше установленного нами допустимого уровня 0.2. Наблюдение за графиком поможет определить достижимый уровень ограничения ошибок при разработке нейросети. В нашем случае, например, можно довести этот уровень до 0.125.

Нижний график отображает динамику изменения общей ошибки нейросети в процессе обучения. На горизонтальной оси показан номер прохода обучающей последовательности. На вертикальной оси – величина ошибки. Общая ошибка нейросети вычисляется как RMS Error (Root Mean Squared) по следующей формуле:

,

где O – output; P – pattern;

N – количество фактов.

По окончании процесса обучения необходимо проверить качество работы нейросети на данных, которые она еще «не видела». При тестировании нейросети будет происходить обработка фактов и сравнение полученных результатов (output) с образцами (pattern). Ошибки при этом вычисляются, но корректировка структуры нейросети не производится. В строке statistics line отображается результат тестирования Good:15 Bad:3. Если нейросеть настроить,

45

то этот результат можно улучшить. Предположим, что такой результат нас устраивает, и посмотрим, как конкретно используется нейросеть для получения прогноза величины, которая нам заранее не известна.

Загрузим в NetMaker файл с новыми данными, для которых результат уже заранее не известен. С этим файлом нужно проделать те же манипуляции, что и при подготовке данных для обучения, за исключением создания столбца с известными будущими значениями BD+4. Естественно, анализ циклов и корреляции данных тоже делать не нужно.

Если теперь в BrainMaker подать на вход обученной нейросети новые данные, то в поле Out (рисунок 4) будет показан прогноз значения BD100D на четыре дня вперед. Изменив способ отображения с thermometers на number можно получить числовое значение прогноза. Затем прогноз обычно записывают в специальный выходной файл или устанавливают динамическую связь (DDE) BrainMaker с другими приложениями. Для этого, например, делают следующую цепочку. Из системы получения финансовых данных в реальном времени передают эти данные в EXCEL, где в автоматическом режиме производятся манипуляции по подготовке, которые мы делали в NetMaker (формирование новых столбцов, смещения, расчет новых параметров и т. д.). Затем снова через динамический обмен подготовленные данные поступают в BrainMaker, и опять же через динамический обмен прогноз возвращается в

EXCEL.

Выводы:

­процесс разработки нейросетевых приложений состоит из определенной последовательности операций, которая не зависит от выбранного пакета программ;

­большое значение имеет исходная формулировка проблемы;

­самая трудоемкая для аналитика часть работы включает сбор и предварительную обработку данных. По некоторым оценкам это может отнимать до 90% времени;

­многие операции по подготовке данных удобнее выполнять не в NetMaker, а в других пакетах, например, в EXCEL. Более того, для ежедневного использования нейросети, не говоря уже о реальном времени, потребуются специальные программы, которые выбирают из поступающего потока информации данные, преобразуют их в нужную форму и передают на вход нейросети. Иначе говоря, здесь налицо тесная взаимосвязь с хранилищами данных;

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

46

Список литературы

1)Адилов Р.М. Системы искусственного интеллекта. Модуль 1. Общие сведения об ИИ. - Пенза: Пенз. гос. технол. академия, 2008. – 95 с.

2)Адилов Р.М. Системы искусственного интеллекта. Модуль 2. Экспертные системы: учеб. пособие. – Пенза: Изд-во Пенз. гос. технол. акад., 2008. – 34 с.

3)Адилов Р.М. Системы искусственного интеллекта. Модуль 3. Системы машинного зрения: учеб. пособие. – Пенза: Изд-во Пенз. гос. технол. акад., 2008. – 32 с.

4)Барышев А.В. Интеллектуальные информационные системы. – М.: МИЭТ, 2008. – 128 с.

5)Васильев В.И., Ильясов Б.Г. Интеллектуальные системы управления. Теория и практика. М.: Радиотехника, 2009. – 392 с.

6)Жданов А.А. Автономный искусственный интеллект. – М.: БИНОМ. Лаборатория знаний,

2009. – 359 с.

7)Костров Б.В. Искусственный интеллект и робототехника Б.В. Костров, В.Н. Ручкин, В.А. Фулин. – М.: Диалог-МИФИ 2008. – 224 с.

8)Матвеев М.Г. Модели и методы искусственного интеллекта. Применение в экономике учеб. пособие для вузов / М.Г. Матвеев, А.С. Свиридов, Н.А. Алейникова. – М.: Финансы и статистика, ИНФРА-М, 2008. – 448 с.

9)Нейронные сети. STATISTICA Neural Networks. Методология и технологии современного анализа данных / под ред. В. П. Боровикова. – 2-е изд., перераб. и доп. - М. Горячая ли- ния-Телеком, 2008. – 392 с.

10)Паклин Н.Б., Орешков В.И. Бизнес-аналитика: от данных к знаниям. – СПб.: Питер, 2009.

– 624 с.

11)Ручкин В.Н. Универсальный искусственный интеллект и экспертные системы. – СПб.: БХВ-Петербург, 2009. – 238 с.

12)Хайкин С. Нейронные сети. – М.: Вильямс, 2008. – 1104 с.

47

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