продавцом является сама Lamoda • Ранняя закупка ассортимента – как правило за 6+ месяцев до старта продаж • Есть только 10% процентов товаров, которые можно дозаказать в течение сезона
FW (Spring/Summer и Fall/Winter) • Товары не переходят из сезона в сезон. Только небольшая часть товаров базового ассортимента (черные футболки, носки и д.р.), также товары без сезональности (косметика, дом) • Товар не продаётся много лет (нет статистики). Мода динамична. Тренды прошлого сезона могут быть не актуальны в новом сезоне • Цель на сезон – распродать бОльшую часть стока с максимальной эффективностью, а для этого нужно оптимальное управление скидками
Устанавливается в рамках отдельного процесса и зависит от закупочной цены и курса для импорта • Цена после скидки (красная цена). Именно этой ценой мы хотим управлять • Цена после купона. Купоны действуют на ограниченный ассортимент или для разных промоактивностей • Скидка в зависимости от уровня лояльности клиента (процента и объёма выкупа)
в зависимости от рыночных условий и уровня спроса • Улучшение качества изменений и как следствие – увеличение прибыли • Оптимизация запасов, минимизируя затраты на хранение • Автоматизация процессов, освобождает время сотрудников для более важных задач • Оценка эффекта от изменения цены
целью любого бизнеса является максимизация прибыли. • Увеличение выручки. В зависимости от целей компании, бизнесу может быть необходимо увеличение объема продаж. Получить кэш, навязать конкуренцию или не отстать от рынка. • Распродажа стока (селаут). Важной целью для бизнеса в fashion-индустрии является контроль остатков и их распродажа. • Запасы и логистика. Данные факторы являются ограничением, которые необходимо учитывать при установке цен.
• История продаж • Календарь • Данные о скидках, купонах • Данные о доступности • Атрибуты товаров на данных за 2 года. Уровень будущей скидки является ключевым признаком модели. От него зависит таргет – средние продажи за неделю. 12
скидку в процессе обучения ‘per_float_feature_quantization’: [f'discount:border_count=1024'] ‘feature_weights’: {‘discount’: 1.25} Без этих параметров на графике видно, что скидка учитывается более дискретно. Сохраняя паттерн управления скидкой человеком. 13
словами f(x)’ ≥ 0 ‘monotone_constraints’: {‘discount’: 1} Пик продаж большей части ассортимента приходится на начало сезона при низких уровнях скидок (это формирует ложное представление о зависимостях между скидкой и продажами) 14
количестве событий в заданном интервале времени, гамма-распределение сосредоточено на временных промежутках между этими событиями. 'loss_function': ‘Tweedie:variance_power=1.35' 15
монотонность 2. Монотонность (нет гарантий даже при настройке параметров CatBoost) 3. Проблема с объемом данных (81 точка на каждый товар при шаге скидки в 1%) 4. Гладкая непрерывная функция 5. Простота прогноза по формуле (в функциональном виде) 1 2 17
или РРЦ (рекомендованная розничная цена) 2. Ограничение на маржу каждого товара 3. Ограничение на шаг скидки за 1 раз 4. Ограничение на частоту изменения кидки 5. Запрет на скидки от 1 до 9% 6. Не ставить скидки на новинки 7. Не ставить цены на оффлайн ассортимент
В классе реализован метод forward для расчета функции потерь и метод backward для оптимизации скидок. Оптимизатор Adam. Все дополнительные ограничения внесены в данный класс и результаты оптимизации не требуют дальнейшей постобработки. В целевую функцию входят 2 критерия: 1. constraint_criteria = 𝑭 (цель по продажам – продажи, цель по выручке – выручка, …). Чем больше отклонение от целевых значений, тем больше критерий ограничений 2. maximization_criteria = 𝑭 (продажи, выручка, прибыль). Чем больше ключевые метрики, тем больше критерий максимизации. Если отклонение от целевых значений слишком большое, то maximization_criteria = 0 Целевая функция: loss = - maximization_criteria + constraint_criteria
нескольким причинам: 1. Ценовая дискриминация клиентов. Есть обходной путь с созданием акций на список пользователей (так делают наши конкуренты), но это работает только для зарегистрированных клиентов 2. Сложности с IT-инфраструктурой, цену используют множество сервисов. И доработки в них сильно затянут процесс внедрения 3. Варианты теста остаются зависимыми через общий сток
на основе совпадающих характеристик: • запасы • цены • история продаж (включая ключевые метрики) • атрибуты • сезональность Тест держим до конца сезона (долгосрочный) Таргетируемся в увеличение прибыли с сохранением продаж и выручки. Иначе говоря, тест должен заработать больше денег на том же объёме продаж
датасета для оптимизации Оптимизация на текущих скидках Отправка на бэкенд данных для оптимизации Распределение товаров по разрезам Применение скидок User Оптимизация по ранее созданным разрезам Hadoop Изменение разреза или добавление Интерфейс готов Оптимизация на бэкенде новой стратегии VM
эффекта от акции (дистилляция эффекта от акции) ◦ персональное промо • Автоследование стратегии с учётом плана продаж (автоприменение) • DL подходы для прогнозирования эластичности • Разработка альтернативных подходов к прогнозу до конца сезона (учёт сезональности) • Работа с данными о конкурентах Дальнейшие шаги
интерфейс управления, планы #1. Продуктовая часть Специфика fashion, взаимодействие с бизнесом, метрики Качественная продуктовая проработка ключ к достижению поставленных целей! Погружение в специфику предметной области увеличивает качество ML-решений! Этап внедрения продукта играет решающую роль в его жизненном цикле!