Як побудувати прогноз продажів із точністю до 98%: кейс від Promodo і Stylus
КЛІЄНТ
Stylus ー мультикатегорійний інтернет-магазин, який існує на українському ринку з 2008 року. Наразі під знаком на товари та послуги STYLUS працює п'ять фірмових магазинів, сервісний центр у Києві та більш як 15 точок видачі товарів по Україні.
ЗАДАЧА
- Спрогнозувати кількість транзакцій інтернет-магазину за днями.
- Розрахувати навантаження на кол-центр.
- Розрахувати навантаження на склад і надати дані для логістичного планування.
Вхідні дані
Щоб розрахувати навантаження на менеджерів call-центру і грамотно вибудувати логістику, потрібно було скласти прогноз на наступний місяць у розрізі щоденної кількості транзакцій та звернень до call-центру. А також врахувати, з яких міст надходитимуть замовлення.
Виходячи з прогнозів бренд планував правильно розподілити ресурси, маркетинговий бюджет і заздалегідь ухвалити рішення про наймання нових співробітників.
В eCommerce інструментами веб-аналітики можна виміряти всі бізнес-процеси: від операційних робіт до поведінки користувача на сайті. Але особливо аналітика важлива, коли йдеться про прогнозування даних і логістичне планування.
Рішення
Для прогнозування часових рядів ми використовували скрипти, написані на Python, machine learning та різні моделі прогнозування. Для візуалізації обрали Power BI.
Застосування моделей прогнозу, що ґрунтуються саме на машинному навчанні, замість інтуїтивних методів розрахунку, збільшили точність:
- планування рекламних бюджетів;
- розрахунку навантаження на call-центр;
- планування навантаження на склад і логістику.
Крок #1
Тестовий прогноз
Щоб скласти максимально точний прогноз за кожною цільовою метрикою, ми взяли набір даних із CRM-системи та акаунта Google Analytics за 2 попередніх роки.
Після вивчення цих даних зробили тестові прогнози щодо сеансів і транзакцій на 3 місяці, а також на 2 роки, відстеживши в такий спосіб усі аномальні періоди, які збільшують похибку під час прогнозування.
Окремо проаналізували ключові компоненти: тренд, тижневу і річну сезонності.
Аналіз трендів показав, що істотне зростання продажів почалося з листопада 2018 й надалі зберігалось на такому ж рівні.
За графіками тижневої та річної сезонності вдалось виявити період зростання та спаду кількості транзакцій.
У підсумку налаштували моделі та побудували прогноз, який дав розуміння можливої кількості транзакцій у розрізі місяця. За такого підходу похибка становила лише 10-15%, але для розв'язання завдань бренду ми вирішили досягти точніших показників, оскільки потрібні були дані в розрізі кожного дня.
Крок #2
Досягнення точніших показників за транзакціями
Ми вдосконалили моделі прогнозування та створили словник з усіма святами й періодами підвищеного попиту (Back to school, Black Friday, презентація Apple тощо).
Таким чином вдалося виявити ще одну закономірність 一 на різкі зміни тренду впливали саме акції, запущені до періодів високого попиту. При цьому на тижневій і річній сезонності цей факт практично ніяк не позначився.
Крім того, ми виключили зі звіту аномальні періоди («падіння» сервера, перебої в роботі лічильника Google Analytics), які впливали на точність результатів.
Після впровадження всіх доповнень нам вдалося побудувати детальний прогноз за кількістю транзакцій на кожен день з похибкою всього ~8%, а в розрізі місяця досягти ~2-5%.
Відсоток похибки прогнозу зростає зі збільшенням прогнозованого періоду. Якщо він понад 3 місяці 一 точність падає експоненціально до 80-50%.
Крок #3
Прогнозування логістики
Розподіливши замовлення за містами ми спрогнозували загальну кількість замовлень. Додатково створили словник населених пунктів за областями.
За деякими з населених пунктів даних було недостатньо, тому ми об'єднали такі міста в окрему вибірку «Всі інші міста».
Крок #4
Візуалізація отриманих даних
Для поліпшення сприйняття всі дані щодо прогнозованих транзакцій, дзвінків і замовлень ми вивантажили в Power Bi та представили їх команді Stylus у вигляді інтерактивних дашбордів.
Результати
Досягти високих показників точності вдалось завдяки:
- наявності достатнього обсягу навчальної вибірки (історичні дані за 2 роки за потрібними метриками);
- наявності від 50 значень певної метрики за одиницю часу (годину, день, місяць);
- досить високого рівня дисперсії (нестабільності метрики).
Що далі?
- Автоматизація моделей прогнозування для отримання та оновлення даних автоматично.
- Застосовування моделі для інших метрик (кількості користувачів, кількості оплат).