Найти тему
Властелин машин

Несбывшиеся прогнозы

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

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

-2

также зададим резервы (stock_ser) из части индексов прогнозных значений и новых:

-3

Логика работы реализована в двух функциях refresh_preds_stocks и add_stocks, которые отвечают за обновление прогнозов с учетом остатков и корректировку резервов с учетом их вычета из прогнозов:

-4

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

Получим обновленные прогнозы и сравним с первоначальными:

-5

а вот "уцелевшие" остатки:

-6

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

-7

-8