Обучение модели прогнозирования с несколькими временными рядами с использованием Python

Глобальные модели становятся популярным подходом к прогнозированию временных рядов. Вот как вы можете создавать эти модели с помощью Python.

От локальных к глобальным моделям

Предположим, мы хотим спрогнозировать будущие значения данного временного ряда. Мы используем исторические наблюдения за временными рядами для построения обучающей выборки. Затем выбирается модель прогнозирования и подгоняется с использованием этих данных. На рис. 1 показан пример этого процесса.

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

Эти модели являются локальными, поскольку обучающие данные относятся к одному временному ряду.

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

Модели глобального прогнозирования отличаются от прогнозирования многомерных временных рядов. В первом мы объединяем наблюдения (строки в таблице) многих временных рядов. В многомерных временных рядах мы включаем дополнительные ряды в качестве независимых переменных (столбцы в таблице). ARIMAX является примером этого.

Интуиция и предположения

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

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

Разумной идеей может быть кластеризация временных рядов перед применением глобальной модели. Подробности см. в ссылке [3].

Успешные примеры

Полезность глобальных подходов была продемонстрирована в соревнованиях по прогнозированию М4 и М5. Наиболее эффективные методы следовали этой стратегии обучения.

Перекрестное обучение на основе многих временных рядов — стандартный подход к обучению глубоких нейронных сетей. Примеры включают, среди прочего, DeepAR или N-BEATS. Повышение производительности прогнозирования также достигается с помощью других алгоритмов. Победитель конкурса M5 принял глобальную стратегию с LightGBM.

Руки вверх

Теперь у нас есть общее представление о том, как работают модели глобального прогнозирования. Здесь я закодирую простую глобальную модель прогнозирования для прогнозирования спроса на электроэнергию.

Практический пример — прогнозирование спроса на электроэнергию

Прогнозирование спроса на электроэнергию важно для управления работой сети. Например, чтобы сбалансировать спрос и предложение энергии. Мы будем использовать набор временных рядов, доступных здесь. Набор данных содержит данные о почасовом потреблении электроэнергии для многих европейских стран. Для простоты мы сосредоточимся на трех странах: Португалии, Франции и Англии.

Вот полный код, который я объясню ниже.

Начнем с чтения данных и подготовки их к подходящему формату (строки 1–17). Здесь я пропустил базовые операции с данными для краткости. Мы создаем функцию ts_as_supervised, которая преобразует временной ряд в табличный формат.

Для каждого временного ряда делаем следующее:

  1. Разделите данные на наборы для обучения и тестирования. Все наблюдения, собранные после 01–07–2015, используются для тестирования (строки 32–34);
  2. Нормализуйте временной ряд в соответствии со средним значением, вычисленным в обучающих данных (строки 36–39). Этот шаг важен, поскольку исходные временные ряды часто имеют разные масштабы. На этом этапе вам также может потребоваться выполнить другие шаги предварительной обработки. Например, применение степенных преобразований для стабилизации дисперсии. Вы можете проверить предыдущий пост, в котором я рассказываю о наиболее распространенных шагах предварительной обработки;
  3. Примените функцию ts_as_supervised, чтобы преобразовать серию в табличный формат (строки 41–43).

Теперь самое интересное. Мы объединяем наблюдения всех временных рядов для обучения модели прогнозирования (строка 46). Вот небольшой образец набора данных на данный момент. Обратите внимание, что столбцы Country и Index не используются для обучения.

В оставшихся строках кода (48 — 60) мы обучаем регрессионную модель Риджа и применяем ее к одному из временных рядов.

Увезти

  • Традиционно модель обучается с использованием исторических наблюдений за одним временным рядом;
  • Глобальные модели прогнозирования работают путем обучения модели с использованием нескольких связанных временных рядов;
  • Эти подходы становятся стандартным подходом для обучения моделей прогнозирования. К ним относятся глубокие нейронные сети или алгоритмы повышения градиента (например, LightGBM);
  • Среди успешных примеров глобального подхода — победитель конкурсов по прогнозированию М4 и М5.

Дальнейшие чтения

[1] Hewamalage, Hansika, Christoph Bergmeir и Kasun Bandara. «Глобальные модели для прогнозирования временных рядов: имитационное исследование». Распознавание образов 124 (2022): 108441.

[2] Макридакис, Спирос, Евангелос Спилиотис и Василиос Ассимакопулос. «Соревнование по точности M5: результаты, выводы и выводы». Международный журнал прогнозирования (2022 г.).

[3] Бандара, Касун, Кристоф Бергмейр и Славек Смил. «Прогнозирование баз данных временных рядов с использованием рекуррентных нейронных сетей для групп похожих рядов: подход кластеризации». Экспертные системы с приложениями 140 (2020): 112896.