Как учитывать метрику выручки и стоимости товара при ранжировании
Что проверяют
Умеете ли вы соединить релевантность с деньгами и не сломать при этом поиск. Сначала уточните, что значит «стоимость»: цена для покупателя или себестоимость. От этого зависит, оптимизируете вы выручку или маржу. Следом почти всегда спрашивают, как проверить, что пользователям не стало хуже.
Как отвечать
Каркас строится вокруг ожидаемой ценности показа:
- декомпозиция: модель предсказывает вероятность клика и покупки, итоговый скор это ожидаемая выручка
P(покупка) * ценаили ожидаемая маржа, где цена заменена на разницу цены и себестоимости; - смешивание: чистая сортировка по ожидаемым деньгам агрессивна, поэтому часто берут
релевантность * ценность^αили линейную смесь. Параметр подбирают офлайн и подтверждают в A/B-тесте; - обучение: в learning to rank (LightGBM с
lambdarank, CatBoost сYetiRank) можно передать веса или градации релевантности, зависящие от выручки. Офлайн смотрят NDCG с денежным gain рядом с обычным; - ограничения: минимальная доля релевантных позиций в топе, разнообразие, правила для рекламы и акций.
Метрики A/B-теста: целевая, например выручка или маржа на поисковую сессию, и защитные: конверсия, CTR, доля сессий без покупки, возвраты. Выручка распределена с тяжёлым хвостом, поэтому тест идёт дольше, а дисперсию снижают через CUPED, значимость проверяют бутстрапом.
Вопрос помечен как поведенческий, так что сильнее всего прозвучит свой кейс: какую формулу смешивания выбрали, что показал тест и что пришлось откатить. Если такого опыта нет, скажите честно и пройдите по каркасу.
Где спотыкаются
Сортируют по цене или марже без вероятности покупки. Дорогие товары, которые никто не берёт, занимают топ, и выручка падает.
Оценивают ранжирование по логам без поправки на позицию: товары наверху кликают просто потому, что они наверху.
Смотрят только краткосрочную выручку. Выдача, набитая дорогим, отпугивает пользователей, и эффект виден через недели, а не за время теста.