Вам предоставлены данные из приложения МТС 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})$$
Cookies help us deliver our services. By using our services, you agree to our use of cookies.