Оглавление

  1. Введение
  2. Бизнес-проблема
  3. Существующие решения
  4. Исследовательский анализ данных
  5. Обработка дисбаланса классов
  6. Разработка функций
  7. Показатели эффективности
  8. Моделирование и оценка
  9. Ссылки

1. Введение:

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

2. Бизнес-задача:

Отложенный заказ — это заказ на товар или услугу, который не может быть выполнен в настоящее время из-за отсутствия доступного предложения. Это также указывает на то, что компания не может удовлетворить спрос на товар или услугу, что может привести к потере клиентов или заказов на продажу.

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

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

Формулировка машинного обучения:

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

Бизнес-ограничения:

  • Нет требований к низкой задержке.
  • Нужен лучший отзыв, чтобы свести к минимуму ложноотрицательные результаты.

3. Существующие решения

Упомянутая бумага:

  1. Прогнозирование невыполненных заказов материалов в управлении запасами с использованием машинного обучения:

https://www.researchgate.net/publication/319553365_Predicting_Material_Backorders_in_Inventory_Management_using_Machine_Learning

В этой статье они использовали некоторые методы выборки для преодоления несбалансированных данных. Они использовали случайную недостаточную выборку и SMOTE (метод передискретизации). Поскольку это несбалансированные данные, они использовали кривую ROC AUC и кривую Precision-recall AUC для показателей производительности для оценки моделей.

Они использовали различные алгоритмы машинного обучения, такие как логистическая регрессия, дерево решений, случайный лес, GBDT и благгинг (BLAG) (специальное ансамблевое обучение, которое сочетает в себе случайную недостаточную выборку и ансамблевое обучение), для настройки гиперпараметров используется 5-кратная перекрестная проверка.

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

2. Модель прогнозирования невыполненных заказов продукта с использованием рекуррентной нейронной сети

https://irejournals.com/formatedpaper/1702592.pdf

В этой статье предлагается модель прогнозирования с использованием рекуррентных нейронных сетей (RNN). Они предварительно обрабатывают данные, используя скаляр Min-Max. Они также использовали 3 метода выборки для обработки данных о дисбалансе: ADASYN, SMOTE и случайную неполную выборку.

Они использовали 2 набора данных, один без выборки набора данных, а другой с выборкой, при этом выборка снова была разделена на 3 набора данных, поскольку они использовали ADASYN, SMOTE и случайную неполную выборку.

Они использовали RNN для вышеуказанных наборов данных и заметили, что ADASYN +RNN работает лучше, чем другие, с точностью, отзывом и оценкой F1 в качестве показателей производительности.

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

https://journalofbigdata.springeropen.com/articles/10.1186/s40537-020-00345-2#article-info

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

Они использовали алгоритмы Random forest и Gradient Boosting для легко интерпретируемых результатов.

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

4. Исследовательский анализ данных

Анализ столбца набора данных:

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

Описание данных:

  • sku: единица хранения, идентификатор продукта.
  • national_inv: текущий уровень запасов детали.
  • lead_time: время доставки продукта (если доступно).
  • in_transit_qty — количество товара в пути от источника.
  • forecast_3_month: прогноз продаж на следующие 3 месяца.
  • forecast_6_month: прогноз продаж на следующие 6 месяцев.
  • forecast_9_month: прогноз продаж на следующие 9 месяцев.
  • sales_1_month: объем продаж за предыдущий 1 месяц.
  • sales_3_month: объем продаж за предыдущие 3 месяца.
  • sales_6_month: объем продаж за предыдущие 6 месяцев.
  • sales_9_month: объем продаж за предыдущие 9 месяцев.
  • min_bank: минимальная рекомендуемая сумма на складе.
  • potential_issue: Исходная проблема для выявленной части
  • pieces_past_due: просроченные детали из источника
  • perf_6_month_avg: Исходная эффективность за предыдущий 6-месячный период.
  • perf_12_month_avg: исходная эффективность за предыдущий 12-месячный период.
  • local_bo_qty: количество просроченных заказов на акции.
  • deck_risk: флаг риска детали
  • oe_constraint: флаг риска части
  • ppap_risk: флаг риска части
  • stop_auto_buy : флаг частичного риска
  • rev_stop: флаг риска детали
  • went_on_backorder: Товар был задержан

Всего у нас 23 столбца, из которых 22 независимых, а один — целевая переменная «went_on_backorder». SKU — это уникальный номер, поэтому мы можем удалить столбец.

После удаления уникального столбца SKU у нас есть 15 числовых, 6 категориальных и 1 целевая переменная (двоичная ДА или НЕТ).

Всего в обучающем наборе данных содержится 1687861 точка данных.

У нас есть соотношение целевых бинарных переменных 1:148.

Числовая статистика признаков:

Наблюдения:

  • Большинство признаков имеют среднее значение больше 75-го процентиля и большую разницу между 75-м процентилем и максимальным значением, что указывает на то, что признаки сильно смещены вправо.
  • Столбцы perf_6_month_avg и perf_12_month_avg имеют максимальное значение как 1 и минимальное значение как -99, похоже, что отсутствующие значения указаны как -99.

Коробчатые диаграммы:

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

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

Только 1% данных не равен нулю в функциях «local_bo_qty» и «pieces_past_due.

Категориальные признаки:

