А зачем это бизнесу? Экономическое обоснование использования ML для прогнозирования спроса на ж/д
Привет, Хабр! Я Леонид Зверев, главный специалист по анализу данных и машинному обучению в Первой грузовой компании. Мы перевозим разные грузы по железной дороге, и чтобы спрогнозировать спрос на подвижной состав, используем модели машинного обучения.
Бизнес всегда хочет сократить затраты, и мы можем ему в этом помочь за счет прогнозирования спроса. Зная спрос на железной дороге, мы понимаем, где в ближайшем будущем будут основные точки возникновения грузопотоков, куда имеет смысл заадресовывать наши вагоны, чтобы сократить порожние пробеги (когда вагон едет пустым) и остаться в прибыли. Подробно об этом мы рассказали в первой статье цикла. Во второй части мы затронем рабочие подходы в прогнозировании спроса, приживлении результатов прогноза и экономические эффекты от хорошего прогноза.
Чтобы разобраться в том, где лежат эффекты, нужно опять немного поговорить про процесс
Процесс планирования продаж и операций в ПГК построен по принципам S&OP. S&OP — это формула выстраивания процессов, которая очень широко применяется в FMCG. Чаще всего эта формула применяется либо в продуктовом ритейле, либо для выстраивания производственных процессов на заводах. Базово формула сводится к сопоставлению неограниченного спроса (unconstrained demand) с имеющимися у компании ресурсами (сapacity).
Приведу пример, как S&OP применяется на заводе
Допустим, спрос на металлы по всей стране составляет 100 млн тонн в год. Разные предприятия разных отраслей нуждаются в определенном количестве металла: строителям нужен материал одной марки, а ж/д транспорту, для прокладки рельс и строительства вагонов, другой. Завод может выпускать только 16 млн тонн металла в год. То есть нужно распределить мощности завода в размере 16 млн тонн по клиентам таким образом, чтобы заработать как можно больше денег.
Мы решили попробовать применить этот способ организации производственных процессов в операторском железнодорожном бизнесе, в бизнесе ПГК. В качестве нашего сapacity мы взяли не производственные мощности завода, потому что у нас нет завода, а то количество подвижного состава, которое у нас имеется в парке (около 100 тысяч вагонов). Этим количеством мы можем покрыть только определенный процент общего спроса в ж/д перевозках, допустим, порядка 20%. И мы должны так распределить наши вагоны по сети, чтобы получить максимальный доход.
Первым этапом S&OP является прогнозирование спроса — нужно определить на сколько вообще рынок нуждается в ж/д перевозках. Конкретно этим и занимается наша команда: чем лучше мы прогнозируем спрос на сети, тем более четко понимаем, где за перевозку готовы платить больше. Как правило на основе полученной информации становится понятно как построить цепочку рейсов для каждого вагона, чтобы уменьшить затраты на порожние перемещения.
Ключевая концепция для определения эффектов — идеальная грузовая база
Идеальная грузовая база подразумевает совершенное распределение всех вагонов ПГК по клиентам таким образом, чтобы вагоны все время передвигались и приносили доходы. Например, когда прошел декабрь, мы знаем какой был спрос в декабре. И зная какой был спрос фактически, мы можем вагоны распределить так, чтобы получить больший доход. Единственная проблема в том, что декабрь уже прошел, наши вагоны ездили по‑другому и не заработали так много, как нам хотелось бы.
Идеальная грузовая база — это такой недостижимый ориентир, к которому мы стремимся. Улучшенное прогнозирование спроса и формирование плана продаж потенциально максимально приближают нас к идеальной грузовой базе. То есть в апреле мы делаем прогноз на май и строим план продаж на май, и затем его реализовываем. После того, как май закончится, мы получаем возможность построить идеальную грузовую базу мая и сопоставить ее с тем, что мы планировали еще в апреле. Сравнивая эти грузовые базы, мы видим gap по финансовым показателям между ними. Этот gap и является нашим потенциалом, который может достигать 10–20% прибыли.
В идеальной картине мира, определенно недостижимой, если бы могли знать будущее, наша прогнозная модель имела бы представление, какие объемы спроса будут в следующем месяце. План продаж выстраивался бы в соответствии с идеальной грузовой базой, а gap‑отставания по прибыли были бы равны нулю.
Таким образом, мы подтверждаем, на самом деле, не самый очевидный факт: повышение точности планирования и прогнозирования позволяет компании зарабатывать больше денег.
Чтобы еще лучше понять эту зависимость, можно попробовать определить сколько денег приносит рост точности на 1%. Для этого мы применили эконометрический подход: поиск зависимости между gap‑отставанием по марже между фактом и идеальной грузовой базой, от точности выстроенного плана продаж с помощью регрессионного анализа.
Мы выявляем статистическую зависимость между изменениями точности прогноза и изменениями gap‑отставания от маржи по идеальной грузовой базе в течение последних двух лет. Например, при прогнозе июня 2022 года точность была низкая и мы заработали меньше, чем потенциально могли бы. Но иногда мы достаточно близко подходим к идеальной грузовой базе и практически достигаем максимума.
Конечно отставание по марже от идеальной грузовой базы не определяется одной только точностью плана продаж. Оно также может зависеть от объемов по нашим сервисным контрактам или от текущей обстановки на всей сети. На этом этапе очень важно держать контакт с бизнес экспертами, которые не позволят ошибиться с выделением влияющих факторов, чтобы не искать как число пиратов влияет на глобальное потепление.
Какие подходы работают в прогнозировании спроса на ж/д
Одной из главных задач нашего последнего хакатона было прогнозирование спроса на ж/д перевозки. В результате выявились два кардинально отличающихся подхода.
Первый подход основывался на использовании модели бинарной классификации, которая делает прогноз, будут ли объемы перевозок по направлению или нет. Далее по тем направлениям, по которым модель дала положительный прогноз, предсказывается объем перевозок.
Второй подход заключался в том, чтобы делать прогнозы спроса по всем направлениям и занулять те, по которым по какой‑то причине прогноз был нулевым, либо отрицательным. В принципе и первый и второй подходы достаточно валидные.
Стоит упомянуть, что был еще третий подход, основанный на экспериментах с разного рода эвристиками. По многим направлениям моделям машинного обучения не удавалось подхватывать какие‑то закономерности и дать адекватный прогноз. Здесь эвристические модели показали себя хорошо. Например, можно взять средние объемы за последние три месяца и выдать их как результат прогноза. Если подход еще усложнить, то можно придумать более сложные архитектуры, выбрать для каждой связки «регион направления/регион назначения» свой индивидуальный эвристический подход, который будет давать лучшие прогнозы.
Одна из команд использовала иерархическое прогнозирование. Нашей целью является спрогнозировать сколько конкретно клиент повезет из региона А в регион Б. Для этого нужно сначала спрогнозировать в целом объем по клиенту — сколько он захочет перевезти в следующем месяце. Если клиент — это завод, у которого производственные мощности, как правило, не меняются от месяца к месяцу, то его объемы хорошо прогнозируемы, скорее даже планируемы. Иерархическое прогнозирование классно тем, что достаточно легко можно спрогнозировать объем спроса на ж/д перевозки в целом по клиенту, а следующим уровнем прогнозировать, как этот объем распределится по конкретным направлениям.
Правильной стратегией было бы применение иерархического прогнозирования в связке с эвристическими, регрессионными моделями и бинарной классификацией.
Как мы двигались по пути улучшения результатов
В целом успех работы нашей команды, как и многих других команд, зависит от быстрой обработки гипотез. Бизнесовых идей о том, как можно улучшить прогноз, очень много. В качестве гипотезы может быть утверждение сотрудника коммерческого департамента, что объемы металлургического предприятия можно прогнозировать, ориентируясь на стоимость фьючерса на металл. Также гипотезой может быть добавление технических фичей, которые мы генерим из имеющихся у нас базовых фичей. Все идеи мы записываем в бэклог, и каждую проверяем: строим новый обучающий датасет, либо меняем параметры модели и делаем прогноз. По результатам прогноза выносим решение, есть ли в гипотезе потенциал, или нет. Чтобы не запутаться в большом количестве гипотез, мы используем специальный инструмент — дерево гипотез.
Как сделать так, чтобы прогнозом пользовались
Самое важное во всех ML‑продуктах — сделать так, чтобы люди начали их применять, особенно это касается сегмента В2В, где твоими пользователями являются другие департаменты и подразделения компании.
При прогнозировании спроса на ж/д задача усложняется ручным планированием, когда специалисты сами прогнозировали спрос и считали его достовернее, чем машинный прогноз. Здесь важным является правильное донесение прогноза до бизнес‑пользователей. Например, это может быть BI‑платформа: пользователю достаточно зайти в BI‑инструмент и увидеть в цветных, понятных графиках, таблицах и гистограммах, какой спрос на ж/д услуги будет по конкретному клиенту в следующем месяце, квартале, году.
Однако в BI‑инструментах отсутствует интерфейс для ввода данных. Мы столкнулись с тем, что из‑за присутствия большого количества экзогенных (внешних) факторов, влияющих на результаты прогноза, необходимо специальное приложение, учитывающее эти значения.
Приведу пример необходимости ввода экспертных инсайдов
У клиента в следующем месяце будет производиться внеплановый ремонт одной из печей, из‑за этого объемы выпускаемой продукции уменьшатся. Естественно, ML‑модель об этом знать не может, поэтому подобного рода корректировки бизнес должен иметь возможность вносить сам. BI‑платформа таких интерфейсов ввода данных не предоставляет, поэтому мы разработали собственные дата‑аналитические приложения, написанные на Python с использованием фреймворков.
Концепция приложения заключается в том, чтобы пользователь мог в нужном для себя срезе внести объем, который считает валидным. Это не то же самое, как делать прогноз руками, и разносить по каждому направлению объемы самостоятельно. В приложении пользователь может внести новый объем, на который увеличатся отгрузки в том или ином направлении, и этот объем распределится автоматически.
Заключение
В статье я затронул три основных блока работ нашей аналитической команды:
Определение экономического эффекта от использования продукта;
Формирование и управление гипотезами для повышения точности прогнозов;
Работа с пользователями продукта.
Статья написана совместно с моим коллегой — Шамилем Мусиным (@Musin_Shamil). Если будет интересно подробнее обсудить любой из этих блоков — рад буду пообщаться в телеграм @lzverev.