Принцип работы
Коллаборативная фильтрация опирается на один ключевой инсайт: люди со схожим прошлым поведением имеют схожие вкусы. Если пользователи 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-компонента.