Рекомендательные системы становятся все более популярными в онлайн-ритейле благодаря своей способности предлагать персонализированный опыт определенным пользователям. Mean Average Precision at K [именованная средняя точность на К-элементах] (MAP@K) обычно является наиболее предпочтительной метрикой для оценки производительности рекомендательных систем. Однако использование дополнительных диагностических показателей и визуализаций может дать более глубокое и иногда весьма необычное представление о работе модели. В данной статье рассматриваются метрики Mean Average Recall at K (MAR@K), Coverage, Personalization и Intra-list Similarity, и на их основе проводится сравнение трех простых рекомендательных систем.
Если вы хотите использовать любую из метрик или графиков, рассмотренных в этой статье, я сделала их доступными в библиотеке python recmetrics.
$ pip install recmetrics
Датасет Movielens
Данные, используемые в этом примере, представляют собой популярный датасет Movielens 20m. Они содержат рейтинги фильмов, выставленные пользователями, а также теги жанров. (Для сокращения времени обучения объем этих данных был уменьшен, и они включали только оценки пользователей, которые проанализировали более 1000 фильмов, а результаты с рейтингом менее 3 звезд были удалены).
Пример пользовательского рейтинга фильмов
Модели
Были протестированы и сопоставлены три различные рекомендательные системы.
Случайный рекомендатель (рекомендует 10 случайных фильмов каждому пользователю)
Популярный рекомендатель (рекомендует 10 самых популярных фильмов каждому пользователю)
Коллаборативный фильтр (метод матричной факторизации с использованием SVD)
Давайте углубимся в метрики и диагностические графики, а затем проведем сравнение этих моделей!
График "длинный хвост" (Long Tail Plot)
Я люблю начинать каждый рекомендательный проект с просмотра графика "длинного хвоста". Он используется для изучения закономерностей популярности в данных о user-item интеракции (взаимодействие пользователя с элементом), таких как клики, рейтинги или покупки. Как правило, только небольшой процент элементов имеет большой объем взаимодействий, и это называется "головой". Большинство элементов находятся в "длинном хвосте", но их доля среди общего числа интеракций невелика.
Поскольку обучающие данные включают в себя множество результатов наблюдений за популярными элементами, для рекомендательной системы не составит труда научиться точно их предсказывать. В датасете фильмов самые популярные - это блокбастеры и классика. Большинству пользователей эти фильмы уже хорошо известны, и поэтому рекомендации по ним не смогут надлежащим образом удовлетворить их индивидуальные потребности или помочь обнаружить новые, подходящие варианты. Релевантные рекомендации определены в качестве рекомендаций элементов, которые пользователь положительно оценил в тестовых данных. Указанные здесь метрики обеспечивают методы оценки как релевантности, так и практической пользы рекомендаций.
MAP@K и MAR@K
Рекомендательная система обычно составляет упорядоченный список рекомендаций для каждого пользователя в тестовом наборе. MAP@K дает представление о том, насколько релевантен список рекомендуемых элементов, в то время как MAR@K — о том, насколько хорошо рекомендатель способен вспомнить все те элементы, которые пользователь положительно оценил в тестовом наборе. Я не буду подробно останавливаться на описании MAP@K и MAR@K, его можно найти здесь: Mean Average Precision (MAP) For Recommender Systems.
MAP@K доступен в библиотеке ml_metrics, а MAR@K я сделала доступным в recmetrics.
Покрытие (Coverage)
Покрытие — это процент элементов обучающих данных, которые модель может рекомендовать для набора тестов. В данном примере рекомендатель популярности имеет покрытие всего 0,05%, поскольку он всегда рекомендует только 10 элементов. Как и ожидалось, случайная рекомендация имеет почти 100% покрытие. Удивительно, но коллаборативный фильтр способен рекомендовать только 8,42% элементов, на которых он был обучен.
Персонализация (Personalization)
Персонализация — это отличный способ оценить, рекомендует ли модель одни и те же элементы разным пользователям. Это несходство (1- косинусное сходство) между списками рекомендаций пользователю. О том, как рассчитывается персонализация, лучше всего проиллюстрировано на примере.
Высокий показатель персонализации указывает на то, что рекомендации пользователям отличаются друг от друга. Это означает, что модель предлагает индивидуальный подход для каждого пользователя.
Сходство внутри списка (Intra-list Similarity)
Сходство внутри списка — это среднее косинусное сходство всех элементов в списке рекомендаций. Здесь для вычисления сходства используются характеристики рекомендуемых элементов (например, жанр фильма). Этот расчет также лучше всего проиллюстрировать на примере.
Сходство внутри списка может быть рассчитано для каждого пользователя и усреднено для всех пользователей в тестовом наборе, чтобы получить оценку внутрисписочного сходства для модели.
Если рекомендательная система рекомендует отдельным пользователям списки очень похожих элементов (например, предлагаются только романтические фильмы), то сходство внутри списка будет высоким.
Использование правильных обучающих данных
Есть несколько вещей, которые можно сделать с обучающими данными, чтобы быстро улучшить рекомендательную систему.
Удалить популярные элементы из обучающих данных. (Это подойдет в тех случаях, когда пользователи самостоятельно смогут их найти и, как следствие, не сочтут такие рекомендации полезными).
Масштабировать рейтинги элементов в зависимости от ценности пользователя, например, по средней стоимости транзакции. Это может помочь модели научиться рекомендовать товары, которые приводят к появлению лояльных или наиболее ценных клиентов.
Заключение
Хорошая рекомендательная система дает релевантные и, приносящие практическую пользу, полезные рекомендации. Используя комбинацию нескольких оценочных показателей, можно начать анализ эффективности модели не только по релевантности. Посмотрите мою библиотеку python, если вы хотите использовать эти метрики и графики для оценки своих собственных рекомендательных систем.
Приглашаем всех желающих на открытое занятие «Рекомендательная система: как рекомендовать визуально похожие товары». На этом уроке вы узнаете, как сделать векторное представление изображений, поработаем с нейросетями компьютерного зрения, поищем похожие по фото объекты — украшения, предметы одежды. Обсудим, как это технически организовать для целей рекомендательной системы.
В результате вы узнаете, как работать с глубокими нейросетями компьютерного зрения, как готовить изображения для обработки, как сделать рекомендательную систему на основе похожих изображений.