Перейти к содержанию

Изучил «Рекомендательные системы» из курса Hard ML

С сентября 2024 года я работаю в RUTUBE и первая же задача связана с микросервисом рекомендательной системы. С MLOps технологиями проекта у меня явных сложностей нет, но чтобы быть более эффективным в разработке и эксплуатации, я решил изучить теорию.

Эта тема мне всегда была интересна. Впервые о подходах к их реализации я услышал в 2017 году в курсе MITx: 15.071x The Analytics Edge на примере Netflix. Далее были видео от ШАД и команды Яндекс.Дзена с теорией и обширная практика работы в контентном портале, где я подробно изучал рекомендательные системы платформ дистрибуции контента.

Но время идёт, информация забывается, подходы меняются. Поэтому, я решил изучить блок «Рекомендательные системы» из более свежего курса Hard ML.

Это мой конспект данного блока. Содержание дополняется по мере изучения материалов.

А ещё вам могут быть полезны следующие материалы

  1. Как подготовиться и пройти System Design Interview — конспект и анализ выступления Александра Поломодова.
  2. Прочитал и разобрал на молекулы книгу Building Microservices, 2nd Edition - Sam Newman.
  3. ⭐ Мой план обучения: ссылки на книги, курсы, каналы по темам дизайна масштабируемых и надежных ML систем, разработки программного обеспечения на Python, DevOps, MLOps и Data Engineering, SRE.

1. Применение и основные концепции

Problem statement

Дано:

  1. Пользователь u.
  2. Объект рекомендаций i.
  3. rui — релевантность объекта i для пользователя u.

Задача: среди всего множества объектов построить отсортированный список рекомендаций по релевантности для пользователя.

Данные

Когда есть данные о взаимодействии с пользователем → Коллаборативные признаки:

  1. Работают на предположении, что похожим пользователям нравятся похожие объекты и наоборот.
  2. Позволяют легко построить MVP, т.к. не зависят от домена продукта.
  3. Обычно это данные вида user, item, rating, timestamp.

Когда нет данных о взаимодействии с пользователем → Content-based признаки:

  1. Статичные.
  2. Легко интерпретируемые.
  3. Подходят, когда ещё нет информации о взаимодействии пользователей с объектом.
  4. Например: эмбеддинги картинок/текста или другой мета-информации.

Виды реакции от пользователя:

Явная реакция Неявная реакция
Примеры Конверсии: лайки, поставленные оценки Микроконверсии: клики, покупка, пропуск рекомендаций
Точность данных Точные данные о пользователях → реакция менее предвзята Есть неопределённость → данные искажены
Сложность получения Сложно собрать → меньше данных Легко собирать → больше данных

В качестве реакций RecSys системы чаще всего используют неявные реакции из-за большего числа событий.

Архитектура

Большинство компаний используют двухуровневую архитектуру для построения RecSys:

  1. Модели кандидатов оптимизируют recall, то есть повышают вероятность показа хороших объектов.
  2. При этом в финальных рекомендациях важна точность (precision), что и оптимизирует ранжирующая модель.

Video corpus (millions) → Candidate generation (hundreds) + Other candidate sources → Ranking (dozens) → User.

Данная схема удобно масштабируется и позволяет строить рекомендации для миллионов объектов.

Ранжирующая модель использует больше признаков и взвешивает только ~100 кандидатов.

  1. Решаемые проблемы: масштабируемость, свежесть видео, учёт шума в данных.
  2. Поиск кандидатов происходят с помощью логистической регрессии факта просмотра.
  3. Веса для регрессии = время просмотра.

Варианты реализации системы

Для разных продуктов может подходить разный тип системы, в зависимости от задержки построения рекомендаций.

Offline Batch Realtime
Легкие в настройке Баланс между сложностью и скоростью рекомендаций Усложняют дизайн системы
Хорошо подходят для теплых пользователей Хорошо подходят для продуктов, где возможна задержка между взаимодействиями Хорошо подходят для «холодных» пользователей
Можно использовать «тяжелые» алгоритмы Ограниченные ресурсы для «тяжелых» моделей Необходимы простые алгоритмы с задержкой до нескольких секунд

Холодный старт

Холодный старт рекомендаций в E-Commerce:

  1. Рекомендации построены на основе покупок всех посетителей.
  2. Не являются персонализированными.
  3. Важно «зацепить» пользователя, если про него ничего не известно.

Реакция системы на действия пользователя

  1. После просмотра item у пользователя появляется история (контекст).
  2. Фидбэк учитывается через несколько секунд, что позволяет исследовать интересы.
  3. Исследование интересов важно провести на этом этапе, однако пользователю могут не понравиться рекомендации и он уйдет без конверсии.

Что дальше?

  1. Нашли эту статью полезной? Поделитесь ею и помогите распространить знания!
  2. Нашли ошибку или есть идеи 💡 о том, что и как я могу улучшить? Напишите мне в Telegram.
  3. Хотите узнать обо мне больше? Читайте здесь.