Blog Background

Машинне навчання в ритейлі: що насправді треба враховувати для ефективного прогнозу

Усі хочуть прогнозувати продажі. Але мало хто замислюється над тим, що насправді бачить модель, коли дивиться в дані. Машинне навчання стало must-have для ритейлу: моделі попиту та персоналізовані акції – усе звучить красиво.

Але попри високі очікування, більшість моделей або не приносять відчутного ефекту, або працюють лише в обмеженому середовищі. Це підтверджує і систематичний огляд Why Big Data Projects Fail, згідно з яким понад 80% ініціатив, пов’язаних із великими даними та ML, провалюються. І справа не в слабких алгоритмах чи некомпетентних командах. Просто дуже часто моделі будуються на даних, які не враховують реального контексту.

У цій статті ми розберемо, чому навіть найпросунутіші time series-моделі можуть помилятись у базових речах. І що потрібно враховувати, щоб прогнози справді допомагали ухвалювати рішення замість того, щоби їх імітувати.

Ілюзія даних: чому цифри – це ще не все

Уявімо класичну ситуацію: аналітик отримує таблицю з історичними продажами. Дані щоденні, по кожному SKU, з кількістю одиниць. Формально – це ідеальний time series для прогнозування: все виглядає чисто, логічно та  структуровано.

На цьому етапі найчастіше і починається розробка моделі. І не так важливо, яка для цього використувується time series-архітектура, бо важливо зовсім інше: що саме бачить модель.

А бачить вона, зазвичай, тільки одну грань подій – результат. Продажі.

При цьому вона не знає, що:

  • у частині магазинів у ці дні товару фізично не було на полицях;
  • для деяких SKU діяла тимчасова акція “2 за ціною 1”, про яку нічого не сказано в датасеті;
  • конкурентні товари були відсутні, і це сильно змінило поведінку покупця;
  • товар був переміщений ближче до кас, або отримав банерну підтримку на головній сторінці сайту;
  • змінився код SKU чи упаковка, але в даних це відображено як той самий товар.

З погляду алгоритму усе це просто цифри: був пік, було падіння. Більшість ML-моделей у ритейлі побудовані навколо продажів, і це логічно: саме продажі є фінальним результатом взаємодії товару з покупцем. Але тут і закладена основна помилка: продаж — це наслідок, а не причина. За коливаннями продажів могли стояти обставини, які жодним чином не пов’язані з реальним попитом на продукт.

Модель починає прогнозувати поведінку, яка в реальному світі ніколи не повториться. Тому що вона базується на винятках, а не на закономірностях.

Що важливо враховувати для якісного прогнозу

1. Наявність товару (stock availability)

Якщо товару не було на полиці, логічно, що і продажів не буде. Але це зовсім не означає, що на нього не було попиту, це просто значить, що покупець не мав можливості зробити покупку. І якщо модель “вчиться” на цьому періоді, вона хибно інтерпретує відсутність продажу як відсутність зацікавленності.

Тому в моделі обов’язково має бути повноцінний масив по залишках. Інакше прогноз буде хибним.

2. Промо-активності та знижки

Акції, розпродажі, купони, 2+1, push-повідомлення, банери, нова упаковка – усе це кардинально впливає на споживчу поведінку. Але ці дані часто відсутні або зберігаються окремо від основного датасету.

Без інформації про промо-активності модель буде аналізувати аномалії (різке зростання чи падіння) як звичайні тренди. І прогнозувати їх повторення там, де цього не буде.

3. Категорійний контекст і поведінка конкурентів

Якщо ви аналізуєте конкретний товар – цього недостатньо. Покупець не вибирає в ізоляції. Він бачить кілька альтернатив на полиці (або на сторінці каталогу), і реагує на весь контекст.

Тому треба враховувати:

  • які ще товари були в категорії в цей період;
  • які з них були доступні;
  • чи були на них акції або дефіцит.

Наприклад, якщо конкурент зник з полиці, це могло дати товару короткостроковий приріст. Але модель, яка не знає цього, вирішить, що причина у популярності продукту.

4. Географія, канали і логістика

Той самий товар може продаватися по-різному в залежності від міста, типу магазину, дистрибуційної моделі, глибини полиці, доставки. Усе це важливо.

