
- •Лабораторная работа №1 Задача классификации
- •1.1. Постановка задачи
- •1.2. Создание набора данных
- •1.3. Создание новой сети
- •1.4. Сохранение набора данных и сети
- •1.5. Обучение сети
- •1.6. Запуск нейронной сети
- •1.7. Классификация с номинальной выходной переменной
- •2. Решение задачи классификации «Ирисы Фишера»
- •2.1. Постановка задачи
- •2.2. Формирование набора данных
- •2.3. Обучение с кросс-проверкой
- •3. Задание для самостоятельного выполнения
- •Лабораторная работа № 2 Решение задачи регрессии
- •1. Введение
- •2. Постановка задачи регрессии
- •2.1. Редактирование переменных из набора данных
- •3. Обучение сети в задаче регрессии
- •4.Тестирование обученной сети
- •5. Заданиедля самостоятельного выполнения
- •Лабораторная работа №3 Задача анализа временного ряда и прогнозирования
- •1.1. Постановка задачи
- •1.2. Создание сети типа многослойного персептрона
- •1.3. Проекция временного ряда
- •2. Задание для самостоятельного выполнения
- •Вопросы для самоконтроля
1.3. Проекция временного ряда
С помощью обученной сети можно выполнить так называемую проекцию временного ряда Time Series Projection. При этом сначала сеть отработает на первых двенадцати входных значениях. В результате будет получен прогноз следующего значения. Затем это спрогнозированное значение вместе с предыдущими одиннадцатью входными значениями снова подается на вход сети, и та опять выдает прогноз очередного значения.
Такую проекцию можно повторять произвольное число раз, хотя очевидно, чем дальше, тем хуже будет качество прогноза. Этот прием можно применять только в том случае (и в нашем примере это так), когда значение параметра Горизонт – Lookahead равно единице и входные переменные являются одновременно выходными.
|
Рис. 26. График ошибки обучения |
Откройте окно (рис. 27) Проекция временного ряда – Time Series Projection одноименной командой меню Run. Программа ST Neural Networks может начать проекцию временного ряда либо с некоторого места текущего набора данных, либо с блока данных, заданного в окне Прогнать отдельное наблюдение – Run One–off.
|
Рис. 27. Проекция временного ряда |
Мы примем вариант по умолчанию, при котором проекция начинается с первого возможного блока значений (так что прогноз можно будет сравнить со всеми фактическими данными).Здесь же можно указать, какая из выходных переменных (если их несколько) будет изображена на графике (в нашей задаче мы имеем всего одну выходную переменную, так что выбора нет). Единственный управляющий параметр, который нужно выбрать – это длина проекции (Length). В нашем временном ряду 144 наблюдения, 12 из которых будут фактически удалены при препроцессировании, поэтому сравнивать результаты можно будет самое большее на 132 шагах. Однако можно проектировать ряд и за границы имеющихся данных, только при этом не с чем будет сравнивать результат.
Установим параметр Длина – Length равным 250 и нажмем кнопку Запуск – Run. Результат окажется весьма разочаровывающим. Хотя на начальном отрезке ряда прогноз сети очень хороший, к концу его он становится все хуже и хуже, и в итоге функция превращается в горизонтальную линию. Причина этого явления в том, что в выходном слое сети использовалась логистическая функция активации. Она обладает «срезающим» свойством, не позволяющим сети экстраполировать данные. В большинстве случаев это качество весьма полезно, но рассматриваемый временной ряд имеет отчетливый линейный тренд, и прогноз должен его учесть.
Откроем окно Редактор сети – Network Editor (команда Сеть – Network... меню Правка – Edit), выберем третий слой (Layer), введем для параметра Функция активации – Act fn значение Линейная – Linear и снова обучим сеть. В таком варианте сеть работает гораздо лучше, и проекция получается вполне успешной на много месяцев вперед. И все же в конце концов произойдет ее насыщение за счет насыщения логистических функций предыдущих слоев. Область прогноза можно увеличить также с помощью функций окна Пре/постпроцессирование – Pre/Post Processing ( меню Правка – Edit), изменив значения Мин/средн – Min/Mean и Макс/ст. откл. – Max/SD так, чтобы процедура масштабирования использовала меньшую часть области отклика логистической функции (тем самым оставляя больше возможностей для экстраполяции). Например, можно задать значения Мин/средн – Min/Mean и Макс/ст.откл. – Max/SD (0,4; 0,6) для входной переменной и (0,25;0,75) для выходной. Этим мы выжмем из сети немного лучший результат, в то время как более радикальное вмешательство может привести к тому, что восприимчивость сети при обучении уменьшится слишком сильно. В любом случае слишком далекий прогноз не может быть адекватным. Более или менее надежными можно считать цифры прогноза на год или два, а все, что дальше – сомнительно. Этот пример показал нам, что не следует бездумно применять сеть в таких ситуациях, где ей потребуется экстраполировать за область известных данных.
Один из возможных выходов здесь состоит в том, чтобы предварительно преобразовать данные к более удобному виду. В нашем примере мы могли бы высказать предположение, что в данных имеется линейный тренд (и сезонные колебания). Тренд можно удалить с помощью линейной модели, а затем для оценки остатка применить какую-то более сложную нейросетевую модель. Вы обнаружите, что эта сеть делает довольно хороший прогноз и разумно проектирует ряд вперед.
Откроем окно (рис. 28) Прогнать набор данных – Run Data Set и дадим команду Запуск – Run для всего набора данных. Во втором справа столбце таблицы выходных значений выводится ошибка, то есть разность между ожидаемыми и прогнозируемыми значениями. Если открыть окно (рис. 29) Статистики регрессии – Regression Statistics и нажать кнопку Запуск – Run, можно посмотреть на долю объясненной дисперсии.
|
|
Рис. 28. Тестирование сети на наборе данных |
Рис. 29. Статистика тестирования |