Skip to content

Learned themes: kNN, ALS (implicit), LightFM (FM), ANN (faiss), rectools, recbole, ranking learning

Notifications You must be signed in to change notification settings

Daniil-Solo/itmo-recommender-systems-course

Repository files navigation

Курс по разработке рекомендательных систем

О курсе

  • Университет: ИТМО
  • Авторы курса: крутые специалисты из МТС

Изучаемые темы

  1. Разработка микросервиса с использованием тестов и линтеров
  2. Валидация и метрики в рекомендательных системах
  3. Бейзлайны (популярные айтемы)
  4. Модели, основанные на kNN
  5. Модели, основанные на матричной факторизации: ALS, LightFM
  6. Методы приближенного поиска соседей
  7. Факторизация матриц с помощью нейронных сетей
  8. Двухуровневые модели
  9. Обучение ранжированию

Запуск

Сервис

poetry run uvicorn src.app:app --port 5000

Тесты

poetry run pytest ./tests -W ignore::DeprecationWarning

Линтеры

poetry run pylint src
poetry run flake8 src
poetry run black --check src

Домашние задания

Домашнее задание №1

☑ Написать с нуля сервис с простой моделью

☑ Получить токен и зарегистрировать модель в телеграмм-боте

☑ Добавить аутентификацию и тесты на нее

☑ Предусмотреть, чтобы сервис возвращал 404 ошибку, если задано неверное имя модели и покрыть тестами

☑ Добавить описание возможных ответов в сваггер

☑ Писать чистый и эффективный код, соблюдая PEP8

Домашнее задание №2

☑ Разработать класс для расчёта метрик на основе кросс-валидации

☑ Разработать класс для визуального анализа рекомендаций

☑ Провести тестирование классов в чистом воспроизводимом ноутбуке с использованием:

  • Модели: RandomModel(random_state=32), PopularModel из rectools
  • Метрики: 2 ранжирующие, 2 классификационные, 2 beyond-accuracy для порогов 1, 5, 10. MAP обязательно
  • Сплиттер: TimeRangeSplitter из rectools, 3 фолда для кросс-валидации по неделе, исключение холодных юзеров и айтемов и просмотренных айтемов
  • Визуализация рекомендаций и историй просмотров для юзеров [666262, 672861, 955527]. Для айтемов обязательно отобразить названия, жанры и количество просмотров в датасете

Домашнее задание №3

☑ Рефакторинг модели с семинара

☑ Провести эксперименты с userKnn моделью в ноутбуке:

  • придумать, что делать с холодными пользователями в тесте (3 балла)
  • сделать кол-во рекомендаций равным N, а не меньше N (3 балла)
  • реализовать тюнинг гиперпараметров и сделать выводы (3 балла)

☑ Обернуть модель в сервис (максимум 12 баллов)

  • обучение модели в ноутбуке
  • сохранение артефактов модели
  • загрузка артефактов при старте приложения
  • запрашивание рекомендаций "на лету" из более легкой версии модели

Домашнее задание №4

☑ Создать базовый класс для выдавания популярных рекомендаций холодным пользователям и фильтрации уже просмотренных айтемов у горячих пользователей

☑ Побить метрику на лидерборде map@10 = 0.075 (получено в итоге 0.088) с моделью из lightfm и с использованием ANN (5 баллов)

☑ Реализовать тюнинг гиперпараметров для моделей из implicit, lightfm с использованием Optuna (3 балла)

☑ Воспользоваться методом приближенного поиска соседей для выдачи рекомендаций: Flat и HNSW из библиотеки faiss (3 балла)

☑ Сделать рекомендации для пользователей на основе их фичей (3 балла)

☑ Обернуть модель в сервис и выдавать рекомендации "на лету" (12 баллов)

Домашнее задание №5

☑ DSSM Model:

  • Использовать информацию о качестве взаимодействия юзеров с айтемами для более репрезентативного сэмплирования. (3 балла)
  • Обернуть в сервис, который должен критериям читаемости и воспоизводимости. (5 балла)

☑ Autoencoder:

  • Значимо изменить архитектуру модели (2 балла)
  • Пробить скор бейзлайна разработанной моделью 0.075. (2 балла)
  • Обернуть в сервис, который должен критериям читаемости и воспоизводимости. (5 балла)

☑ Frameworks:

  • Проэкспериментриуйте с различными моделями из выбранного фреймворка(recbole или другие рассмотренные фреймворки), выбрать лучшую. (2 балла)

Домашнее задание №6

☑ Подготовить юпитер-ноутбук с обучением ранкера (6 баллов):

  • Подготовка датасета с кандидатами от ваших прошлых моделей
  • Обучение ранкера
  • Сравнение метрик двухэтапной модели и моделей первого уровня на тестовой выборке

☑ Ранкер умеет работать с холодными пользователями (4 балла):

  • На первом уровне есть модель для холодного старта
  • Всего на первом уровне не менее двух моделей
  • Среди признаков ранкера есть хотя бы один, определяющий холодность пользователя (длина истории просмотров, общее время смотрения или что-либо еще)

☑ Сравнить между собой разные библиотеки (XGBRanker и LGBMRanker) по времени и результатам обучения (2 балла)

☑ Сервис:

  • Добавить в сервис двухэтапную модель (офлайн) (6 баллов)

About

Learned themes: kNN, ALS (implicit), LightFM (FM), ANN (faiss), rectools, recbole, ranking learning

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published