Принцип работы

Коллаборативная фильтрация опирается на один ключевой инсайт: люди со схожим прошлым поведением имеют схожие вкусы. Если пользователи A и B купили одни и те же 10 товаров, то товары, купленные A, но не купленные B — хорошая рекомендация для B.

Математически это выражается через матрицу взаимодействий:

          Товар 1  Товар 2  Товар 3  Товар 4
Польз. A     1        1        0        1
Польз. B     1        1        0        ?
Польз. C     0        1        1        1

CF предсказывает: B вероятно купит Товар 4 (как A, с которым B похож).

Две архитектуры CF

Memory-based CF — ищет похожих пользователей/товары напрямую через косинусное сходство или корреляцию Пирсона. Работает для небольших каталогов, не масштабируется на миллионы пользователей.

Model-based CF — обучает модель (матричная факторизация, нейронные сети), которая сжимает матрицу взаимодействий в компактные векторы (латентные факторы). Масштабируется на большие каталоги, работает быстрее при инференсе.

Параметр Memory-based Model-based
Масштабируемость Ограниченная Высокая
Холодный старт Не решает Частично решает
Скорость обучения Нет обучения Требует регулярного переобучения
Объяснимость Высокая («похожи на вас») Низкая (латентные факторы)

Item-based CF на практике

В e-commerce item-based CF предпочтительнее user-based по нескольким причинам:

  • Товаров на несколько порядков меньше, чем пользователей — матрица управляемее
  • Сходство товаров стабильнее во времени: «кофемашина + капсулы» — стабильная пара
  • Не требует поиска похожих пользователей в реальном времени — результаты предрассчитаны

Совет: для блока «Часто покупают вместе» используйте item-based CF по паттернам co-purchase. Для блока «Вам может понравиться» — user-based или model-based с учётом всей истории просмотров.

Ограничения

  • Холодный старт — нет истории = нет рекомендаций. Решение: content-based как fallback.
  • Разреженность матрицы — в крупных каталогах большинство ячеек пусты. Решение: матричная факторизация.
  • Popularity bias — алгоритм склонен рекомендовать популярные товары, игнорируя длинный хвост. Решение: диверсификация, explorative стратегии.
  • Фильтрационный пузырь — пользователь видит только то, что похоже на прошлый опыт. Решение: добавление novelty-компонента.