Круглов В.В., Борисов В.В. - Искусственные нейронные сети (ИНС) Теория и практика (778918), страница 45
Текст из файла (страница 45)
Построение нейросетевой модели Первым этапом при разработке нейронной сети является определение того, что же она должна делать. В рассматриваемом примере целью создания нейронной сети будет являться прогнозирование изменения значения индекса цен на акции вымышленной фирмы Вал-Оач)э-100 (80100). Вторым этапом является определение состава исходных данных и сбор этих данных Предположим, что эти данные подготовлены в файле рпсе1.ба1 Файл представляет собой текстовую таблицу, в которой находятся упорядоченные по строкам и столбцам технические индикаторы, индексы и цены. Каждой строке соответствуют данные одного дня В столбцах; Оау, В0100, рпсе1, рпсе2, )поех10, ~поех20, ))пе, э1геп9, иа)0, 1гапзрО содержатся данные одного типа. Столбец оау содержит порядковый номер дня и не используется в качестве входных данных Записи сделаны за 185 дней Столбец В0100 содержит значения, которые одновременно являются как входными данными, так и результатом работы нейронной сети.
Поэтому в дальнейшем придется добавить еще один столбец, содержащий будущие известные значения В0100, на которых можно обучать нейронную сеть Поскольку целью является ознакомление с приемами работы в Вга)пМахег, а данные взяты условно, смысл остальных величин не имеет значения.
На третьем этапе проводится анализ и предварительная обработка данных. Это делается в программе )че1Махег. Четвертый, пятый и шестой этапы — обучение, тестирование и использование нейронной сети будут выполнены в самом Вга)пмайег и рассмотрены позднее. 6.8.2. Предварительный анализ и подготовка данных Загрузка данных. 1) Запустите )че1Махег 2) Выберите в главном меню опцию г1еад !и Оа1а Е!!е. 3) Загрузите файл рпсе1.ба1. 4) Перейдите в режим Мап!ри!а1е Оа1а. Построение графика. 1) В пункте Орега1е главного меню выберите Отар)з Со)- итпв Появится окно, в заголовке которого будет запрос Ве!ес1 Со)игппв То Отари 2) Щелкните мышью на столбец 80100.
Обратите внимание, что теперь значение поля 1гасе1 изменилось на 80100. 293 3) Выберите Майе Отар)з. 4) Исправьте текст «)паек» на «Рас!». 5) Выберите Тгасе гап9ее, а затем Сгеа1е Р)об В окне появится график, изображенный на рис. 6.13. Рис 6.13, График изменения ВО100 На горизонтальной оси показано время, на вертикальной— значения В0100. Таким же образом можно построить графики рпсе1 и рпсе2. Значение В0100 сильно колеблется, но при этом общее движение цены (тренд) направлено вверх. Создание столбца с изменениями цен.
Будем использовать не абсолютные значения В0100, а только их изменения по сравнению с предыдущим днем. То же самое относится к столбцам рпсе1, рпсе2. Таким образом, нужно добавить три новых столбца, в которых будут содержаться изменения абсолютных значений. 1) В пункте «Орега)е» главного меню выберите 0)ггегепсе Со)итпв, а в подменю- 8)глр!. 2) В ответ на запрос Яе)ест Со!итп выберите В0100. 3) Задайте смещение, равное 1. 4) Пометьте новый столбец В01000. Он будет размещен в крайней правой колонке таблицы. 5) Сделайте то же самое с рпсе1 и рпсе2 и обозначьте новые столбцы: рпсе10 и рпсе20 Столбцы )пдех10, !пдех20, ц)1!О, !гапзр0 уже представлены в виде приращений. Примечание. Поскольку данные в столбцах с изменениями цен получаются в результате вычитания значений предыдущего 294 дня из значений текущего дня, первый ряд будет содержать некоррентные значения.
Поэтому в дальнейшем мы его удалим. Анализ цикличности данных. Дпя более корректного предсказания будущие значения В0100, попробуем выявить присущие данному рынку цикпы и в дальнейшем будем строить прогноз на один цикп вперед. 1) В пункте ОрегаГе главного меню выберите Сус)1с Апа1ув1в, 2) Щелкните мышкой на столбец В0100. 3) Значения количества рядов в периоде, метки осей и режим Отар)з Оп1у должны быть уже заданы по умолчанию, поэтому нажмите Апа1уке. 4) Выберите Тгасе гапВев, а затем Сгеаге Р1ог на появляющихся запросах. В окне появится график вида рис 6 14. Рис б 14. График для определения взаимосвязи между переменными На горизонтальной оси показана частота цикпа, на вертикальной его «сипа».
Пик с частотой 1, т. е. цикл, появившийся один раз, соответствует общему движению рынка. Нам же нужно найти наиболее короткий ярко выраженный цикл. Этому циклу соответствует другой пик с частотой 51. Дпя того, чтобы его разглядеть получше, нужно изменить масштаб графика: 1) В меню окна с графиком нажмите Р1о1, выберите Мод)гу в подменю, а затем перейдите в режим Тгасе гапВев.
2) Измените Р1о1 М!п и Р)от Мак дпя Ргециепсу на, скажем, 4? и 63. 3) После нажатия СгеаГе Р1ог можно разглядеть этот пик. 295 с!б+А Аппо1е Но1 Цееб Мо! Цееб Но! Цееб !про! гпрм !про! !прог !про! !про! 1про! 1про! гарм Раг!егп 1прм бау в0$оа рпсе1 рпсе2 1пбех10 !пбех20 Кпе еггепд оою ггапер0 во! аоо рпсе!О рпсе20 Во+4 Вбауд2 сы» с!б+$ С!б+1 с!б» Сгб» сы+$ С!$1» С!б+1 с!б» С1гг+Р с!и» 29б Найдем длину зтого цикла, Общее количество дней — 185, частота — 51. Следовательно, длина цикла: 185!51 — приблизительно 4 дня. Создание набора выходных данных для обучения. Для обучения нейронной сети нужно для каждого набора входных данных, соответствующих одному дню, указать правильный результат прогнозирования — значение В01000 через 4 дня. Это делается путем смещения значений столбца В01000 вверх на 4 строки и записи результата в новый столбец.
1) В пункте Со!игпп главного меню выберите подпункт ВЬ)т! Со!игпп !)р. 2) Щелкните мышкой на столбец В01000. 3) Укажите, что величина сдвига равна 4, а метка новой колонки — В0+4. Сглаживание данных скользящей средней. Для уменьшения случайного шума сгладим 801000 с помощью скользящего среднего. 1) В пункте Орега1е главного меню выберите $)йоч)пд Ачегаде, а затем 81гпр!е в появившемся подменю. 2) Щелкните мышкой на столбец В01000 3) Для сглаживания рекомендуется использовать интервал, равный половине длины цикла.
Поэтому укажите количество строк для построения скользящей средней равным 2, а новую колонку назовите Вбачд2. Маркировка колонок. Теперь надо указать назначение каждой колонки получившейся таблицы. Это делается или с помощью команд раздела !.аЬе1 главного меню или с клавиатуры. Ниже показано, каким образом должны быть маркированы колонки и какими комбинациями клавиш зто можно сделать Результат проделанных шагов запишите в файл рпсе2.да1. Янализ корреляции данных. Для того, чтобы выявить взаимосвязи между входными данными и прогнозируемыми значениями ВР100, проведем анализ корреляции между ними.
1) В пункте Орегате меню войдите в РаГа Согге)аког. 2) На запрос о выборе колонок укажите )пдех1Р и ВР100. 3) Значения количества рядов в периоде, метки осей и режим Отари Оп!у должны быть уже заданы по умолчанию, поэтому нажмите СоггеШе. 4) Выберите Тгасе галдев, а затем Сгеаге Р!ог на появляющихся запросах. Появится график, изображенный на рис. 6.15. Рис.
6.15. Графин для выявления возможных циклов На горизонтальной оси показано время. Единица времени (день) соответствует одной строке из входной таблицы. Нуль делит горизонтальную ось на будущее и прошедшее время относительно второй колонки (ВР100), которая выбрана при построении графика. На вертикальной оси представлена степень корреляции. Положительная корреляция означает, что если значения в первом столбце увеличиваются, то увеличиваются и значения во втором столбце, и, наоборот. Отрицательная корреляция означает, что если значения в первом столбце увеличиваются, то значения во втором столбце уменьшаются, и, наоборот. Степень корреляции может изменяться от -1 до 1.
29? Аппо!е !прч! $прп! !прч! !прч! !прч! «ау ~пеех10 ~ппех20 кпе 5! еп9 «Ю 298 Проанализируем полученный график Обратите внимание на пик, расположенный немного левее нулевого значения на горизонтальной оси Для того, чтобы его получше разглядеть увеличьте масштаб графика Временное смещение (лаг) равно -1, а степень корреляции — около 0,25 Нулевой лаг означает, что изменения значений в первом и втором столбцах происходят одновременно Отрицательный лаг означает, что сначала происходит изменение значений в первом столбце, а затем, через промежуток времени, равный лагу, изменяются значения второго столбца Положительный лаг означает, что сначала происходит изменение значений во втором столбце, а затем, через промежуток времени, равный лагу, изменяются значения первого столбца Таким образом, наибольший интерес представляет сильная корреляция с отрицательным лагом, при которой изменения входного параметра влекут за собой изменение прогнозируемой величины через какое-то время Следовательно, можно использовать значения !пдех10 для предсказания значений В0100 на 1 день вперед Примечание Вообще-то нужна корреляция с отрицательным лагом не менее 4 дней, так как собираемся прогнозировать на 4 дня вперед Добавим столбец, в котором содержатся вчерашние значения !и!)ех10 1) В пункте Со!игпп главного меню выберите 815!тт Со1цгпп Ооччп 2) Щелкните мышью на столбец !пбех10 3) Укажите, что величина сдвига равна 1, а метка новой колонки — !пб-1 Наводим лорядох (1).
1) Удалите столбец В0100, так он больше не понадобится Для этого выделив его, укажите Со1цгпп/Ое!е~е Со)цгпп 2) Таким же образом удалите столбцы рпсе1 и рпсе2 3) Пометьте столбец !гк1-1 как 1прц! 4) Переместите ВО+4 в правый крайний столбец Для зтого выберите «Моче Со!цгпп» в разделе «Со1!лпп» главного меню и укажите ВО+4 и !пд-1 на запрос об выборе колонок Входные данные будут выглядеть следующим образом 1гапар0 В01ОО0 рпсе10 рпсе20 Ваа»д2 ~ПП-1 Во+4 1пр«1 1пр«1 1пр«1 1пры 1прм 1прм Раеесп 299 Результат проделанных шагов запишите в файл рпсеЗ с)а1 Представление временных рядов. К сожалению, нельзя просто задать столбец с данными за понедельник, вторник и т д Нейронная сеть «видит» только один факт, представленный текущей строкой Поэтому, если требуется подать на вход данные ста последних торговых дней, то в каждой строке должно быть сто полей дпя задания этих значений И неважно, что в предыдущей строке входного файла они уже есть Придется указать их еще раз При этом следует иметь ввиду, что при увеличении количества входов увеличивается сама сеть, что ухудшает ее способность к обучению В то же время, если нейронная сеть будет «видеть» тренд, то она сделает лучший прогноз Выбор оптимальных данных и их количества не имеет однозначного решения и на практике производится в процессе настройки сети Так как в нашем примере бып найден цикп, равный четырем дням, то дпя информирования нейронной сети о тренде будем использовать текущие значения входного параметра и значения четырехдневной давности Текущие значения уже есть, следовательно, надо создать столбцы с данными за четыре дня назад дпя всех входных столбцов, кроме 1пд-1 1) Выберите гкереа1 в разделе ОрегаГе главного меню 2) Укажите число повторений команды — 10 3) Выберите Зп)11 Со)цтп Ооаап в разделе Со1итп главного меню 4) На запрос Зе1ес1 Со!шпп укажите 1псех10 5) Величина сдвига равна 4, а метка новой колонки — 1пд1-4 6) В последующих запросах укажите метки 1пс)2-4, 11пе-4, з1геп-4, 0111-4, 1гап-4, В0-4 рпс1-4, рпс2-4, Вг)ач9-4 Вы получили десять новых столбцов с данными Наводим порядок (2).