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

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

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

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

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

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

Модуль 1. Кластеризация продуктов

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

Модуль 2: Обработка функций

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

Модули 3. Расширение данных

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

Модуль 4. Обучение моделей

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

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

Мы открыты для любого сотрудничества в академических исследованиях. Пожалуйста, свяжитесь с [email protected], если вам интересно.