Алгоритмы прогнозирования спроса

Note

Группы интересов сообщества теперь переехали из Yammer в Microsoft Viva Engage. Чтобы присоединиться к сообществу Viva Engage и принять участие в последних обсуждениях, заполните форму Request access to Finance and Operations Viva Engage Community и выберите сообщество, к которому вы хотите присоединиться.

Планирование спроса в Microsoft Dynamics 365 Supply Chain Management включает четыре популярных алгоритма прогнозирования спроса: auto-ARIMA, ETS, Prophet и XGBoost.

  • Auto-ARIMA хорошо работает с стационарными данными. Стационарные данные — это данные, имеющие постоянное среднее значение, постоянное стандартное отклонение и отсутствие сезонности.
  • Ошибка, тренд и сезонность (ETS) хорошо работают, если ситуация в бизнесе проста и данные содержат различные закономерности, такие как линейные или экспоненциальные тренды, или если вы хотите, чтобы прогноз придавал больше значения последним данным.
  • Prophet лучше всего работает со сложными реальными данными.
  • EXtreme Gradient Boosting (XGBoost) может создавать прогноз на основе нескольких входных данных.

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

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

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

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

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

Scenario Auto-ARIMA ETS Пророк (Prophet)
Простой бизнес-случай Приемлемо Recommended Приемлемо
Временные ряды имеют другую (линейную или экспоненциальную) тенденцию и несколько сезонных типов. Не рекомендуется Recommended Recommended
Временные ряды показывают четкую линейную тенденцию. Recommended Recommended Приемлемо
Данные являются стационарными. Recommended Не рекомендуется Приемлемо
Данные являются нестационарными. Не рекомендуется Приемлемо Recommended
Требуется быстрое прогнозирование. Не рекомендуется Recommended Приемлемо
Прогнозирование сосредоточено на недавнем периоде. Приемлемо Recommended Приемлемо

Алгоритм наилучшего соответствия модели

Оптимальный алгоритм модели автоматически определяет, какие из других доступных одно входных алгоритмов (auto-ARIMA, ETS или Prophet) лучше всего соответствуют вашим данным для каждого продукта и сочетания измерений. Таким образом, можно использовать различные модели для различных продуктов. В большинстве случаев используйте оптимальную модель, так как она объединяет сильные стороны всех других стандартных моделей. В следующем примере показано, как.

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

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

Продукт Store
A 1
A 2
B 1
B 2

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

Продукт Store Модель прогнозирования MAPE
A 1 Пророк (Prophet) 0.12
A 2 Пророк (Prophet) 0.56
B 1 Пророк (Prophet) 0.65
B 2 Пророк (Prophet) 0.09

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

Продукт Store Модель прогнозирования MAPE
A 1 ETS 0.18
A 2 ETS 0.15
B 1 ETS 0.21
B 2 ETS 0,31

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

Продукт Store Пророк MAPE Auto-ARIMA MAPE ETS MAPE Оптимальная модель прогнозирования MAPE наилучшего соответствия
A 1 0.12 0,34 0.18 Пророк (Prophet) 0.12
A 2 0.56 0,23 0.15 ETS 0.15
B 1 0.65 0.09 0.21 Auto-ARIMA 0.09
B 2 0.10 0,27 0,31 Пророк (Prophet) 0.10

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

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

Условные обозначения:

  • Красный — исключительно для Пророка.
  • Синий — только ETS.
  • Зеленый — лучше всего подходит.

Наиболее подходящие версии модели

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

Имя Требуемая версия Description
Лучше всего подходит модель — версия 1 Планирование спроса версии 1.0.0.1067 или выше Работает, как описано в этом разделе
Лучше всего подходит модель — версия 2 (предварительная версия) Demand Planning версии 1.0.0.3424 или более поздней Аналогично версии 1, но со следующими изменениями:
  • Добавляет поддержку наивного прогнозирования в качестве способа обработки сценариев с низким уровнем данных.
  • Данные, используемые для обучения и тестирования моделей, ограничены значениями до даты начала прогноза.
Лучше всего подходит модель — версия 3 (предварительная версия) Планирование спроса версии 1.1.0.4 или более поздней То же самое, что и версия 2, но добавляет поддержку метода Кростона для прогнозирования на основе периодических запросов (это данные спроса с множеством периодов нулевого спроса и случайных ненулевых требований).

