bbawtm / recsys-course-spring-2024-hw2

HW2 – RecSys VKEducation course

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Рекомендательные Системы в Продакшене

О Курсе

Курс посвящен реально работающим рекомендательным сервисам. Они помогают нам находить друзей в социальных сетях, заказывать вкусную еду или выбрать сериал на вечер. А мы знаем о них слишком мало. Настало время это исправить!

В рамках этого курса мы расскажем, как рекомендательные системы выбирают лучшее персонально для вас и какие данные им для этого нужны. Обсудим перспективные направления (диплернинг!) и проблемы, которые есть у современных рекомендеров. В отличие от других курсов по рекомендациям, мы не ограничимся только моделями машинного обучения и метриками. Мы углубимся в вопросы бизнеса, архитектуры боевых рекомендеров и поддержание долгосрочного здоровья рекомендательных систем. А на практической части вы напишете свой музыкальный рекомендер, который будет максимально похож на боевой.

Что нужно знать до начала курса

Базовая математика

  • Операции над векторами и матрицами.
  • Дифференцирование и нахождение минимумов функций.
  • Базовые алгоритмы и структуры данных.

Основы машинного обучения

  • Постановка задачи ML, классические алгоритмы.
  • Базовое представление о том как работают современные нейронные сети.

Технические скиллы

  • Знание языка python.
  • Знакомство с архитектурой высоконагруженных сервисов (БД + Big Data).
  • Умение писать простые запросы на PySpark.
  • Знакомство с Docker, умение запустить контейнер.
  • Умение пользоваться git.

Если вы не знакомы с какими-то из перечисленных тем, то можно будет наверстать самостоятельно по мере прохождения курса. На семинарах мы стараемся всем помогать, но мы не сможем уделять этому много времени. Поэтому при изучении тем из этого пункта рассчитывайте в основном на себя.

Лекции

Программа курса и слайды лекций лежат в папке slides.

Практика

Практическая часть курса построена вокруг музыкального рекомендера botify. На семинарах и в домашках мы будем развивать и анализировать этот рекомендер.

Prerequisites

  • Установить docker
  • Сделать virtualenv c python (я использую версию 3.7)
  • Вспомнить как пользоваться вашей любимой средой разработки (я использую PyCharm)

Общее описание задачи

Пользователи приходят в музыкальный сервис botify, чтобы послушать музыку. Сперва пользователь сам выбирает начальный трек. Когда пользователь прослушал этот трек, сервис рекомендует следующий. Пользователь может послушать рекомендованный трек или скипнуть его и перейти к следующему. Либо пользователю может надоесть и он уйдет. Как поступит пользователь зависит от качества рекомендаций: если они плохие - пользователь быстро уйдет; если хорошие – "залипнет". Последовательность прослушанных пользователем треков мы будем называть "сессией". На диаграмме ниже показан процесс одной сессии.

Взаимодействие пользователя с рекомендером botify

Цель сервиса botify – максимально долго удерживать пользователя. Возможно, мы зарабатываем на рекламе или просто хотим набрать аудиторию. Сервис меряет процент прослушки каждого трека из сессии и суммирует эти проценты, чтобы получить общую длину сессии (пренебрегаем тем, что треки могут длиться разное время – обычно песни длятся около 3 минут). Качество рекомендаций напрямую влияет на то, сколько треков послушают пользователи и какой будет процент их прослушки. Следовательно качество рекомендаций влияет на длину сессии и на успех всего сервиса в целом.

Что есть в репозитории

botify

В этом модуле лежит заготовка сервиса рекомендера. В рамках заданий работать нужно будет над кодом из этого модуля.

Описание и инструкции

sim

Так как наш рекомендер учебный, он не развернут для реальных пользователей. Но мы хотим экспериментировать с рекомендером как с настоящим. Для этого в модуле sim реализован симулятор пользователя. Запуская симулятор, мы генерируем трафик, похожий на трафик, который генерируют реальные пользователи.

Описание и инструкции

jupyter

Ноутбуки с подготовкой данных для симулятора, визуализацией и всем таким.

About

HW2 – RecSys VKEducation course


Languages

Language:Jupyter Notebook 83.4%Language:TeX 13.9%Language:Python 2.7%Language:Dockerfile 0.0%