К тренажеру
ВопросMediummlsd-recsysРеальный собес

Как учитывать категории и комплементарность в корзине

Если пользователь добавил кольцо, стоит ли рекомендовать еще кольца? Как сформулировать цель и ограничения для рекомендаций в корзине?

Короткий ответ

Для корзины часто нужны complements, а не substitutes. Нужно добавить category/business constraints: не повторять уже представленную категорию, рекомендовать совместимые категории и контролировать diversity.

Полный разбор

Цель блока в корзине обычно не "показать похожее", а увеличить чек и полезность заказа. Поэтому если в корзине кольцо, второе кольцо может быть менее полезно, чем серьги, браслет или уходовый аксессуар, в зависимости от домена.

Это можно учесть на candidate generation или reranking. В генерации строим item-to-item neighbors с учетом complementary categories. В ранжировании добавляем признаки: category of cart items, candidate category, category compatibility, price ratio, material, style, occasion. После ранжирования применяем diversity constraints.

Важно обсуждать business rules и availability: нельзя рекомендовать отсутствующие товары, несовместимые пары, слишком дорогие/дешевые outliers без причины. Метрики: add-to-cart, conversion, AOV/GMV, diversity, repeated category rate, complaints/negative feedback.

Теория

В RecSys похожесть и комплементарность — разные цели. В корзине often complements matter more than nearest substitutes.

Типичные ошибки

  • Оптимизировать только item similarity.
  • Не определить цель блока рекомендаций.
  • Не обсудить category constraints и diversity.

Как отвечать на собеседовании

  • Сначала спроси: хотим substitutes или complements?
  • Приведи пример с корзиной и категориями.