Курс посвящен реально работающим рекомендательным сервисам. Они помогают нам находить друзей в социальных сетях, заказывать вкусную еду или выбрать сериал на вечер. А мы знаем о них слишком мало. Настало время это исправить!
В рамках этого курса мы расскажем, как рекомендательные системы выбирают лучшее персонально для вас и какие данные им для этого нужны. Обсудим перспективные направления (диплернинг!) и проблемы, которые есть у современных рекомендеров. В отличие от других курсов по рекомендациям, мы не ограничимся только моделями машинного обучения и метриками. Мы углубимся в вопросы бизнеса, архитектуры боевых рекомендеров и поддержание долгосрочного здоровья рекомендательных систем. А на практической части вы напишете свой музыкальный рекомендер, который будет максимально похож на боевой.
- Операции над векторами и матрицами.
- Дифференцирование и нахождение минимумов функций.
- Базовые алгоритмы и структуры данных.
- Постановка задачи ML, классические алгоритмы.
- Базовое представление о том как работают современные нейронные сети.
- Знание языка python.
- Знакомство с архитектурой высоконагруженных сервисов (БД + Big Data).
- Умение писать простые запросы на PySpark.
- Знакомство с Docker, умение запустить контейнер.
- Умение пользоваться git.
Если вы не знакомы с какими-то из перечисленных тем, то можно будет наверстать самостоятельно по мере прохождения курса. На семинарах мы стараемся всем помогать, но мы не сможем уделять этому много времени. Поэтому при изучении тем из этого пункта рассчитывайте в основном на себя.
Программа курса и слайды лекций лежат в папке slides.
Практическая часть курса построена вокруг музыкального рекомендера botify. На семинарах и в домашках мы будем развивать и анализировать этот рекомендер.
- Установить docker
- Сделать virtualenv c python (я использую версию 3.7)
- Вспомнить как пользоваться вашей любимой средой разработки (я использую PyCharm)
Пользователи приходят в музыкальный сервис botify, чтобы послушать музыку. Сперва пользователь сам выбирает начальный трек. Когда пользователь прослушал этот трек, сервис рекомендует следующий. Пользователь может послушать рекомендованный трек или скипнуть его и перейти к следующему. Либо пользователю может надоесть и он уйдет. Как поступит пользователь зависит от качества рекомендаций: если они плохие - пользователь быстро уйдет; если хорошие – "залипнет". Последовательность прослушанных пользователем треков мы будем называть "сессией". На диаграмме ниже показан процесс одной сессии.
Цель сервиса botify – максимально долго удерживать пользователя. Возможно, мы зарабатываем на рекламе или просто хотим набрать аудиторию. Сервис меряет процент прослушки каждого трека из сессии и суммирует эти проценты, чтобы получить общую длину сессии (пренебрегаем тем, что треки могут длиться разное время – обычно песни длятся около 3 минут). Качество рекомендаций напрямую влияет на то, сколько треков послушают пользователи и какой будет процент их прослушки. Следовательно качество рекомендаций влияет на длину сессии и на успех всего сервиса в целом.
В этом модуле лежит заготовка сервиса рекомендера. В рамках заданий работать нужно будет над кодом из этого модуля.
Так как наш рекомендер учебный, он не развернут для реальных пользователей. Но мы хотим экспериментировать с рекомендером как с настоящим. Для этого в модуле sim реализован симулятор пользователя. Запуская симулятор, мы генерируем трафик, похожий на трафик, который генерируют реальные пользователи.
Ноутбуки с подготовкой данных для симулятора, визуализацией и всем таким.