| |
Прогнозирование цен на золото с помощью нейронных сетей STATISTICA SNN
Введение
Имеем ежедневную (по рабочим дням) сводку цен на золото в период с 03.01.2005 по 29.12.2006.
В файле представлены 4 переменные HIGH, LOW, OPEN и CLOSE (максимальная цена, минимальная, цена открытия и цена закрытия).
Задача состоит в том, что на основе представленной информации построить прогноз на 15 дней вперед.

Рис 1.1 График изменения цен на золото в период октябрь-декабрь 2005 года
Красная линия – среднее между ценами закрытия (CLOSE) и открытия(OPEN)
Пунктирные линии – наименьшая и наибольшая цены за день

Рис.1.2 График изменения цен на золото (HIGH, LOW, OPEN и CLOSE) за день в период
январь 2005 - декабрь 2006
Заметим, что в период с января 2005 по апрель 2006 происходил относительно стабильный и плавный рост цен. Затем произошел сильный взлет, далее падение (май – середина июля).
Приблизительно с июля ситуация вновь стала стабильной, но четко выраженный рост цен практически прекратился.
В данном примере будем строить прогноз для одной переменной – LOW. Эта переменная наиболее сильно коррелирует с остальными переменными.
Прогнозирование при помощи Нейронных Сетей
Запустим модуль «Нейронные сети» в меню «Анализ».

Рис 5.1 Диалог «Нейронные Сети»
В появившемся диалоге на вкладке «Быстрый» необходимо выбрать тип задачи «Временные ряды», а также задать входные и выходные переменные. Инструмент «Мастер решений» оставим по умолчанию.
После этого нажмите «ОК» для введения параметров строящихся сети.
Отметим, что в задаче прогнозирования временных рядов одна и та же переменная может являться как входной, так и выходной одновременно.
При конфигурировании сети для анализа временных рядов изменяется метод пре-процессирования данных (извлекаются не отдельные наблюдения, а их блоки), но обучение и работа сети происходят точно так же, как и в задачах других типов.

Рис 5.2 Диалог «Мастер решений» ,Вкладка «Быстрый»
В появившемся диалоге есть много различных вкладок, предназначенных для уточнения параметров, как самих сетей, так и параметров вывода.
Зададим программе построить и обучить 500 сетей различного типа (о том, как этот тип выбрать см. ниже) и выбрать из них 10 наилучших в смысле критерия, который задается на вкладке «Сохранить»

Рис 5.3 Диалог «Мастер решений», Вкладка «Сохранить»
На вкладке «Временные ряды» необходимо задать размер окна анализа(задание диапазоном).
Размер окна анализа и задает величину блока данных, которые используются в процедуре пре-процессирования.

Рис 5.4 Диалог «Мастер решений» Вкладка «Временные ряды»
Вкладка «Обратная связь» задает параметры выходной информации после процедуры выбора наилучших сетей.

Рис 5.5 Диалог «Мастер решений» Вкладка «Обратная связь»
Итак, после идентификации процесса построения сетей (который может длиться несколько минут) мы получим следующие результаты.
Выбранные сети, как можно заметить, имеют различные конфигурации.
Для отображения количественных характеристик выбранных сетей, необходимо нажать соответствующие кнопки на вкладке «Быстрый».
Проанализируем полученные результаты.

Рис 5.6 Диалог «Результаты»

Рис. 5.7 Таблица результатов выбранных моделей
Нетрудно заметить, что производительность сетей с архитектурой Радиально Базисной Функции (РБФ) в среднем хуже производительности сетей с архитектурой Многослойного (в данном случае рассматриваются только 3-х слойные) Персептрона.
Во многом это объясняется тем, что сети с архитектурой РБФ плохо экстраполируют данные (это связано с насыщением элементов скрытой структуры).
Позже мы наглядно сможем в этом убедиться при визуальном анализе построенных всеми выбранными сетями прогнозов.
Также мы можем сравнить все сети по значениям различных ошибок.