Important

  • Модель наилучшего соответствия — версия 2 и модель наилучшего соответствия — версия 3 — предварительные функции.
  • Предварительные версии функций не предназначены для использования в рабочей среде и могут иметь ограниченные функциональные возможности. Эти функции подлежат дополнительным условиям использования. Они доступны до официального выпуска, чтобы клиенты могли получать ранний доступ и предоставлять отзывы.

Auto-ARIMA: восторг путешественника во времени

Алгоритм auto-ARIMA похож на машину времени. Это ведёт вас в путешествие по прошлым моделям спроса, чтобы вы могли делать обоснованные прогнозы о будущем.

Auto-ARIMA использует метод, известный как ARIMA. Имя ARIMA — это сокращение для трех ключевых компонентов, которые объединяет метод:

  • AR является сокращением от "авторегрессии". Этот компонент регрессирует временные ряды по собственным предыдущим значениям. Он фиксирует влияние прошлых значений на текущее значение.
  • Я обозначает "интегрированный". Этот компонент, который также называется разностным, является шагом, который выполняется моделью для преобразования нестационарных временных рядов в стационарные данные.
  • MA — это аббревиатура от "скользящего среднего". Этот компонент учитывает прошлые ошибки прогноза и улучшает точность модели, сглаживая шум.

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

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

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

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

Уравнения алгоритма auto-ARIMA

Автоматическое регрессивное вычисление

Компонент AR использует следующее уравнение:

Y(t) = c + ɸ1Y(t-1) + ɸ2Y(t-2) + ... + ɸpY(t-p) + ε(t)

Ключ:

  • Y(t) — значение во время t.
  • c — константа.
  • ɸ1, ɸ2, … ɸp — коэффициенты модели.
  • ε(t) — термин ошибки белого шума.

Скользящее среднее вычисление

Компонент MA использует следующее уравнение:

Y(t) = c + ε(t) + ϴ1ε(t-1) + ϴ2ε(t-2) + ... + ϴqϵ(t−q)

Ключ:

  • Y(t) — значение во время t.
  • c — константа.
  • ε(t), ε(t-1), ... ε(t-q) — значения ошибок в моменты времени t, t−1, … tq.
  • ϴ1, ϴ2, … ϴq — коэффициенты модели.

Вычисление ARIMA

Алгоритм auto-ARIMA объединяет компоненты AR и MA с помощью следующего уравнения:

ARIMA = AR + MA (после дифференцирования временного ряда)

ETS: средство сдвига формы

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

Имя ETS — это сокращение для трех основных компонентов, на которые алгоритм раскомпозирует данные временных рядов:

  • E является сокращением от "error". Этот компонент фиксирует случайный шум или нерегулярные колебания.
  • T является коротким для "тренда". Этот компонент представляет общее направление данных с течением времени: увеличение, уменьшение или константа.
  • S является коротким для "сезонности". Этот компонент отражает повторяющиеся шаблоны или циклы данных (например, ежегодно или ежемесячно).

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

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

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

Ниже приведены пошаговые объяснения алгоритма:

  1. Декомпилирование компонентов. Разбиение временных рядов на три компонента: ошибка (E), тренд (T) и сезонность (S).

  2. Выберите модели для компонентов. Каждый компонент следует аддитивной модели:

    ETS(A,A,A) — аддитивная ошибка, аддитивная тенденция, аддитивная сезонность.

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

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

  5. Прогноз. Прогнозирование будущих значений путем объединения последних оценок уровня, тренда и сезонности.

Уравнение алгоритма ETS

Алгоритм ETS использует следующее уравнение:

F(t+1) = αA(t) + [1-α]F(t)

Ключ:

  • F(t+1) — прогнозируемое значение.
  • F(t) — предыдущее прогнозируемое значение.
  • A(t) — фактическое историческое значение.
  • α — константа сглаживания (0 ≤ α ≤ 1).

Prophet: гуру дальновидного прогнозирования

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

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

Алгоритм Пророка выполняет следующие действия для создания прогнозов:

  1. Разложите временные ряды на тренд, сезонность и компоненты праздников.
  2. Обнаружение и обработка точек изменений для сдвигов тренда.
  3. Используйте серии Fourier для сезонных шаблонов.
  4. Добавление регрессоров праздников для нерегулярных событий.
  5. Настройте параметры модели, используя бейесовскую оптимизацию.
  6. Создание прогнозов и интервалов неопределенности.

Уравнение алгоритма Пророка

Алгоритм Пророка использует следующее уравнение:

y(t) = g(t) + s(t) + h(t) + ε(t)

