МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Лабораторная работа 7 Прогнозирование временных рядов с помощью искусственных нейронных сетей Цель работы: обучить студентов методам прогнозирования посредством искусственных нейронных сетей. Оглавление Оглавление.........................................................................................................................1 Пакет Statistica Neural Networks (SNN).....................................................................1 Задание ....................................................................................................................................9 Пакет Statistica Neural Networks (SNN) 1. Открыть файл данных Series_g из имеющихся в пакете данных. Файл содержит единственную переменную, определяющую объем перевозок на протяжении нескольких лет с помесячной регистрацией данных. (При открытии этого файла появляется еще ряд таблиц, относящихся к опции интеллектуального решателя, которые на данной стадии надо закрыть, оставив только таблицу исходных данных). 2. Задать тип переменной «входная – выходная» следующим образом: выделить переменную щелчком по заголовку таблицы, нажать правую клавишу мыши и выбрать из меню опцию Input / Output (Входная / выходная). При этом имя переменной высветится зеленым цветом. 3. Создать новую сеть с помощью диалогового окна Create Network (Создать сеть). Для этого последовательно нажать: File – New – Network (Файл – новый – сеть). На экране монитора – диалоговое окно (рис. 1). Рис. 1. Диалоговое окно создания сети МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE В задаче прогноза временного ряда сеть должна знать, сколько копий одной переменной она должна взять и как далеко вперед она должна прогнозировать значение переменной. В данной задаче принять параметр Steps (Временное окно) равным 12, т. к. данные представляют собой ежемесячные наблюдения, а параметр Lookahead (Горизонт) – равным 1. 4. Выбрать в качестве типа сети Multilayer Perceptron (Многослойный персептрон) и принять число слоев сети равным 3. После этого нажать кнопку Advice (Совет), в результате чего программа автоматически установит число нейронов во всех трех слоях сети: 12 – 6 – 1 (рис. 2). Рис. 2. Диалоговое окно после установки параметров сети После этого нажать кнопку Create (Создать). 5. При создании сети программа SNN автоматически присвоит первым 12 наблюдениям из файла данных тип Ignore (Неучитываемые). При дальнейшем обучении и работе сети в задаче анализа временного ряда каждый подаваемый ей на вход блок данных содержит данные, относящиеся к нескольким наблюдениям. Весь такой блок приписывается тому наблюдению, которое содержит значение выходной переменной. Вследствие этого первые 12 наблюдений на самом деле не игнорируются, а являются входами первого блока данных временного ряда, который соответствует наблюдению №13. На самом деле программа строит преобразованный набор данных, в котором число наблюдений на 12 меньше, но данные в каждое наблюдение берутся из 13 последовательных строк исходного файла. Созданная сеть показана на рис. 3. МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис. 3. Трехслойный персептрон 6. В окне исходных данных «Data Set Editor» задать 66 обучающих (Training) и 66 контрольных (Verification) наблюдений (рис. 4), после чего нажать кнопку перемешивания строк следующим образом: через меню Edit – Cases – Shuffle – All (Редактирование – Случаи – Перемешать – Все). 7. Обучить сеть методом Левенберга-Маркара, для чего необходимо нажать: Train – Multilayer Perceptron – Levenberg-Marquardt (Обучить – Многослойный персептрон – Левенберг-Маркар). Процедура обучения занимает несколько секунд (зависит от типа процессора). Метод Левенберга-Маркара является одним из надежных и быстрых алгоритмов обучения, однако его применение связано с определенными ограничениями: Рис. 4. Окно исходных данных с разделенными наблюдениями МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE этот метод можно применять только для сетей с одним выходным элементом. метод Левенберга-Маркара требует памяти, пропорциональной квадрату числа весов в сети, поэтому метод не подходит для сетей большого размера (порядка 1000 весов). метод применим только для среднеквадратичной функции ошибок. Алгоритм Левенберга-Маркара разработан так, чтобы минимизировать среднеквадратичную функцию ошибок. Вблизи точки минимума это предположение выполняется с большой точностью, поэтому алгоритм продвигается очень быстро. Вдали от минимума это предположение может оказаться неправильным, поэтому метод находит компромисс между линейной моделью и градиентным спуском. Шаг делается только в том случае, если он уменьшает ошибку, и там, где это необходимо, для обеспечения продвижения используется градиентный спуск с достаточно малым шагом. Диалоговое окно метода Левенберга-Маркара показано на рис. 5. Рис. 5. Диалоговое окно метода Левенберга-Маркара Основные элементы окна: Epochs (Число эпох) – задается число эпох, в течение которых алгоритм будет прогоняться. На каждой эпохе через сеть пропускается все обучающее множество, а затем происходит корректировка весов. Cross-Verification (Кросс-проверка) – при отмеченной позиции качество выдаваемого сетью результата проверяется на каждой эпохе по контрольному множеству (если оно задано). При выключенной позиции контрольные наблюдения игнорируются, даже если они присутствуют в файле данных. Train (Обучить) – При каждом нажатии кнопки алгоритм прогоняется через заданное число эпох. Reinitialize (Переустановить) – перед новым запуском обучения следует нажать кнопку переустановки, т. к. при этом заново случайным образом устанавливаются веса сети. Jog Weights (Встряхивание весов) – при возможном застревании алгоритма в локальном минимуме данная опция добавляет к каждому весу небольшую величину. 8. Построить проекцию временного ряда, для чего через Run – Times Series Projection (Запуск – Проекция временного ряда) открыть соответствующее окно (рис. 6). МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис. 6. Окно проекции временного ряда Описание диалогового окна Start (Начало) – указывает, должна ли проекция временного ряда начинаться с некоторого номера наблюдений (Case No) в файле данных или с отдельного наблюдения. Case No (Номер наблюдения) – при проекции временного ряда из файла данных указывается номер наблюдения с выходным значением, с которого надо начинать. Length (Длина) – число шагов, на которое будет проектироваться прогноз. Variable (Переменная) – указывается переменная, которая будет проектироваться. 9. С помощью обученной сети можно выполнить проекцию временного ряда. Вначале сеть отработает на первых 12 входных значениях, в результате чего будет получен прогноз следующего значения. Затем спрогнозированное значение вместе с предыдущими 11 входными величинами вновь подается на вход сети, и последняя выдает прогноз очередного значения. Единственный управляющий параметр, который нужно выбрать – это длина проекции. В данном примере всего 144 наблюдения, 12 из которых будут удалены при предварительной обработке, поэтому сравнивать результаты можно будет самое большее на 132 шагах. Однако можно проектировать ряд и за границы имеющихся данных, только при этом не с чем будет сравнивать результат. Просмотреть поведение прогнозируемых значений при различных длинах, с использованием кнопки Run (Запуск) можно наблюдать изменение целевых и выходных значений ряда. На приведенном рис. 6 видно, что прогнозируемая кривая (синего цвета на экране монитора) не очень хорошо обучилась, так как имеются значительные отклонения между исходным и прогнозируемым рядами, начиная примерно с 70 наблюдения. МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE 10. Провести прогнозирование ряда с использованием интеллектуального решателя (третья кнопка слева в верхнем ряду). В этом случае необходимо ответить на ряд вопросов в режиме диалога: Выбрать основную версию (рис. 7) и нажать Next. Рис. 7. Выбор основной версии Определить тип задачи (стандартная или временной ряд). Здесь нужно отметить временной ряд (рис. 8). Рис. 8. Выбор типа задачи Установить период наблюдений, равный 12 месяцам (рис. 9). МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис. 9. Установка периода наблюдений Выбрать зависимую и независимую переменные, в качестве которых служит одна и та же переменная Series. Определить время расчетной процедуры, равное 2 мин (рис. 10). Рис. 10. Установка времени расчетной процедуры Указать количество сохраняемых сетей и действия при их сохранении (рис. 11). МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис. 11. Действия по выбору сетей Выбрать формы представления результатов (рис. 12) и нажать Finish. Рис. 12. Выбор формы представления результатов В результате использования интеллектуального решателя прогноз получается гораздо точнее, так как обучаемая сеть намного ближе к исходному ряду (рис. 13). МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE Рис. 13. Прогноз с помощью интеллектуального решателя Задание Построить смоделированный временной ряд из пакета Statistica следующим образом: Создать новый файл, состоящий из 20 строк и 2 столбцов. Через меню Data – Variable Specs (Данные – описание переменной) ввести в окно формул выражение =vnormal(rnd(1);1;3). Смоделировать 20 значений случайной нормально распределенной величины с математическим ожиданием, равным 1, и среднеквадратичным отклонением, равным 3. Эти 20 значений определяют переменную Var 1. Перевести их к целому типу данных, установив в окне описания переменной в качестве Type значение Integer. Перейти к переменной Var 2 следующим образом: первое значение Var 2 равно первому значению переменной Var 1; второе значение Var 2 равно сумме первых двух значений переменной Var 1; третье значение переменной Var 2 равно сумме первых трех значений переменной Var 1 и т. д. Скопировать переменную Var 2 и перейти в пакет SNN, разместив скопированные данные в новом созданном файле. Провести прогнозирование полученного ряда с помощью нейронной сети.