Оценка даты доставки
Технические проблемы, с которыми вы можете столкнуться, имея дело с зависящей от времени и динамически меняющейся средой.
В Dell мы делаем все возможное, чтобы предоставить нашим клиентам отличное обслуживание. Это также относится к соблюдению сроков поставки нашей продукции. Предоставить клиенту точную предполагаемую дату доставки - непростая задача в сложной цепочке поставок. Команды цепочки поставок в крупных организациях могут быть крупными и сильно матричными, но с общей целью поставки продукции клиентам быстро и вовремя. Во время заказа мы сообщаем клиенту предполагаемую дату доставки, используя самую лучшую информацию, которая у нас есть. Это требует учета нескольких факторов, таких как уровень запасов, регион, праздники, ожидаемый будущий спрос и т. Д. Эти факторы вместе с обширными историческими данными делают эту проблему идеальным вариантом использования для применения машинного обучения.
В этой статье мы рассмотрим некоторые тонкие технические знания, а также некоторые проблемы, с которыми мы столкнулись, пытаясь внедрить алгоритмический интеллект и машинное обучение для решения этой важной задачи. мы также проиллюстрируем некоторые подходы, используемые для их решения.
Давайте начнем.
Своевременные заказы Vs. Конкурентоспособность
Оценить дату доставки немного сложно, и необходимо поддерживать определенный баланс, чтобы гарантировать, что заказ не опаздывает, а также указать как можно более конкурентоспособное время выполнения заказа. Когда клиент размещает заказ и получает обещанную дату доставки, мы должны выполнить ее и доставить заказ вовремя: в указанную нами предполагаемую дату или раньше (а в некоторых случаях в пределах определенного диапазона дат). Простое решение этой проблемы - предоставить заказчику длительные сроки поставки. Например, если мы думаем, что товар может быть доставлен в течение недели, мы можем указать дату доставки в месяц, чтобы минимизировать риск опоздания. Однако, если клиент сможет получить сопоставимый продукт от конкурента в более короткие сроки, мы можем потерять продажу.
Существует постоянный компромисс между точностью и конкурентоспособностью, и, конечно же, мы стремимся оптимизировать и то, и другое.
Подавляющее большинство алгоритмов машинного обучения построено с использованием симметричной оптимизации функции затрат. В этом случае цена ошибки в любом направлении одинакова - ошибка, связанная с опозданием на X дней или опозданием на X дней, одинакова. В нашем случае ошибка считается более дорогостоящей: мы скорее доставим заказ раньше, чем опоздаем. Мы закодировали эту бизнес-логику в моделях машинного обучения, создав настраиваемую функцию асимметричной стоимости, которая наказывает поздние заказы больше, чем ранние заказы.
На приведенном ниже графике показано сравнение обычной функции затрат и асимметричной функции затрат.
Мы хотели бы, чтобы процент просроченных заказов был очень низким, в то время как, как и в любой задаче оптимизации, мы также хотели бы минимизировать функцию затрат, насколько это возможно, чтобы иметь нулевые потери. Таким образом, мы сможем предоставить клиенту точные и конкурентоспособные сроки доставки.
Выбор целевой переменной
Наиболее интуитивно понятная целевая переменная - это время цикла заказа (общее количество дней, которое занимает заказ от ввода заказа до окончательной доставки). Однако, чтобы точно предсказать это время, мы должны учитывать два аспекта:
- Единица измерения: продукты создаются и доставляются в течение рабочих дней, поэтому наша целевая переменная должна вычисляться так, чтобы включать только рабочие дни. Таким образом, мы устраняем влияние выходных и праздничных дней на нашу оценку даты доставки.
- Определение времени цикла. Общее время доставки можно разделить на два основных раздела: время сборки / подготовки (время между вводом заказа и отправкой заказа) и время доставки (время с момента отправки заказа в когда заказчик получает заказ). Поскольку время доставки обычно определяется более общими факторами (поставщик услуг доставки, погода, тип доставки и т. Д.). Предлагается использовать основную модель для прогнозирования времени создания / подготовки заказов и использовать дополнительную подмодель для прогнозирования времени доставки после того, как они покинут фабрику (эта модель будет зависеть от других факторов, которые более важны для этого. конкретная проблема).
Учитывая изложенные выше аспекты, можно быть уверенным, что в модель не вносятся внешние эффекты. Таким образом, модель должна иметь возможность прогнозировать время подготовки только на основе характеристик заказов и не будет нуждаться в внешних источниках данных, таких как праздники или варианты доставки.
Поезд по времени \ тестовое разделение
Для обучения и оценки моделей машинного обучения обычно требуются обучающий набор и набор тестов (а также набор перекрестной проверки для оптимизации параметров модели). В большинстве случаев разделение на обучение и тест выполняется случайным образом: 20% данных берутся в качестве тестовых данных, невидимых для модели, а остальные используются для обучения.
При работе с зависящими от времени и динамически меняющимися средами, такими как цепочка поставок крупной компании, где характеристики среды меняются с течением времени, лучше всего использовать разбиение на основе времени и даже применять перекрестную проверку на основе времени для получения статистических данных. оценка робастной модели. Для этого мы используем метод, взятый из поля временных рядов, который представляет собой перекрестную проверку временных рядов, которая формирует тип подхода к обучению «скользящего окна».
Предлагаемый подход также помогает нам имитировать производственную среду в реальном времени, в которой модель машинного обучения обучается на основе всех заказов, доступных до этого момента времени, и используется для прогнозирования времени доставки будущих заказов.
Подводя итог, мы поделились основными проблемами, с которыми мы столкнулись при оценке даты доставки заказа с помощью машинного обучения. Нашей целью было повышение точности и своевременная доставка нашей продукции при сохранении конкурентоспособности сроков доставки. Для этого мы использовали асимметричную функцию стоимости, чтобы предсказать выбранную целевую переменную и максимально имитировать реальное поведение с помощью уникального подхода к разделению поездов \ тестов.
Особая благодарность:
Кайлу Уэсту и Ошри Бен-Харушу за совместную работу над этим проектом, а также за вычитку, рецензирование этой статьи и отличные технические отзывы.
Рекомендуемая литература
Если вы хотите узнать больше об асимметричной функции стоимости, я рекомендую прочитать Custom Loss Functions for Gradient Boosting Принца, который помог мне во время работы над этим проектом.