Ends in 6 months
170 participants
806 submissions

RecSys Course Competition

Вам предоставлены данные из приложения МТС Kion по взаимодействиям пользователей с контентом за период 6 месяцев.
В отдельных файлах есть:

  • факты просмотра контента пользователями
  • описание контента
  • описание пользователей

Что нужно сделать?

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

Как сделать предсказание (сабмит)?

Примеры базовых моделей и создания сабмита вы сможете найти в ноутбуке RecSys notebook Baseline.ipynb.

Пример сабмита вы найдете в файле под названием sample_submission.csv.
Это id пользователей, для которых сделаны предсказания контента, максимально совпадающие с реальными фильмами/сериалами, с которыми пользователи взаимодействовали за 7 дней теста.

Формат файла sample_submission.csv:
Id - список ID пользователей, по которым нужно сделать прогноз
Predicted - список ID контента, отсортированного по релевантности, которые нужно предсказать. Это строка, где разделитель для ID - это запятая.

Формат сабмита

Ваш submission.csv - должен содержать 2 столбца: Id and Predicted.
Ограничения:

  • В сабмите должны присутствовать все пользователи тестовой выборки
  • Количество item_id должно быть 10
  • Они должны быть отсортированы по убыванию релевантности для пользователя.

Для каждого пользователя должно быть предсказано 10 различных объектов. Не должно быть пропущенных пользователей.

Метрика качества

Метрика качества в соревновании - map@10 (Mean Average Precision at 10). Разберем, как именно она считается, поэтапно.

Precision at K (p@K)

Точность модели на K рекомендованных элементах.

$$p@K = \frac{\text{Количество релевантных объектов}}{\text{Количество рекомендаций}} = \frac{TP}{K} $$
TP - совпадение рекомендации модели и объекта, с которым пользователь действительно провзаимодействовал

Average precision at K или ap@K

Precision at K (p@K) - метрика простая для понимания и реализации, но имеет важный недостаток — она не учитывает порядок элементов в «топе». Так, если из десяти элементов мы угадали только один, то не важно на каком месте он был: на первом, или на последнем, — в любом случае p@10 = 0.1. При этом очевидно, что первый вариант гораздо лучше.

Этот недостаток нивелирует метрика ранжирования average precision at K (ap@K), которая равна сумме p@k по индексам k от 1 до K только для релевантных элементов, деленному на количество релевантных айтемов:

$$AP@K(user) = \frac{1}{c_{user}}\displaystyle\sum_{i=1}^{K} Precition@i * rel_{i}$$

N - кол-во пользователей
 \(с_{user}\) - кол-во релевантных объектов у пользователя
 \(rel_{i}\)  - релевантность i-ой рекомендации (индикатор, равный 1, если рекомендованный айтем с рангом i релевантен, и 0 в противном случае)

Mean average precision at K (map@K)

В p@K и ap@K качество ранжирования оценивается для отдельно взятого объекта пользователя. На практике пользователей, для которых мы что-то рекомендуем, много. Идея map@K заключается в том, чтобы посчитать ap@K для каждого пользователя из N и усреднить:

$$MAP@K = \frac{1}{N}\displaystyle\sum_{i=1}^{N} AP@K(user_{i})$$