Наприклад:

  • У Києві товар постачається щодня, у регіонах – раз на тиждень.
  • В одному магазині товар на рівні очей, в іншому – внизу полиці.
  • В одній мережі діє push-кампанія, в іншій ні.

5. Фізичні зміни товару (SKU-атрибутика)

Багато моделей не враховують, що SKU – це лише технічний код. А товар, який стоїть на полиці, може змінюватися, не змінюючи коду.

Що може впливати:

  • новий дизайн упаковки;
  • зміна розміру або об’єму;
  • оновлене фото чи назва на сайті;
  • маркування як “новинка” або “топ продажів”.

Як зрозуміти, що ML-модель захворіла: типові симптоми

Навіть без глибокого аудиту можна помітити, що модель поводиться підозріло. Вона не обов’язково не працює в прямому сенсі, але її прогнози не збігаються з реальністю або суперечать здоровому глузду.

Ось кілька ознак, які варто сприймати як сигнали тривоги:

  • Раптові піки або падіння без зрозумілих причин
    Модель прогнозує сплеск, якого не було раніше, або різке падіння, яке нічим не пояснюється. Швидше за все, вона вчиться на випадкових збігах.
  • Занадто згладжені тренди
    Модель боїться ризику і передбачає “середню температуру”. Це ознака того, що вона не бачить причинно-наслідкових зв’язків і працює надто обережно.
  • Низька explainability
    Якщо не можна відповісти на питання: “Чому модель дала саме такий прогноз?”, це проблема. Бізнес-рішення повинні мати під собою логіку.
  • Висока похибка для нових SKU
    Якщо прогноз на знайомі товари ще більш-менш точний, але на нові позиції постійно хибний – це означає, що модель не вміє узагальнювати.
  • Непослідовна реакція на очевидні події
    Наприклад, при запуску великої кампанії прогноз не змінюється. Або, навпаки, модель реагує на кожну дрібницю, як на прорив чи катастрофу.

Порожні полиці – головний ворог машинного навчання

Поговоримо докладніше про один із найтиповіших перекручень у прогнозних моделях: коли модель інтерпретує відсутність продажів як відсутність попиту. Це логічно з погляду цифр, але абсолютно хибно з погляду реального бізнесу.  Нуль продажів – це ще не вирок продукту. Це часто є сигналом, що товар фізично не був доступний покупцю. Проблема в тому, що ML-моделі без врахування залишків не можуть це побачити. А для ухвалення правильних рішень, бізнесу необхідно бачити одночасно два вектори:  Що купують (попит) і що фізично є в наявності (залишки).

Поєднання цих даних дає:

  • Зменшення випадків out-of-stock: коли товару немає в наявності, але попит був;
  • Оптимізацію виробництва: щоб не виробляти зайве і не заморожувати гроші в залишках;
  • Коректні прогнози, бо модель не плутає відсутність товару з відсутністю інтересу до нього;
  • Зниження витрат на утилізацію, надлишки, втрати від нереалізованих промо.

Під час розробки моделі для прогнозування виробництва для компанії Нові Продукти наша команда прямо зіткнулась з ситуацією, коли модель бачила просідання попиту, хоча товару просто не було на полицях у деяких точках. У таких випадках аналітика лише створює ілюзію контролю замість того, щоб давати реальну опору для рішень. Цей момент став критичним у налаштуванні моделі: ми інтегрували дані про залишки, щоб чітко відрізняти реальні коливання попиту від ситуацій, коли просто не було що продавати. Ми підключили повні дані про залишки по SKU, розмежували ситуації, де був попит, але не було товару і змогли покращити точність прогнозу. Це допомогло уникнути надвиробництва, зменшити втрати та приймати обґрунтовані рішення на основі реальних даних.

Декілька слів наостанок

Слабкі моделі дають слабкі прогнози. Але ще гірше, коли сильна модель працює на неповних даних і створює впевненість там, де її не може бути.

Машинне навчання в ритейлі працює тільки тоді, коли модель бачить повну картину. Ніяка архітектура не компенсує відсутність розуміння, що саме стоїть за цифрами. Бо якісний прогноз базується не тільки на самих даних, а і на контексті, з якого ці дані виросли.

Саме так ми підходимо до роботи в IWIS: наші моделі ефективні не в теорії, а в реальних умовах. Якщо хочете дізнатися, як це може працювати у вас –  ми на відстані одного повідомлення.

Наступний пост