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.