Как преобразовать предметы в эмбеддинги и рекомендовать на их основе
Что проверяют
Можете ли вы собрать рекомендательную систему целиком: откуда берутся векторы предметов, как по ним быстро искать соседей и как понять, что рекомендации стали лучше. Следом почти всегда спрашивают про холодный старт и метрики ранжирования.
Как отвечать
Разделите ответ на три части: получение векторов, поиск, оценка.
Источники эмбеддингов:
- контентные: вектор из описания, названия, картинки. Текст кодируют sentence-моделью на трансформере, картинки CLIP-подобной моделью. Работают для новых предметов без истории;
- коллаборативные: матричная факторизация (ALS для неявного фидбэка, библиотека
implicit) раскладывает матрицу взаимодействий на векторы пользователей и предметов; - item2vec: word2vec на последовательностях сессий, где предметы играют роль слов. Товары, которые смотрят подряд, оказываются рядом;
- двухбашенная модель: одна башня кодирует пользователя, другая предмет, обучение на кликах с негативным сэмплированием. Стандарт для этапа отбора кандидатов.
Рекомендация: берёте вектор пользователя (или среднее по последним просмотренным предметам) и ищете ближайшие по косинусу. На миллионах предметов полный перебор не годится, нужен приближённый поиск: Faiss, HNSW, pgvector или векторная база. Дальше классическая схема из двух стадий: быстрый отбор сотен кандидатов по векторам, затем ранжирование тяжёлой моделью с признаками, например градиентным бустингом.
Офлайн оценивают метриками ранжирования: Recall@K, NDCG@K, MAP, плюс покрытие каталога и разнообразие. Трейн и тест делят по времени, а не случайно. Финальное решение принимает A/B-тест по бизнес-метрике.
Где спотыкаются
Оценивают рекомендации через accuracy или F1, как классификацию. Для выдачи важен порядок в топе, поэтому нужны метрики на первых K позициях.
Забывают про холодный старт. У нового предмета нет взаимодействий, и коллаборативного вектора для него не существует, нужен контентный запасной вариант.
Делят данные случайно, и модель подсматривает будущее: взаимодействия из завтрашнего дня попадают в обучение, офлайн-метрики радуют, а в проде эффекта нет.