Как использовать коллаборативные методы для рекомендаций на основе эмбеддингов
Что проверяют
Понимаете ли вы идею совместной фильтрации и знаете ли, как она реализуется через векторные представления.
Как отвечать
Суть совместной фильтрации: пользователю нравится то, что понравилось похожим на него пользователям, а похожесть определяется по истории взаимодействий, а не по описанию товара.
В векторном виде это выглядит так: пользователи и товары раскладываются в одном пространстве, оценка близости это скалярное произведение векторов. Обучение идёт на матрице взаимодействий:
- матричное разложение (ALS, SVD) как классика для явных оценок;
- неявная обратная связь (клики, просмотры, покупки) требует своего подхода: отсутствие взаимодействия это не отрицательная оценка, а неизвестность, поэтому используют взвешивание уверенности и отрицательные примеры подбирают выборкой;
- нейросетевые варианты: две башни, где одна кодирует пользователя, другая товар, обучение с примерами-негативами;
- последовательные модели учитывают порядок действий, а не только факт.
Практическая часть, которая и отличает опыт от теории:
- быстрый поиск ближайших: миллионы товаров перебирать нельзя, нужен приблизительный поиск (HNSW, IVF) в векторном индексе;
- двухэтапная схема: сначала отбор кандидатов векторным поиском, затем ранжирование более тяжёлой моделью с дополнительными признаками;
- холодный старт: для новых пользователей и товаров совместная фильтрация бесполезна, её дополняют контентными признаками (категория, бренд, текст);
- обновление: эмбеддинги пересчитываются регулярно, а свежие действия учитываются онлайн;
- оценка: офлайн смотрят на попадание в топ и ранговые метрики, но решение принимают по A/B-тесту.
Где спотыкаются
Обучают модель на неявной обратной связи как на явных оценках и получают перекос к популярным товарам.
Забывают про холодный старт и показывают новым пользователям пустоту.
Меряют качество только офлайн, где выигрывает модель, повторяющая текущую выдачу.