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

Baseline для рекомендаций в корзине через item-item co-occurrence

Нужно сделать рекомендации товаров в блоке корзины: 10 млн пользователей и 100 тыс. товаров. Как построить простой baseline через совместные покупки?

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

Baseline: считать item-item co-occurrence по заказам/сессиям, хранить top-N соседей на товар, для корзины агрегировать соседей товаров из корзины, исключать уже добавленные и сортировать по score.

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

Для первого решения не нужен сложный персонализированный ranker. Можно взять историю покупок и посчитать, какие товары часто встречаются вместе в одном заказе, в одной сессии или в коротком временном окне.

На offline этапе строим sparse item-item matrix или top-N neighbors per item: score может быть count, lift, PMI, cosine over item vectors или normalized co-occurrence. На online этапе берем товары из корзины, достаем соседей для каждого, агрегируем scores, выкидываем уже добавленные товары и показываем top-K.

Обязательно нужны freshness и ограничения: пересчет раз в день/несколько часов, фильтр availability, stock, price, category, business rules и fallback на popular/top sellers, если соседей мало.

Теория

Item-item co-occurrence — сильный baseline для cart recommendations, потому что текущая корзина уже содержит intent пользователя.

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

  • Начать с тяжелой персонализации без простого baseline.
  • Считать полную dense matrix 100k x 100k без sparse top-N хранения.
  • Не исключить товары, которые уже есть в корзине.

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

  • Произнеси "sparse top-N per item", а не полную матрицу.
  • Добавь availability и fallback.