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

(Спасибо Эмили Касе за ее отзыв, эта статья теперь обновлена ​​и содержит информацию о сверке неотрицательных прогнозов.)

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

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

Аналогичный подход к корректировке был использован и обладателем второго места в конкурсе М5. В их решении модели LightGBM были построены для уровня продуктового магазина, а алгоритм глубокого обучения (N-BEATS) использовался для прогнозирования более высоких уровней агрегации. Затем модели LightGBM корректируются в соответствии с прогнозами, подготовленными N-BEATS. Преимущество такого подхода, на мой взгляд, в том, что команда смогла использовать разные алгоритмы, подходящие для поставленной задачи. Для данных на уровне продуктовых магазинов, которые демонстрируют прерывистый характер, LightGBM может быть более подходящим, в то время как N-BEATS может лучше извлекать тенденции и закономерности сезонности на более высоких уровнях агрегирования.

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

Согласование прогноза

На примере розничной сети на приведенной ниже диаграмме показана иерархическая структура временного ряда для сети.

Наверху иерархии находится Всего, за которым следуют Магазин и Магазин-Элемент.

Как упоминалось ранее, хотя мы определенно можем прогнозировать на уровне Store-Item, прежде чем агрегировать прогнозы на более высокие уровни, может быть более оптимальным прогнозировать все уровни и корректировать эти прогнозы так, чтобы прогнозы более низкого уровня добавить к более высоким уровням. Как же тогда мы можем согласовать эти прогнозы?

Профессор Хайндман предлагает рассматривать примирение как проблему регрессии.

Учитывая фактические наблюдения за продажами, мы можем представить их в следующем уравнении 1:

Предположим, что затем мы должны были прогнозировать каждый уровень отдельно (в литературе такие прогнозы называются базовыми прогнозами), тогда мы можем написать следующее уравнение 2 для задачи согласования:

Некоторые из вас могут заметить, что уравнение очень похоже на уравнение, представленное в обычном методе наименьших квадратов (МНК), и действительно, проще всего решить его методом МНК:

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

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

Чтобы обеспечить неотрицательные сверенные прогнозы, достаточно убедиться, что составные прогнозы на уровне складских позиций неотрицательны, как показано в следующем уравнении 4:

Как подробно описано в этой статье SL Wickramasuriya et. др. (2019), уравнение 4 может быть построено как неотрицательная задача наименьших квадратов (уравнение 5).

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

Кейс — 🏪 Прогнозирование розничных продаж

Хотя теория звучит хорошо, как она работает эмпирически?

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

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

  1. Подход «снизу вверх» (т. е. прогноз на уровне Store-Item, а затем добавление их к каждой сумме); и
  2. Подход согласования прогнозов (т. е. независимый прогноз на каждом уровне перед согласованием прогнозов с помощью метода МНК).

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

Ниже мы сравниваем среднюю абсолютную ошибку (MAE) двух подходов на каждом уровне (Store, State и Total).

Как видите, метод согласования прогнозов (обозначенный как «Иерархическое согласование OLS») в целом дает более точные прогнозы (с более низким MAE), но вывод о том, что подход согласования прогнозов лучше, будет слишком упрощенным. Набор данных, который мы используем, в конце концов, сильно упрощен, и различия в MAE на уровне Store и State также могут быть статистически незначимыми.

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

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

Для сверки прогнозов мы использовали пакет scikit-hts. Пример автономного фрагмента кода для сверки прогнозов показан ниже (с кодом для неотрицательных сверенных прогнозов). Полный код примера можно посмотреть здесь.

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

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

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

Рекомендации