Простая, но эффективная эволюция рекурсивного метода без необходимости глубокого обучения

При работе над проблемой прогнозирования временных рядов стандартным бенчмаркинговым подходом является рекурсивный. Его можно легко использовать поверх любой модели машинного обучения, он требует небольших допущений и легко объясним.

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

На практике мы просим модель, обученную прогнозировать только на один шаг вперед, прогнозировать несколько временных шагов в будущем. Это может привести к неоптимальным и неконтролируемым прогнозам. Мы словно готовимся к марафону, тренируя себя пробегать всего 5 километров за тренировку. Таким образом, мы готовы пробежать первую часть марафона, но есть вероятность, что у нас возникнут трудности с завершением гонки. Мы предполагаем, что пробежать первые 5 километров — это то же самое, что пробежать последние 5.

Прогнозирование нескольких шагов временного ряда — более сложная задача, чем прогнозирование только первого шага. Мы должны принять надлежащие меры предосторожности, чтобы заставить его работать, вместо того, чтобы надеяться повторить прогноз предыдущего шага. По этим причинам я разработал tspiral, пакет Python для прогнозирования временных рядов с помощью оценщиков scikit-learn. Он обеспечивает очень эффективную реализацию рекурсивного прогнозирования, а также несколько отличных альтернатив, которые представлены в следующей части поста.

РЕКУРСИВНАЯ БАЗОВАЯ ЛИНИЯ

Представьте, что мы работаем над простой задачей прогнозирования. Мы должны предсказать синусоидальный сигнал на несколько временных шагов вперед.

На первый взгляд кажется, что это простая задача. Серия следует циклическому образцу с наличием регулярного уровня шума. Давайте посмотрим, как ведет себя рекурсивное прогнозирование.

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

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

ЗА ПРЕДЕЛАМИ РЕКУРСИВНОГО ПОДХОДА

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

Начиная с самого известного, мы должны рассмотреть прямой подход. Он состоит в подгонке отдельной оценки для каждого временного шага, который мы хотим прогнозировать.

По сравнению с рекурсивным прогнозированием он создает независимые оценщики, которые специализируются на прогнозировании цели с различными уровнями задержки. В нашем смоделированном контексте он достигает отличных результатов. Прогнозы больше не исчезают со временем и остаются стабильными до конца периода прогнозирования.

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

В первой части тестовых данных мы отмечаем отличное совпадение между составным прогнозом и наблюдаемыми значениями. Со временем прогноз теряет силу и становится плоским, как в рекурсивном сценарии. Сценарий исчезновения генерируется под капотом рекурсивного моделирования, поскольку суммирование выполняется на основе рекурсивных прогнозов. То, что делает суммирование, — это попытка смягчить упадок рекурсивного подхода, корректируя прогнозы на всем горизонте прогнозирования.

Последняя методология, которую мы хотим проанализировать, — это корректированный подход. Его можно рассматривать как смесь прямого и рекурсивного подходов или как эволюцию метода стекирования. Вместо возможности обучать нескольких прогнозистов мы генерируем рекурсивные прогнозы для разных обучающих групп со скользящим окном с помощью одной модели. Прогнозы, сгенерированные таким образом, затем корректируются на уровне временных шагов в соответствии с несколькими оценщиками. Надежда состоит в том, чтобы сгенерировать скорректированный (то есть исправленный) окончательный прогноз.

Исправленный прогноз очень хорошо следует синусоидальному шаблону, показывая, что он так же хорош, как и прямой подход в нашем смоделированном сценарии.

КРАТКОЕ СОДЕРЖАНИЕ

В этом посте мы исследовали некоторые ценные методы прогнозирования в качестве альтернативы классическому прогнозированию рекурсивных временных рядов. Все они казались очень перспективными. Их эффективность, безусловно, связана с конкретным случаем исследования и должна быть проверена и сравнена с рекурсивным эталоном. Все они доступны с помощью библиотеки tspiral в качестве стандартных средств оценки scikit-learn. Это позволяет нам рассматривать любую проблему временных рядов как табличную контролируемую задачу, без необходимости изучать новый синтаксис, используя преимущества использования всех инструментов, созданных на основе scikit-learn.

ПРОВЕРЬТЕ МОЙ РЕПО GITHUB

Оставайтесь на связи: Linkedin