Вот простой рецепт, который может помочь вам начать писать код и тестировать идеи ...
Предположим, у вас есть ежемесячные данные, записанные за несколько лет, поэтому у вас есть 36 значений. Предположим также, что вы заботитесь только о прогнозировании за месяц (значение).
- Исследовательский анализ данных: примените некоторые традиционные методы анализа временных рядов для оценки зависимости запаздывания в данных (например, графики автокорреляции и частичной автокорреляции, преобразования, дифференцирование). Допустим, вы обнаружите, что значение данного месяца коррелирует с данными за последние три месяца, но не настолько, как это.
- Разделите ваши данные на обучающие и проверочные наборы: возьмите первые 24 балла в качестве ваших тренировочных значений, а оставшиеся баллы - в качестве проверочного набора.
- Создайте макет нейронной сети. В качестве входных данных вы возьмете значения за последние три месяца и захотите предсказать значение следующего месяца. Итак, вам нужна нейронная сеть с входным слоем, содержащим три узла, и выходным слоем, содержащим один узел. Вероятно, у вас должен быть скрытый слой с хотя бы парой узлов. К сожалению, выбор количества скрытых слоев и их соответствующего количества узлов не является чем-то, для чего есть четкие рекомендации. Я бы начал с малого, как 3: 2: 1.
- Создайте шаблоны обучения: каждый шаблон обучения будет иметь четыре значения, причем первые три соответствуют входным узлам, а последнее определяет правильное значение для выходного узла. Например, если ваши тренировочные данные имеют значения то
Икс1, х2... , х24
р т т е р п 1 : х1, х2, х3, х4
р т т е р п 2 : х2, х3, х4, х5
...
р т т е р п 21 : х21, х22, х23, х24
- Тренируйте нейронную сеть по этим паттернам
- Протестируйте сеть на проверочном наборе (месяцы 25-36): здесь вы передадите три значения, которые необходимы нейронной сети для входного слоя, и посмотрите, на что настроен выходной узел. Итак, чтобы увидеть, насколько хорошо обученная нейронная сеть может предсказать значение 32-го месяца, вы передадите значения для 29-го, 30-го и 31-го месяцев.
Этот рецепт, очевидно, высокого уровня, и вы можете сначала почесать голову, пытаясь отобразить свой контекст в разных библиотеках / программах. Но, надеюсь, это обрисовывает в общих чертах главное: вам нужно создать шаблоны тренировок, которые разумно содержат корреляционную структуру ряда, который вы пытаетесь прогнозировать. И независимо от того, выполняете ли вы прогнозирование с помощью нейронной сети или модели ARIMA, исследовательская работа по определению структуры является зачастую самой трудоемкой и трудной частью.
По моему опыту, нейронные сети могут обеспечить большую функциональность классификации и прогнозирования, но их настройка может занять много времени. В приведенном выше примере вы можете обнаружить, что 21 тренировочных моделей недостаточно; различные преобразования входных данных приводят к лучшим / худшим прогнозам; изменение количества скрытых слоев и узлов скрытых слоев сильно влияет на прогнозы; и т.п.
Я настоятельно рекомендую посетить веб-сайт neural_forecasting , который содержит тонны информации о соревнованиях по прогнозированию нейронных сетей. Страница Мотивации особенно полезна.