«Вам −20%»: заглядываем под капот персональных скидок
Этим постом мы открываем новую рубрику в канале — «Обучено Яндекс Лавкой». В ней наши друзья из команды ML Лавки будут делиться кейсами, как они применяют модели в сервисе, какие задачи решают и какие подходы используют. А иногда — просто рассказывать о своей жизни за пределами работы. Погнали!
Привет, это Ваге Брсоян, руководитель группы экономической эффективности Яндекс Лавки. Если открыть наше приложение, в правом нижнем углу главной страницы может появиться плашка «Вам −20%». При клике пользователь получает персональную подборку из девяти товаров со скидкой. Снаружи это просто маленькая фича. Но внутри — место, где сошлись сразу несколько ML-моделей из разных проектов и довольно много продуктовой чуйки.
Из чего состоит задача
Цель простая — собрать пользователю пачку из девяти товаров со скидкой. Но внутри она делится на прогноз эластичности, ранжирование на конверсию и uplift.
Для начала нужно отобрать кандидатов. Отсекаем то, на чём 20% скидки просто сожгут маржу. Потом добиваем фильтром по эластичности из соседнего проекта: выкидываем товары, на которых скидка всё равно не двигает спрос. До ранжирования доходят только те, на ком есть смысл что-то крутить.
Часть оставшихся кандидатов выкидываем случайно, и подборка немного двигается каждый день. Получается живая витрина, в которую хочется периодически заглядывать. А бонусом встраивается и эксплорейшн: на этих хвостах потом учатся ранкеры.
Дальше включается ранжирующая модель на конверсию. Кандидатов делим на две кучки: что пользователь уже покупал и что нет. У них слишком разная природа «релевантности», чтобы валить в один пул. Ранжируем их отдельно.
В итоговую подборку едут два топа из истории и семь новинок. Пропорция продуктовая: немного знакомого, чтобы зацепить и не выглядеть случайно, и побольше нового, чтобы человек не упирался в свой стандартный чек.
А сверху лежит классическая user-level-uplift-модель
Она появилась не сразу: первая итерация фичи поехала в A/B вообще без неё, и уже на данных этого эксперимента мы обучили uplift поверх. Сейчас она отрезает ≈10% пользователей, которым скидка ничего не двигает. Так мы превращаем «скидку всем» в чуть более таргетированный инструмент, причём ровно на тех данных, которые сама фича и сгенерировала.
Скидка живёт только внутри подборки
Если бы она прилипала к товару насовсем, мы бы спонсировали и тех, кто всё равно бы нашёл этот SKU через обычный поиск или каталог и докинул в корзину сам. А так скидка достаётся только тем, кто реально пришёл через нашу подборку.
Что в итоге
Получился стек, где почти каждый кубик — отдельный ML-проект: эластичность, два ранкера, uplift, продуктовые ограничения по марже, рандомизации и доступности скидок. А качество всей системы зависит как от отдельных частей, так и от того, как они связаны между собой.
Подписывайтесь:
@Yandex4ML
@YandexML
Обсуждение 4
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram