Collaborative Filtering
User-based, item-based CF, матричная факторизация (SVD, ALS).
Коллаборативная фильтрация — сила толпы
Загрузка интерактивного виджета...
Идея проста: если тебе и Маше нравятся одни и те же фильмы, то фильм, который Маша посмотрела, а ты ещё нет, скорее всего тебе понравится. Это коллаборативная фильтрация — рекомендации на основе коллективного поведения.
User-based vs Item-based
Два взгляда на одну задачу. User-based: находим похожих пользователей, смотрим что они любят. Item-based: находим похожие айтемы на основе паттернов оценок. На практике item-based стабильнее — айтемы меняются реже, чем вкусы пользователей.
Матричная факторизация — ядро CF
Матрица «пользователь × айтем» огромная и на 99% пустая. Матричная факторизация раскладывает её на две маленькие: пользователи × скрытые факторы и факторы × айтемы. Скрытые факторы — это «вкусы»: любит боевики, предпочитает короткие видео и т.д.
Предсказание = скалярное произведение векторов пользователя и айтема
Netflix Prize — $1M за 10%
SVD и ALS — как обучать
SVD (Singular Value Decomposition) — классическое разложение, но не работает напрямую с пропусками. Для рекомендаций используют модифицированный SVD с регуляризацией или ALS (Alternating Least Squares) — фиксирует одну матрицу, оптимизирует другую, и наоборот.
from implicit.als import AlternatingLeastSquares
model = AlternatingLeastSquares(factors=64, iterations=20)
model.fit(user_item_sparse_matrix)
# Рекомендации для пользователя 42
recs = model.recommend(42, user_item_sparse_matrix[42])BPR — стандарт для неявных данных
BPR (Bayesian Personalized Ranking) — pairwise-подход для неявной обратной связи. Идея: если пользователь кликнул айтем A, но не кликнул B — значит A > B для этого пользователя. Модель учится ранжировать взаимодействия выше невзаимодействий.
BPR-лосс: максимизируем разницу скоров между положительным (i) и отрицательным (j) айтемами
Проблемы CF
- Холодный старт — нет истории = нет рекомендаций
- Разреженность — 99%+ матрицы пустые, мало сигнала
- Популярность — модель скатывается в рекомендации хитов всем подряд
- Масштаб — миллионы пользователей × миллионы айтемов, нужна аппроксимация
Что спрашивают на собесе
🎯 Суть для собеса
Материалы
Разбор user-based и item-based CF с примерами.
Классическая статья Koren, Bell, Volinsky.
Библиотека для прототипирования CF: SVD, KNN, NMF из коробки.
Практический туториал по ALS для implicit feedback на реальных данных Last.fm.
Документация библиотеки Implicit: ALS, BPR, GPU-ускорение. Стандарт индустрии для implicit CF.