Гистограмма:

  • Ясно, что если флаг rev_stop положителен, то для got_on_backorder он отрицателен.
  • Мы можем заметить, что если флаг oe_constriant положителен, то вероятность того, что значение got_to_backorder будет положительным, меньше, чем отрицательное в oe_constriant.
  • Мы можем заметить, что если флаг potency_issue положителен, то вероятность положительного результата в got_to_backorder меньше, чем отрицательного в потенциале_issue.

Матрица корреляции:

  • Характеристики прогноза_3_месяца, прогноза_6_месяца и прогноза_9_месяца сильно коррелированы (от 0,98 до 0,99), поскольку это одни и те же данные, собранные за разный период времени.
  • Характеристики продаж_1_месяц, продаж_3_месяц, продаж_6_месяц и продаж_9_месяц также сильно коррелированы (от 0,82 до 0,92), поскольку это одни и те же данные, собранные за разный период времени.
  • Функция min_bank сильно коррелирует как с продажами, так и с прогнозами, поскольку рекомендуемый минимальный объем запасов связан с продажами.
  • perf_6_month_avg и perf_12_month_avg очень сильно коррелируют (0,97) друг с другом, поскольку они основаны на одних и тех же данных, собранных за разные периоды времени.
  • Функция in_transit_qty сильно коррелирует с продажами, прогнозом и min_bank, так как мы знаем, что увеличение продаж и прогнозов приводит к увеличению запасов и большему количеству заказов тех продуктов, которые могут находиться в пути.

5. Устранение дисбаланса классов

Используя методы SMOTE и ADASYN, мы создаем 2 набора данных, к которым применяем некоторые модели. Мы также можем использовать сбалансированные алгоритмы на основе моделей, такие как BLAG, для обработки дисбаланса классов.

  • Техника передискретизации синтетического меньшинства (SMOTE). Этот SMOTE представляет собой метод передискретизации, при котором создаются искусственные данные на основе сходства пространства признаков между существующими выборками меньшинства. Рассматривая k-ближайших соседей в евклидовом пространстве. Для создания искусственной выборки случайный сосед выбирается из k ближайших выборок меньшинства и умножается на соответствующую разность векторов признаков со случайным числом между [0,1].
  • ADASYN: создает синтетические точки данных для каждой точки данных меньшинства, получая k ближайших соседей и вычисляя значения «ri», чтобы определить доминирование класса большинства в каждом конкретном районе, а затем на основе «ri ” вычисляет количество синтетических данных, которые должны быть сгенерированы для каждого района. Таким образом, создаются более синтетические данные для тех «трудных для изучения» районов.

6. Разработка функций

Обработка категориальных признаков:

Поскольку есть 6 категориальных признаков, которые все двоичные («да» или «нет»), мы можем преобразовать их в числовые, заменив «да» на «1» и «нет» на «0».

Обработка пропущенных значений:

У нас есть много значений NAN в последней строке, поэтому мы можем ее отбросить. У нас также есть несколько NAN/пустых ячеек в столбцах lead_time, perf_6_month_avg и perf_12_month_avg. Использован метод импутации на основе моделей.

из sklearn.experimental import enable_iterative_imputer

из sklearn.impute импортировать IterativeImputer

df = X_train

imp = IterativeImputer (max_iter = 10, verbose = 0)

имп = имп. подходит (X_train)

вмененный_X_train = imp.transform(X_train)

вмененный_X_тест = imp.transform(X_test)

вмененный_X_cv = имп.преобразование (X_cv)

X_train = pd.DataFrame (вмененный_X_train, столбцы = df.columns)

X_test = pd.DataFrame (вмененный_X_test, столбцы = df.columns)

X_cv = pd.DataFrame (вмененный_X_cv, столбцы = df.columns)

Обработка положительной асимметрии в данных:

Преобразование журнала + нормализация:

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

def log_transform (функция):

знак = np.sign (функция [log_columns])

feature[log_columns] = np.log(1.0+abs(feature[log_columns]))*знак

функция возврата

После того, как логарифмическое преобразование применило StandardScaler, с помощью логарифмического преобразования мы уменьшили асимметрию признаков.

7. Показатели производительности

Поскольку набор данных несбалансирован, точность не является хорошей метрикой для оценки моделей классификатора, поэтому мы будем использовать матрицу путаницы и кривую ROC-AUC для лучшей оценки моделей. Нам нужно лучше вспомнить, чтобы свести к минимуму ложные отрицательные значения, которые ложно предсказывают отставание от отрицательного. Нам также нужна большая точность, чтобы избежать большого количества покупок товаров, которые могут отсутствовать в заказах. Поэтому для сравнения мы рассматриваем показатель pr-re AUC.

8. Моделирование и оценка:

Ниже модели настроены на разные гиперпараметры и сравнены.

Как мы видим, BalancedBaggingClassifier (BLAG) показал хорошие результаты по сравнению с другими моделями.

9. Ссылки:



https://www.researchgate.net/publication/319553365_Predicting_Material_Backorders_in_Inventory_Management_using_Machine_Learning

https://irejournals.com/formatedpaper/1702592.pdf



https://machinelearningmastery.com/bagging-and-random-forest-for-imbalanced-classification/

Репозиторий Github для кода: https://github.com/MurthyKatakam/BackOrder_Prediction