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

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

Мне часто ставят задачу прогнозирования ежемесячных доходов розничных торговых точек. Предположим, у меня есть обучающая выборка из N торговых точек, каждая из которых связана с рядом исторических ежемесячных доходов (целевое значение) и набором признаков, которые не зависят от времени (например, местоположение (и все связанные геопризнаки), тип магазина, торговая зона и т.д.). Затем у меня есть тестовая выборка из M торговых точек, для которых мне нужно прогнозировать ежемесячные доходы на указанный период времени (например, Q1-Q3 2019).

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

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

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

Модели LTSTM очень хорошо работают с временными рядами, так что стоит начать с этого.

Кроме того, мне хотелось бы спросить, почему вам вообще нужно корректировать и пересчитывать вашу модель?

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

Правка:

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

Отличным ресурсом, где вы можете увидеть решения этой проблемы, является:

Прогнозирование продаж Walmart на Kaggle

Вы найдете множество тетрадей с отличными подходами и решениями (например, на основе упомянутой модели LTSTM).

Но давайте также попробуем выделить базовое решение прямо здесь:

*Данные**
Предположим, у нас есть данные, которые выглядят примерно так:

Магазин  |  Месяц  |  Продажи  |  Размер_магазина  |  ...
Восток   |  Янв    |  $0.9M  |  500         |  ...
Восток   |  Фев    |  $1.1M  |  500         |  ...
Север    |  Янв    |  $1.5M  |  800         |  ...
Север    |  Фев    |  $2.0M  |  800         |  ...

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

Проблема

Попытка прогнозировать продажи магазина Запад на март, принимая во внимание все постоянные переменные, связанные с этим магазином, но НЕ трендовые переменные.

Важно учитывать сезонные переменные здесь! Это инженерные признаки, основанные на месяце. Например, мы можем легко вычислить влияние на продажи для каждого месяца (например, тренды, такие как рождественские распродажи и т.д.) это не тренды, поскольку они зависят ТОЛЬКО от месяцев и не от каких-либо других паттернов.

Решение

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

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

Тем не менее, вы можете легко создать трендовые данные на основе моделей GAN или MICE для дополнения ваших данных.

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

Степень свободы и т.д. здесь действительно не применима.

Просто краткая заметка о панельной регрессии. Если вы посмотрите на фиксированные эффекты (“фиксированный” означает, что у каждого магазина есть своя “идентичность”), тогда вы можете просто применить “регрессию по методу наименьших квадратов с фиктивными переменными” (LSDV). LSDV – это просто другой способ представления фиксированных эффектов. Идея заключается в том, что у вас есть модель, такая как:

$$y=\beta_0+\beta_1 X + \gamma I + \theta t + \lambda I_t + u.$$

Предположим, $y$ – это доход, $X$ – это временные постоянные переменные, $I$ – это набор “фиктивных переменных” (каждому магазину, кроме одного, соответствует свой фиктивный индикатор), $t$ – это переменная счетчика времени, а $I_t$ – это индикатор (скажем) месяца года. $I$ будет захватывать “фиксированные эффекты” магазина, а $t$ будет учитывать такие факторы, как инфляция, в то время как $I_t$ будет учитывать ежемесячные эффекты.

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

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

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

1. Разумный подход к предсказаниям

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

2. Использование исторических данных

Чтобы сделать прогнозы, вы можете использовать исторические данные по выручке «как есть». Для этого рекомендуется:

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

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

3. Подходы к моделированию

Несколько подходов к моделированию могут быть рассмотрены:

  • Модели временных рядов: Используйте LSTM (долгосрочная краткосрочная память) для обработки временных данных. Они хорошо справляются с зависимости во времени и могут учитывать прошлые значения для предсказания будущих.

  • Панельная регрессия: Широко применяется в эконометрике и может быть использована для моделирования фиксированных эффектов отдельных магазинов. Использование подхода Least Squares Dummy Variable (LSDV) позволяет захватить специфические эффекты каждого магазина.

  • Общие аддитивные модели (GAM): Эти модели помогают выявить сложные нелинейные зависимости между переменными, что может быть полезно в условиях изменчивости выручки.

4. Соблюдение последовательности данных

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

5. Постепенный подход к внедрению

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

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

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

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