Skip to content

Post recommendation system using CatBoost, BERT embeddings, and dimensionality reduction

Notifications You must be signed in to change notification settings

onoykomary/final_project_KKstartML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

final_project_KKstartML

Post recommendation system using CatBoost, BERT embeddings, and dimensionality reduction

Описание проблемы и постановка задачи

Этот проект направлен на создание рекомендательной системы для социальной сети студентов karpov.courses. Вместо случайной ленты постов пользователи будут получать персонализированные рекомендации на основе индивидуальных характеристик, прошлой активности и содержимого самих постов. С точки зрения разработки необходимо реализовать сервис, который будет для каждого юзера в любой момент времени возвращать посты, которые наиболее вероятно ему понравятся.

Допущения

  1. Набор пользователей фиксирован, и новых добавляться не будет.
  2. Чекер будет проверять модель в рамках того же временного периода, что и в базе данных.

Требования

  1. Формат запроса\ответа:

Формат запроса:

Название поля Описание
id ID user’а для которого запрашиваются посты
time Объект типа datetime: datetime.datetime(year=2021, month=1, day=3, hour=14)
limit Количество постов для юзера

Формат ответа:

Название поля Описание
id ID user’а для которого запрашиваются посты
text Текстовое содержание поста
topic Основная тематика
  1. Сервис должен работать быстро: < 0.5 сек/запрос, использовать < 4 ГБ памяти.
  2. Модели не обучаются заново при использовании сервисов. Код должен импортировать уже обученную модель и применять её.

Этапы решения и метрики

Задание состоит из двух независимых этапов, каждый из которых оценивается по метрике HitRate@5:

  1. Классическое ML-решение

    • Используются алгоритмы машинного обучения и feature engineering
    • Требуемое качество: HitRate@5 > 0.52
    • Достигнутое качество: 0.597
  2. Улучшение имеющегося решениия с помощью Deep Learning-подхода

    • Обязательное применение нейронных сетей
    • Требуемое качество: HitRate@5 > 0.57
    • Достигнутое качество: 0.604

Дополнительно: Реализация разбиения пользователей на контрольную и тестовую группы для проведения A/B-тестирования

Сервис должен:

  • Поддерживать использование двух различных моделей рекомендаций
  • Автоматически разбивать пользователей на контрольную и тестовую группы
  • Залоггировать, какая модель была использована

Описание данных

Таблица user_data

Название поля Описание
user_id Уникальный идентификатор пользователя
age Возраст пользователя (указан в профиле)
city Город пользователя (указан в профиле)
country Страна пользователя (указана в профиле)
gender Пол пользователя
os Операционная система устройства, с которого осуществляется вход в соцсеть
source Источник трафика: органический или реклама
exp_group Экспериментальная группа, к которой принадлежит пользователь (зашифрованная категория)

Таблица post_text_df

Название поля Описание
id Уникальный идентификатор поста
text Текстовое содержание поста
topic Основная тематика

Таблица feed_data

Название поля Описание
timestamp Время, когда был произведен просмотр
user_id id пользователя, который совершил просмотр
post_id id просмотренного поста
action Тип действия: просмотр или лайк
target 1 у просмотров, если почти сразу после просмотра был совершен лайк, иначе 0. У действий like пропущенное значение.

About

Post recommendation system using CatBoost, BERT embeddings, and dimensionality reduction

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published