Ключ:

  • g(t) — значение, которое фиксирует изменения непериодической тенденции с течением времени. Алгоритм вычисляет это значение с помощью кускового линейного уравнения тренда.
  • s(t) — значение, представляющее повторяющиеся сезонные шаблоны, такие как ежедневные, еженедельные или ежегодные шаблоны. Алгоритм моделирует это значение с помощью серии Fourier.
  • h(t) — значение, которое учитывает известные, нерегулярные эффекты, вызванные праздниками или специальными событиями. Алгоритм обрабатывает эти эффекты как дополнительные регрессии, которые обеспечивают гибкость в моделировании специальных событий.
  • ε(t) — случайный шум или необъяснимая вариативность.

XGBoost

В отличие от других алгоритмов, описанных в этой статье, eXtreme Gradient Boosting (XGBoost) создает прогноз на основе нескольких входных данных. В настоящее время это единственный алгоритм, который можно использовать на шаге модели прогнозированияПрогноз с сигналами в Demand Planning. Кроме того, это поддерживается только этим типом шага. Узнайте больше о настройке моделей прогнозирования, использующих XGBoost и сигналы входных данных в Прогнозе с сигналами.

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

деревья принятия решений

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

                          [Is temp > 25°C?]
                          /               \
                        Yes                No
                       /                     \
        [Is temp > 30°C?]               [Is temp > 15°C?]
            /      \                        /           \
         Yes        No                    Yes             No
         /            \                   /                \
    Leaf: 80      Leaf: 60        [Is temp > 10°C?]     Leaf: 20
                                        /       \
                                    Yes         No
                                    /            \
                                Leaf: 40      Leaf: 10

Это дерево принятия решений располагается следующим образом:

  1. Корневой узел — дерево разделяется в зависимости от того, превышает ли температура 25°C:

    • Да — перейдите к левому поддереву.
    • Нет - Перейдите к правому поддереву.
  2. Левое поддерево (температура > 25°C) — дерево далее разделяется на основе того, если температура превышает 30°C:

    • Да . Прогнозируйте 80 продаж.
    • Нет — прогнозируйте 60 продаж.
  3. Правое поддерево (температура ≤ 25°C) — дерево далее разделяется на основе того, если температура превышает 15°C:

    • Да: Дерево дальше делится на основе того, превышает ли температура 10°C.

      • Да . Прогнозируйте 40 продаж.
      • Нет — прогнозирование 10 продаж.
    • Нет — прогнозируйте 20 продаж.

Обучение ансамблям

Ансамблевое обучение — это подход машинного обучения, который объединяет несколько моделей (часто называемых слабыми обучающимися), чтобы сделать прогнозы. Объединенные выходные данные многих моделей часто являются более точными и надежными, чем любая отдельная модель.

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

Градиентное усиление

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

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

Принцип работы алгоритма XGBoost

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

  1. Инициализация прогнозов.

    • Задача — начните с прогнозирования базового значения для всех экземпляров.
    • Назначение — базовое значение обычно представляет собой среднее значение целевой переменной для задач регрессии или логарифм шансов для задач классификации.
  2. Вычислите остатки (градиенты).

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

    • Задача — обучение нового дерева принятия решений с помощью остатков (градиентов) в качестве целевых значений.

    • Назначение — дерево прогнозирует корректировки прогнозов предыдущей модели.

    • Основные сведения

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

    • Задача — применение ограничений, чтобы предотвратить переполнение.

    • Назначение — нормализация помогает обобщению модели и поддержанию производительности в невидимых данных.

    • Методы

      • Глубина дерева — ограничение максимальной глубины деревьев.
      • Веса листьев — штрафуют слишком сложные деревья за счет добавления регуляризационных условий.
      • Минимальная выгода разбиения — разрешить разделение, только если происходит минимальное улучшение функции потерь.
  5. Обновление прогнозов.

    • Задача — настроить прогнозы, добавив выходные данные нового дерева.
    • Назначение — этот шаг постепенно уменьшает ошибку.
  6. Повторите процесс.

    • Задача — повторите шаги 2–5, чтобы последовательно добавить больше деревьев.

    • Назначение — каждое дерево уменьшает остатки и, следовательно, постепенно улучшает модель.

    • Условия остановки

      • Фиксированное количество деревьев реализуется в алгоритме приложения планирования спроса.
      • Нет значительного улучшения функции потери (конвергенция).
  7. Объедините деревья для окончательного прогнозирования.

    • Задача — агрегировать выходные данные всех деревьев для создания окончательного прогноза.
    • Назначение — каждое дерево способствует окончательному результату. Таким образом, создается эффект ансамбля.

Пользовательский алгоритм машинного обучения Azure

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