Прогнозирование спроса в логистике с 20 000 различными временными рядами

Вопрос или проблема

Я пытаюсь решить очень сложную задачу и буду признателен за вашу помощь.

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

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

Каждый спрос имеет несколько характеристик:

  1. Идентификатор товара
  2. Дата запроса
  3. Получающий склад – у нашей организации есть множество складов, расположенных по всей стране, это склад, который принял товар.
  4. Отправляющий склад – склад, который отправил товар.
  5. Тип спроса
  6. Количество – может быть либо положительным (если клиент потреблял товар со склада), либо отрицательным (если клиент вернул товар обратно на склад)

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

Что мы сделали до сих пор:

  1. Простые статистические модели (экспоненциальное сглаживание, методы Хольта и тренда и т.д.)
  2. Классические модели машинного обучения (линейная регрессия, деревья решений и т.д.)
  3. Методы ансамблей (случайный лес, бустинг и т.д.)
  4. Простые модели глубокого обучения – нейронные сети с несколькими линейными слоями и RNN слоем.
  5. Комплексные нейронные сети последнего поколения для прогнозирования временных рядов (мы пробовали временной трансформер Google)
  6. Расчет обычного взвешенного среднего (как и делает сейчас компания), но только после удаления аномальных запросов (на основе алгоритма DBSCAN).

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

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

Любая помощь будет высоко оценена.

Заранее спасибо.

Вы также можете попробовать ARIMA и SARIMA.

ARIMA имеет три гиперпараметра (p, d, q) и SARIMA (сезонная ARIMA) имеет дополнительные три параметра (P, D, Q). Вы можете найти лучшие гиперпараметры для вашего набора данных с помощью перебора по сетке.

https://people.duke.edu/~rnau/411arim.htm

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

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

Я бы также попробовал использовать Prophet от Facebook

От авторов:

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

Он может хорошо работать “из коробки” без каких-либо серьезных настроек. Вы также можете запускать его параллельно (поскольку процесс подгонки модели довольно автоматизирован), что полезно, когда у вас так много временных рядов.

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

А вот пост о параллельном выполнении.

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

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

  • Вы провели достаточный исследовательский анализ и беседы с бизнес-экспертами, чтобы понять данные и процесс их генерации?
  • Какую стратегию оценки производительности вы используете для оценки своих моделей? Есть больше возможностей, чем большинство людей осознает, и нет универсально лучшего варианта. Если вы хотите понять, о чем я говорю, эта статья может дать вам несколько свежих идей.
  • Какие характеристики могут быть хорошо подходящими для помощи в прогнозах?
  • Что произойдет, если я подам сложную модель (сложная = более сложная, чем скользящее среднее) с простыми данными, т.е. только с прошлыми периодами, которые вы используете для своего скользящего среднего. Используйте эти данные и только эти в качестве входных данных для LightGBM и смотрите, что произойдет. Посмотрите на первые деревья, которые настраивает LightGBM, и где оно ошибается. Если он не ошибается, подайте в него дополнительные функции данных, пока не ошибется.
  • Вы поняли идею, и, вероятно, у вас есть некоторые другие идеи. Просто не пытайтесь сразу пробовать следующую технику моделирования. Посмотрите на все остальное.

Ответ или решение

Прогнозирование спроса в логистике с использованием 20 тыс. различных временных рядов

Введение

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

Проблема

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

Анализ данных

Исследование и анализ данных

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

  2. Взаимодействие с экспертами: Общение с бизнес-аналитиками может дать invaluable insights в поведение данных. Они могут указать на важные факторы и особенности, которые вы могли не заметить.

  3. Построение дополнительных признаков: Разработайте дополнительные признаки на основе сплошной или агрегированной информации, например, добавляя временные признаки (день недели, месяц, квартал), сезонные индикаторы, или экономические показатели, которые могут влиять на спрос.

Подходы к прогнозированию

Модели временных рядов

  1. ARIMA/SARIMA: Попробуйте использовать ARIMA или SARIMA. Эти модели хорошо работают с временными рядами и могут учитывать сезонность и тренды. Проводите отбор гиперпараметров с помощью сеточного поиска.

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

Современные модели машинного обучения

  1. Градиентный бустинг: Вы можете использовать LightGBM или XGBoost, которые могут показывать достойные результаты в задачах прогнозирования временных рядов. Параллельно с ними проанализируйте, как простые модели, такие как взвешенная средняя, справляются с вашими данными.

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

Оценка результатов

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

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

Заключение

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

Итог

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

Оцените материал
Добавить комментарий

Капча загружается...