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

Что такое стратегия прогнозирования?

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



Давайте посмотрим, как использование лагов влияет на процесс прогнозирования.

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

Чтобы сделать прогноз, мы собираем продажи за последние 5 дней и объединяем их в таблицу для подбора модели ML:

Давайте создадим алгоритм для прогнозирования продаж на 11-й день:

  • В конце 10-го дня собираем данные за последние 5 дней: [5, 10, 12, 12, 9].
  • Создайте вектор признаков для нашей модели ML.
  • Сделайте предсказание на 11-й день.
  • Отправка результатов клиенту.

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

Допустим, мы можем увеличить предложение только через 3 дня. Хорошее решение — изменить нашу целевую переменную и предсказать продажи на 3-й день по текущему. Во время обучения мы должны избавиться от столбцов lag_1, lag_2, потому что они будут недоступны. Во время прогноза мы собираем данные о продажах за последние 3 дня и помещаем их в столбцы lag_3, lag_4, lag_5.

Но что, если мы хотим спрогнозировать продажи на все дни с 11 до 13? В этом случае наш горизонт прогноза составляет 3 дня. И наш первоначальный алгоритм, предсказывающий только одно значение, не справляется с этой задачей.

Этот тип проблемы обычно называют многошаговым прогнозированием временных рядов. И теперь мы готовы понять, что такое стратегия прогнозирования в рамках этой статьи и библиотеки ETNA.

Стратегия прогнозирования — это алгоритм использования модели ML для многоэтапного прогнозирования временных рядов.

Основные стратегии прогнозирования

Давайте начнем с рассмотрения стратегий, которые работают с моделями, предсказывающими скалярное значение. Почти все (если не все) модели в библиотеке scikit-learn попадают в эту категорию. Для работы с многомерной целью предусмотрен специальный модуль мультивыход.

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

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

Прямая стратегия состоит из обучения независимых моделей для каждого шага горизонта и их независимого применения для формирования прогноза. В нашем примере это дает нам 3 модели для прогнозирования на 1, 2 и 3 дня вперед.

Каждая модель использует только те лаги, которые будут доступны при прогнозировании. Например, модель для прогнозирования на два дня вперед не может использовать lag_1, но может использовать lag_2 и выше.

Обучить 3 модели вроде бы не сложно, но что делать, когда горизонт состоит из 366 шагов? Давайте подробнее рассмотрим наш пример с 3 моделями. Если взять модель, обученную без lag_1 и lag_2, то она может предсказывать все дни с 11-го по 13-е, просто часть данных игнорируется. Вот так выглядят данные для прогноза:

Назовем эту стратегию Simple Direct. Мы можем пойти еще дальше с этой идеей. Найдем промежуточный подход между одной моделью для всех шагов и отдельной моделью для каждого шага.

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

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

Стратегия DirRec представляет собой комбинацию двух предыдущих. Мы по-прежнему обучаем одну модель для каждого шага, но вместо игнорирования недоступных лагов используются прогнозы предыдущих моделей. Давайте посмотрим на прогнозные данные для каждой модели.

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

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

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

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

Ключевые моменты для обсуждаемых стратегий:

Стратегии прогнозирования в ETNA

Доступные стратегии в библиотеке ETNA:

  • Simple Direct, реализованный Pipeline. Соответствуйте одной модели, которая использует задержки, доступные для всех шагов в горизонте.
  • Рекурсивный, реализованный AutoRegressivePipeline. Подберите одну модель и примените ее рекурсивно.
  • Директ, реализованный DirectEnsemble. Постройте ансамбль пайплайнов с разными горизонтами прогнозирования. Для каждого шага горизонта берется прогноз из пайплайна с наименьшим горизонтом.

Давайте рассмотрим их все на практике. Мы будем использовать некоторую вариацию набора данных из статьи Конкурс по прогнозированию туризма, где были изучены различные методы для прогнозирования спроса на туризм в Австралии. Результирующий набор данных является искусственным и использует поддельные временные метки для выравнивания всех временных рядов.

Скачать набор данных:

Описание данных:

У нас есть месячная частота, 366 сегментов и 333 месяца данных. Давайте соберем простой пайплайн для прогнозного горизонта в 24 месяца. Для оценки мы рассчитываем среднее значение метрики SMAPE в 3 раза.

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

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

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

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

Но что, если мы можем сделать этот пересчет реже? Это время, когда в игру вступает параметр step. Он определяет, сколько точек мы прогнозируем без пересчета лагов. Например, предположим, что step=2. В этом случае количество итераций уменьшается вдвое, и каждая итерация теперь состоит из двух шагов предсказания одновременно. Как недостаток, мы не можем использовать lag_1, потому что он не будет доступен для второй точки нашей итерации.

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

С step=24 у нас есть стратегия Simple Direct. Метрика улучшалась до step=12, после этого разница не выглядит существенной. Время оценки увеличивается по мере уменьшения шага, поскольку требуется больше итераций.

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

Улучшения после horizon_step=12 совсем небольшие. С horizon_step=1 у нас есть наименьшее значение метрики среди всех протестированных стратегий (эксперимент с меньшими значениями горизонта не в счет), но это связано с самыми большими временными затратами. По сравнению с предыдущим экспериментом время оценки увеличивается более значительно. Время по существу пропорционально количеству обученных моделей.

Выбор той или иной стратегии зависит от требований клиента. Сведем наиболее интересные результаты в таблицу:

Заключение

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

Если вы хотите предложить новую функцию, задать вопрос или порекомендовать тему для статьи, добро пожаловать в наш GitHub — там все контакты. Не стесняйтесь оставлять звезду.

Для самых заинтересованных есть несколько статей, которые углубляются в эту тему:

  • Бонтемпи, Джанлука, Сухайб Бен Тайеб и Янн-Аэль Ле Борн. «Стратегии машинного обучения для прогнозирования временных рядов». Бизнес-аналитика: вторая европейская летняя школа, eBISS 2012, Брюссель, Бельгия, 15–21 июля 2012 г., учебные лекции 2 (2013 г.): 62–77.
  • Тайеб, Сухайб Бен и др. «Обзор и сравнение стратегий прогнозирования временных рядов на несколько шагов вперед на основе конкурса прогнозирования NN5». Экспертные системы с приложениями 39.8 (2012): 7067–7083.