Прогнозирование временных рядов с помощью искусственных нейронных сетей (Лабораторная работа № 6)

Страницы работы

Содержание работы

Лабораторная  работа  6

Прогнозирование  временных  рядов  с  помощью  искусственных  нейронных  сетей

         Цель  работы:  обучить  студентов методам  прогнозирования посредством  искусственных  нейронных  сетей.

Пакет  Statistica  Neural  Networks  (SNN)

         1.Открыть файл  данных  Series_g  из  имеющихся  в  пакете  данных.   Файл  содержит  единственную  переменную,  определяющую  объем  перевозок  на  протяжении  нескольких  лет с  помесячной  регистрацией  данных.  (При  открытии  этого файла  появляется  еще ряд  таблиц,  относящихся  к опции  интеллектуального  решателя,  которые  на  данной стадии  надо  закрыть,  оставив  только  таблицу  исходных   данных).

         2. Задать  тип  переменной   «входная – выходная»   следующим  образом:  выделить  переменную  щелчком  по  заголовку  таблицы,  нажать  правую  клавишу мыши  и  выбрать  из  меню  опцию  Input / Output  (Входная / выходная).  При  этом   имя  переменной  высветится  зеленым  цветом.

         3. Создать  новую  сеть  с  помощью  диалогового  окна  CreateNetwork  (Создать  сеть).  Для  этого  последовательно  нажать:  File  -  New  - Network  (Файл  -  новый – сеть).  На  экране  монитора    -  диалоговое  окно  (рис.1).

Рис.1. Диалоговое  окно  создания  сети

         В  задаче  прогноза  временного  ряда сеть  должна  знать,  сколько  копий  одной  переменной  она  должна  взять  и  как  далеко  вперед  она  должна  прогнозировать  значение  переменной.  В  данной  задаче  принять  параметр  Steps   (Временное  окно)  равным  12,  т.к. данные  представляют  собой  ежемесячные  наблюдения,  а  параметр   Lookahead  (Горизонт)   -  равным  1. 

         4. Выбрать  в  качестве  типа  сети  MultilayerPerceptron  (Многослойный  персептрон)  и  принять число слоев сети  равным  3.  После  этого  нажать  кнопку  Advice  (Совет),  в  результате  чего  программа  автоматически  установит  число  нейронов  во  всех  трех слоях  сети:  12 – 6 - 1  (рис.2).

Рис.2. Диалоговое  окно после  установки  параметров  сети

         После  этого  нажать  кнопку  Create  (Создать).   

         5.  При  создании  сети  программа  SNN  автоматически  присвоит  первым  12  наблюдениям  из   файла  данных  тип  Ignore  (Неучитываемые).  При дальнейшем  обучении  и  работе  сети  в задаче  анализа  временного  ряда  каждый  подаваемый  ей  на  вход  блок  данных  содержит  данные,  относящиеся  к  нескольким  наблюдениям.  Весь  такой блок  приписывается  тому наблюдению,  которое  содержит  значение  выходной  переменной.  Вследствие этого  первые  12  наблюдений  на  самом   деле  не  игнорируются,  а  являются  входами  первого  блока  данных  временного  ряда,  который  соответствует  наблюдению  №13.  На  самом  деле  программа  строит  преобразованный  набор данных,  в  котором  число  наблюдений  на  12  меньше,  но  данные в  каждое  наблюдение  берутся  из  13  последовательных строк  исходного  файла.

         Созданная  сеть  показана  на  рис.3.

Рис.3.  Трехслойный  персептрон

         6. В  окне  исходных  данных  «DataSetEditor»  задать  66  обучающих  (Training)  и  66  контрольных  (Verification)  наблюдений  (рис.4),  после  чего  нажать  кнопку    перемешивания  строк  следующим  образом:  через  меню  Edit – Cases -  Shuffle –All  (Редактирование – Случаи  - Перемешать – Все).

         7. Обучить  сеть  методом  Левенберга-Маркара,  для  чего  необходимо  нажать:  Train -  MultilayerPerceptron  -  Levenberg-Marquardt  (Обучить – Многослойный персептрон - Левенберг-Маркар). Процедура  обучения  занимает  несколько секунд  (зависит от  типа   процессора).  Метод   Левенберга-Маркара  является  одним  из  надежных  и  быстрых алгоритмов  обучения,  однако  его  применение  связано  с  определенными  ограничениями:

Рис.4. Окно  исходных  данных с  разделенными  наблюдениями 

·  этот  метод  можно  применять  только  для сетей  с  одним  выходным  элементом.

·  метод  Левенберга-Маркара  требует  памяти,  пропорциональной  квадрату числа  весов  в  сети,  поэтому  метод  не  подходит  для  сетей  большого размера  (порядка  1000  весов).

·  метод  применим  только  для  среднеквадратичной  функции  ошибок.

Алгоритм  Левенберга-Маркара  разработан  так,  чтобы минимизировать  среднеквадратичную  функцию  ошибок.  Вблизи  точки  минимума это предположение  выполняется с большой  точностью,  поэтому алгоритм  продвигается  очень  быстро.  Вдали  от  минимума  это  предположение  может  оказаться неправильным,  поэтому  метод  находит  компромисс  между  линейной  моделью  и  градиентным  спуском. Шаг  делается  только  в  том  случае,  если  он  уменьшает  ошибку,  и  там,  где  это необходимо,  для  обеспечения  продвижения  используется  градиентный  спуск  с  достаточно  малым  шагом.

  Диалоговое  окно  метода  Левенберга-Маркара   показано  на  рис.5.

Рис.5. Диалоговое  окно  метода  Левенберга-Маркара   

Основные  элементы  окна: 

·   Epochs  (Число  эпох)    -  задается  число  эпох,  в  течение  которых  алгоритм будет  прогоняться.  На  каждой эпохе  через  сеть  пропускается  все обучающее  множество,  а  затем   происходит  корректировка  весов.

·  Cross-Verification  (Кросс- проверка)   -  при  отмеченной  позиции  качество  выдаваемого  сетью  результата  проверяется  на каждой  эпохе  по  контрольному  множеству  (если  оно  задано).  При  выключенной  позиции  контрольные  наблюдения  игнорируются,  даже  если  они  присутствуют  в  файле  данных.

Похожие материалы

Информация о работе