Вам предоставлены данные из приложения МТС 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). Разберем, как именно она считается, поэтапно.
Точность модели на K рекомендованных элементах.
$$p@K = \frac{\text{Количество релевантных объектов}}{\text{Количество рекомендаций}} = \frac{TP}{K} $$
TP - совпадение рекомендации модели и объекта, с которым пользователь действительно провзаимодействовал
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 в противном случае)
В p@K
и ap@K
качество ранжирования оценивается для отдельно взятого объекта пользователя. На практике пользователей, для которых мы что-то рекомендуем, много. Идея map@K
заключается в том, чтобы посчитать ap@K
для каждого пользователя из N и усреднить:
$$MAP@K = \frac{1}{N}\displaystyle\sum_{i=1}^{N} AP@K(user_{i})$$
Our website uses cookies, including web analytics services. By using the website, you consent to the processing of personal data using cookies. You can find out more about the processing of personal data in the Privacy policy