Рис. 5.8 Таблица ошибок регрессии исходного ряда и ряда, построенного выбранной сетью.
Значение ошибки «Отношение ст. отклонения» является наиболее пригодной для целей сравнения, потому как представляет собой число между 0 и 1, зависит лишь от величины каждой составляющей ошибки (не зависит от знака), а также довольно восприимчиво к выбросам.
Проанализировав значение ошибок, можно заметить, что для всех, выбранных программой сетей эти показатели довольно малы, что говорит об удачном подборе моделей.
На вкладке «Графики» диалога «Результаты» можно построить различные диаграммы рассеяния для выбранных посредством опции «Выбрать модели» сетей.

Рис. 5.9 Диалог «Результаты» Вкладка «Графики» Выбор моделей
Для того, чтобы оценить правдоподобность построенных моделей, построим график зависимости величины ошибки от номера наблюдения, а также график зависимости значений предсказанного ряда (ряда, построенного при помощи выбранной сети) от значений исходного.

Рис. 5.10 Диаграмма рассеяния ошибок предсказания от номера наблюдения.
Увеличение размаха ошибок с номером наблюдения говорит о нарушениях предположения о том, что дисперсия ошибки является случайной величиной, но поскольку это увеличение незначительно (и происходит в основном за счет выбросов) считаем, что дисперсия постоянна.
Помимо диаграммы рассеяния для анализа остатков применим также метод построения гистограмм частот. Построим эти графики для первых пяти моделей.

Рис. 5 .11 Гистограммы частот остатков первых пяти моделей нейронных сетей.
Нетрудно заметить, что 1,4 и 5 гистограммы являются весьма ассиметричными, что противоречит стандартным предположениям о нормальности остатков.
Из сказанного об ошибках, можно заключить, что наиболее подходящая модель нейронной сети для данного ряда есть модель №3.

Рис. 5.11 Ключевой график: диаграмма рассеяния предсказанных значений в зависимости от значений исходного ряда.
Полученная диаграмма говорит о достаточно хорошем приближении исходного ряда одной из десяти рассмотренных сетей.
Поскольку мы отметили сеть №3, как наиболее подходящую, целесообразным будет приведение её отдельной диаграммы рассеяния предсказанных значений.

Рис. 5.12 Диаграмма рассеяния предсказанных значений моделью №3 в зависимости от значений исходного ряда.
Еще одной характеристикой качества построенной сети можно назвать следующий факт.
На каждом скрытом слое, уровень активации в определенный момент времени должен быть одинаков. Знак активации роли не играет.
На вкладке «Дополнительно» нажмем кнопку «Архитектура сети» для отображения этой архитектуры.

Рис. 5.13 Вкладка «Архитектура сети»
Данная опция позволяет наглядно оценить уровни активации элементов сети в любой момент времени.
Как видно, сеть №3 довольно хорошо отвечает этому требованию.
Построим 5 прогнозов на 15 наблюдений вперед. Следует напомнить, что прогнозирование производится по 40 последним наблюдением.
Выбор этого значения был осуществлен ранее как величина окна прогноза.

Рис. 5.14 Прогнозы моделей №№ 1-5
Синим – наблюдаемое значение
Красным – прогноз сети
Прогнозы в зависимости от моделей упорядочены слева - направо, сверху - вниз.
Поскольку мы остановились на модели №3, и будем считать результат построения прогноза при помощи этой модели за финальный прогноз.
Визуально можно отметить, что полученный при помощи этой модели ряд довольно хорошо восстанавливает исходный (что впрочем, можно заключить и для результатов других моделей). Во всех моделях предсказывается качественно один и тот же результат - сначала цена падает, а затем столь же интенсивно растёт.
Поскольку качественно такой же результат предсказывало нам и экспоненциальное сглаживание, то можно считать, что прогноз верен.
Ниже представлена проекция ряда на 15 наблюдений вперед

Рис. 5.15 Проекция ряда, построенного моделью №3, на 15 значений вперед
Как было показано выше, ошибки этой модели наиболее полно удовлетворяют стандартным предположениям (н.о.р.), а ошибка на тестовом множестве (которую можно считать критерием качества сети) порядка 0.025.
Это очень хороший результат.
Вывод
Как и предполагалось, нейронные сети дают наиболее надежный результат для прогнозирования данного ряда.
Во многом это обусловлено сложностью и нелинейностью структуры ряда, потому что в отличие от рассматриваемых нейронных сетей, классические методы рассчитаны на применение к рядам с более заметными и очевидными структурными закономерностями, как например, в маркетинге.
Более подробная информация доступна в офисе StatSoft
| |