рекомендательные системы машинное обучение
Введение в рекомендательные системы
В статье рассматриваются подходы по построению персонализированных товарных и контентных рекомендаций, и возможные кейсы использования.
Персонализированные товарные и контентные рекомендации используются для повышения конверсии, среднего чека и улучшения опыта пользователей.
Пример использования подхода — компании Amazon и Netflix. Amazon начал использовать подход на основе коллаборативной фильтрации в первые годы существования и добился повышения выручки только за счет алгоритма на 10%. Netflix увеличивает количество просматриваемого контента за счет подхода на основе алгоритма рекомендательной системы на 40%. Сейчас, проще назвать компанию, которая не использует подобный подход, чем перечислять всех использующих.
Основной подход решения задачи построения рекомендательных систем — коллаборативная фильтрация.
Идея коллаборативной фильтрации проста – если пользователь совершал покупки товара или просмотры контента, найдем пользователей с похожими вкусами, и порекомендовать нашему клиенту то, что похожие на него люди потребляли, а клиент еще нет. Это User-Based подход.
Рисунок 1 — Матрица товарных предпочтений
Аналогичным образом можно посмотреть на задачу с точки зрения товара, и подобрать комплиментарные товары к корзине клиента, повысив средний чек, или заменив отсутствующих на складе товар на аналог. Это Item-Based подход.
В самом простом случае, используется алгоритм поиска ближайших соседей.
Пример: Если Марии нравится фильм «Титаник» и «Звездные войны», ближайший по вкусам пользователь к ней будет Аня, которая смотрела в дополнении к этим фильмам еще и «Хатико». Давайте порекомендуем Марии фильм «Хатико». Стоит уточнить, что обычно используют не одного ближайшего соседа, а несколько, с усреднением результатов.
Рис.2 Принцип работы алгоритма ближайших соседей
Кажется, все просто, но качество рекомендаций с использованием подобного подхода невелико.
Рассмотрим сложные алгоритмы рекомендательных систем базирующиеся на свойстве матриц, а вернее на разложении матриц.
Классический алгоритм — SVD (сингулярное разложении матриц).
Смысл алгоритма в том, что матрица товарных предпочтений (матрица, где строки это пользователи, а столбцы это продукты, с которыми пользователи взаимодействовали) представляется произведением трех матриц.
Рис.3 Алгоритм SVD
После восстановления исходной матрицы, клетки, где у пользователя были нули, а появились «большие» числа, показывают степень латентного интереса к товару. Упорядочим эти цифры, и получим список товаров, релевантных для пользователя.
При этой операции у пользователя и товара появляются «латентные» признаки. Это признаки, показывающие «скрытое» состояние пользователя и товара.
Но известно, что и пользователя и у товара помимо «латентных», есть еще и явные признаки. Это пол, возраст, средний чек покупки, регион и т.д.
Давайте попробуем обогатить этими данными нашу модель.
Для этого используем алгоритм «факторизационные машины».
Рис.4 Алгоритм работы факторизационных машин
Из нашего опыта, в компании Data4, решения кейсов в области построения рекомендательных систем для интернет магазинов, именно факторизационные машины дают наилучший результат. Так, факторизационные машины мы использовали для построения рекомендационной системы для нашего клиента, компании KupiVip. Прирост по метрике RMSE составил 6-7%.
Но у подходов на основе разложения матриц существуют свои недостатки. Число обобщаемых паттернов взаимной комбинации товаров не велико. Для решения этой задачи целесообразно использовать нейронные сети. Но для нейронной сети требуется объемы данных, которые есть только у крупных компаний.
Из нашего опыта, в компании Data4, только у одного клиента нейронную сеть для персонализированных товарных рекомендаций дала лучший результат. Зато, при успехе, можно получить до 10% к метрике RMSE. Нейронные сети используются в YouTube и ряде крупнейших контентных площадок.
Кейсы использования
Для интернет магазинов
Для контента
Другое
В следующей статье, будут рассмотрены лайфхаки рекомендательных систем, на основе реальных бизнес кейсов. Покажем, какие метрики лучше использовать, и какой коэффициент близости выбрать для предсказания.
Знакомство с рекомендательными системами
Давайте вернемся к периодически затрагиваемой у нас теме машинного обучения и нейронных сетей. Сегодня речь пойдет об основных типах рекомендательных систем, их достоинствах и недостатках. Под катом — интересная статья Тоби Дейгла с кодом на Python,
Над катом — ссылка на большую презентацию нашего замечательного автора Сергея Николенко, чью книгу «Глубокое обучение. Погружение в мир нейронных сетей», написанную в соавторстве с Артуром Кадуриным и Екатериной Архангельской, мы просто не успеваем допечатывать. В презентации описаны основные типы рекомендательных систем и принципы их работы.
Читаем и комментируем!
Многие получают советы, но лишь мудрые в состоянии ими воспользоваться. — Харпер Ли
Рекомендательные системы кажутся многим волшебными артефактами, словно читающими наши мысли. Вспомните хотя бы рекомендательный движок Netflix, подсказывающий нам новые фильмы, или сервис Amazon, предлагающий нам товары, которые могут понравиться. С самого зарождения такие инструменты совершенствовались и оттачивались, пользоваться ими становилось все удобнее. Но, пусть многие из рекомендательных движков — очень сложные системы, фундаментально их устройство весьма незамысловато.
Что такое рекомендательная система?
Рекомендательные движки — это подсемейство систем для фильтрации контента, предоставляющих пользователю те элементы, которые могли бы его заинтересовать. Рекомендации подбираются на основе преференций и поведения пользователя. Система должна спрогнозировать вашу реакцию на тот или иной элемент – и предложить другие, которые также могут вам понравиться.
Как создать рекомендательную систему?
Хотя, при программировании рекомендательных систем применяется множество методов, расскажу вам о трех самых простых, которые используются чаще всего. Речь пойдет о коллаборативной фильтрации (collaborative filtering), контентная фильтрация (content-based filtering) и, наконец, экспертные системы (knowledge-based systems). По каждой системе я опишу ее слабые места, потенциальные подводные камни и расскажу, как их обходить. Наконец, в финале статьи я приведу полноценную реализацию рекомендательного движка.
Первый из рассматриваемых методов, коллаборативная фильтрация — один из простейших и наиболее эффективных. Этот трехэтапный процесс начинается со сбора пользовательской информации. Затем выстраивается матрица для расчета ассоциаций и, наконец, дается весьма достоверная рекомендация. Существует две основные разновидности этого метода: на основе пользователей, занимающихся поиском, и на основе элементов, образующих ту или иную категорию.
Пользовательская коллаборативная фильтрация
Идея, на которой основан этот метод – искать пользователей, чьи вкусы похожи на предпочтения нашего целевого пользователя. Если ранее Жан-Пьер и Джейсон проставили схожие оценки нескольким фильмам, то мы считаем, что вкусы у них подобны, и по рейтингам тех или иных фильмов, проставленным Жаном-Пьером, можем угадать неизвестные рейтинги Джейсона. Например, если Жану-Пьеру понравились фильмы «Возвращение джедая» и «Империя наносит ответный удар», а Джейсону понравился фильм «Возвращение джедая», то мы определенно должны подсказать Джейсону и фильм «Империя наносит ответный удар». В принципе, для прогнозирования интересов Джейсона нужно найти несколько пользователей, с которыми у него схожие вкусы.
В таблице, где каждый ряд соответствует пользователю, а каждый столбец – фильму, просто найти сходство между рядами в матрице и, соответственно, подыскать пользователей с общими интересами.
Однако, такая реализация сопряжена с рядом проблем:
Процесс прост. Сходство двух элементов рассчитывается по рейтингам, выставленным пользователем. Вернемся к примеру с Жаном-Пьером и Джейсоном — как мы помним, обоим понравились фильмы «Возвращение джедая» и «Империя наносит ответный удар». Можно сделать вывод, что большинству пользователей, высоко оценивших первый фильм, должен понравиться и второй. Таким образом, было бы релевантно предложить фильм «Империя наносит ответный удар» Ларри, которому понравился фильм «Возвращение джедая».
Следовательно, сходство вычисляется по столбцам, а не по строкам (как понятно из матрицы с пользователями и фильмами, приведенной выше). Зачастую предпочитается именно коллаборативная фильтрация по элементам, так как она лишена всех недостатков, присущих пользовательской фильтрации. Во-первых, элементы в системе (здесь — фильмы) не изменяются со временем, поэтому рекомендации получатся более релевантными. Кроме того, элементов обычно гораздо меньше, чем пользователей, поэтому обработка данных при такой фильтрации происходит быстрее. В конечном итоге, такие системы гораздо сложнее обмануть.
Контентная рекомендательная система
В контентных рекомендательных системах рекомендации формулируются на основе атрибутов, присваиваемых каждому элементу. Термин «контент» относится именно к этим описаниям. Например, если изучить историю музыкальных интересов Софи, можно заметить, что ей нравится жанр кантри. Следовательно, система может рекомендовать ей композиции в стиле кантри, а также композиции схожих жанров. Более сложные системы в состоянии выявлять соотношения между множественными атрибутами и давать более качественные рекомендации. Так, на сайте Music Genome Project каждая композиция, имеющаяся в базе данных, категоризируется по 450 различным атрибутам. Именно на основе этого движка работает музыкальная рекомендательная система на сайте Pandora.
Экспертные рекомендательные системы
Экспертные рекомендательные системы особенно хороши для работы с такими элементами, которые приобретаются нечасто – например, дома, автомобили, финансовые активы или дорогие предметы роскоши. В таких случаях рекомендательный процесс осложняется из-за дефицита рейтингов по товарам. В экспертных системах рекомендации предлагаются не на основе рейтингов, а на базе сходства между пользовательскими требованиями и описанием продукта, либо в зависимости от ограничений, выставляемых пользователем при конкретизации желаемого продукта. Поэтому система такого типа получается уникальной, ведь она позволяет клиенту явно указать, чего он хочет. Что касается ограничений – в случаях, когда они вообще применяются – обычно такие ограничения известны с самого начала и реализуются экспертами в данной предметной области. Например, если пользователь явно указывает, что ищет недвижимость в данной ценовой категории, то система должна ориентироваться на данную спецификацию при подборе вариантов.
Проблема холодного старта в рекомендательных системах
Одна из важнейших проблем, связанных с рекомендательными системами, заключается в том, что исходное количество доступных рейтингов обычно невелико. Что делать, если новоиспеченный пользователь пока не рейтинговал фильмов, либо, если в систему добавился новый фильм? В таких случаях затруднительно применять традиционные модели коллаборативной фильтрации. Контентные методы и экспертные системы справляются с проблемой холодного старта увереннее коллаборативных моделей, но и они не всегда есть в распоряжении. Поэтому именно для таких случаев был разработан ряд альтернативных решений – например, гибридные системы.
Гибридные рекомендательные системы
Итак, у всех разнообразных рекомендательных систем, рассмотренных выше, есть свои достоинства и недостатки, и предлагаемые этими системами варианты базируются на разных исходных данных. Некоторые рекомендательные движки, в частности, экспертные системы, наиболее эффективны в контекстах, где количество доступных данных ограничено. Другие системы, например, коллаборативная фильтрация, лучше всего работают в средах, где имеются большие массивы данных. Зачастую, когда данные диверсифицированы, мы располагаем достаточной гибкостью, чтобы решать одну и ту же задачу разными методами. Следовательно, можно скомбинировать рекомендации, полученные несколькими способами, тем самым повысив качество системы в целом. Исследовано множество комбинаторных приемов, в том числе:
Рекомендательные системы часто используются в контексте искусственного интеллекта. Возможность выдачи подсказок, прогнозирования событий и подчеркивание корреляций – все это результаты применения ИИ. С другой стороны, при воплощении рекомендательных систем часто используются приемы машинного обучения. Например, компания Arcbees написала эффективный рекомендательный движок, работающий на основе нейронных сетей и данных, которые берутся из IMdB. Нейронные сети позволяют быстро решать сложные задачи и с легкостью манипулировать большими данными. Взяв в качестве ввода список фильмов, и сопоставив вывод с пользовательскими оценками, сеть может усвоить правила и затем руководствоваться ими, прогнозируя дальнейшие рейтинги, которые может проставить конкретный пользователь.
Читая материалы по этой теме, я нашел два отличных совета от экспертов. Во-первых, базовым материалом для работы рекомендательного движка должны быть такие элементы, за которые пользователи готовы платить. В таком случае можно быть уверенным, что оценки выставляемые пользователями, будут довольно точными и релевантными. Во-вторых, всегда лучше опираться на совокупности алгоритмов, а не на единственный алгоритм. Хороший пример — Netflix Prize.
Реализация рекомендательной системы на основе подбора элементов
В следующем коде показано, как легко и быстро можно реализовать рекомендательный движок, в котором используется коллаборативная фильтрация. Код написан на Python, здесь использованы библиотеки Pandas и Numpy – одни из самых популярных в данном сегменте. В качестве массива данных использовались рейтинги фильмов, а само множество данных доступно на MovieLens.
Этап 1: Находим похожие фильмы
Выбираем кино и генерируем индекс схожести (корреляции) между этим фильмом и всеми остальными
Удаляем непопулярные фильмы, чтобы система не подкидывала нам неподходящих рекомендаций
Извлекаем популярные фильмы, похожие на целевой
Этап 2: предлагаем пользователю рекомендации в зависимости от проставленных им оценок
Генерируем индекс схожести в каждой паре фильмов и оставляем только популярные
Генерируем рекомендации для каждого фильма, просмотренного и оцененного нашим пользователем (здесь – данные для пользователя 0)
Суммируем показатели идентичных фильмов
Оставляем лишь те фильмы, которые пользователь еще не смотрел
В вышеприведенном случае нам вполне удалось обработать множество данных MovieLens при помощи библиотеки Pandas на обычном процессоре. Однако, обработка более крупных наборов данных может занимать больше времени. В таких случаях могут помочь более мощные решения – например, Spark или MapReduce.
Как работают рекомендательные системы
Рекомендательные системы, основанные на машинном обучении, получили широкое распространение для бизнеса в последние годы. В этой статье приведено описание принципов работы основных методов для реализации рекомендательных систем и метрик для оценки их работы.
Перевод статьи Recommendation Systems — Models and Evaluation, автор — Neerja Doshi, ссылка на оригинал — в подвале статьи.
Я принимал участие в создании нескольких различных типов рекомендательных систем, и я заметил одну вещь: каждый вариант использования отличается от других, поскольку каждый из них направлен на решение своей бизнес-задачи. Давайте рассмотрим несколько примеров:
Все эти задачи схожи тем, что они направлены на повышение удовлетворенности клиентов и, в свою очередь, стимулируют бизнес увеличением комиссий, увеличением продаж и т.д. Независимо от варианта использования, данные обычно имеют следующий формат:
Далее обсудим следующие темы:
Методы создания рекомендательной системы
Существует два основных подхода к созданию рекомендательных систем — контент-ориентированная и коллаборативная фильтрация. В следующем разделе я расскажу о каждом из них и когда они подходят.
Схема контент-ориентированной и коллаборативной фильтрации
Контент-ориентированные
Суть этого подхода заключается в том, что мы сопоставляем пользователей с тем контентом или товарами, которые им нравились или были ими куплены. Здесь важны атрибуты пользователей и продуктов. Например, для рекомендаций к фильмам мы используем такие признаки, как режиссер, актеры, продолжительность фильма, жанр и т.д., чтобы найти сходство между фильмами. Кроме того, мы можем извлечь такие характеристики, как оценка настроений и оценки TF-IDF из описаний фильмов и обзоров. (Оценка TF-IDF отражает, насколько важно слово для документа в наборе документов). Цель контент-ориентированных методов — создать «профиль» для каждого пользователя и каждого предмета.
Рассмотрим пример рекомендации новостных статей пользователям. Допустим, у нас есть 100 статей и словарь размера N. Сначала мы вычисляем оценку TF-IDF для каждого слова в каждой статье. Затем мы строим 2 вектора:
Построив эти «профили », мы вычисляем сходства между пользователями и предметами. Предметы должны быть рекомендованы пользователю, если: 1) они имеют наибольшее сходство с пользователем или 2) имеют большое сходство с другими элементами, прочитанными пользователем. Есть несколько способов сделать это. Давайте посмотрим на 2 распространенных метода:
Чтобы рекомендовать предметы, которые наиболее похожи на те, которыми интересовался пользователь, мы вычисляем косинусное сходство между статьями, которые пользователь прочитал, и другими статьями. Наиболее схожие будут рекомендованы. Таким образом, это подобие предмет-предмет.
Косинусное сходство
Косинусное сходство лучше всего подходит, когда ваши признаки высокоразмерны, особенно в области поиска информации и анализа текста.
Чтобы вычислить сходство между пользователем и предметом, мы просто берем косинусное сходство между вектором пользователя и вектором предмета.
Используется для подобия предмет-предмет. Мы сравниваем векторы элементов друг с другом и возвращаем наиболее похожие предметы.
Сходство Жакара полезно только тогда, когда векторы содержат бинарные значения. Если у них есть ранжирование или рейтинги, которые могут принимать более двух возможных значений, сходство Жаккара не применимо.
В дополнение к контент-ориентированным методам мы можем рассматривать рекомендацию как простую задачу машинного обучения. Здесь пригодятся обычные алгоритмы машинного обучения, такие как случайный лес, XGBoost и т.д.
Эти методы полезны, когда у нас есть множество «внешних» признаков, таких как погодные условия, рыночные факторы и т.д., которые не являются собственностью пользователя или продукта и могут сильно варьироваться. Например, цена открытия и закрытия предыдущего дня играет важную роль в определении прибыльности инвестирования в конкретную акцию. Это относится к классу supervised примеров задач, когда имеются метки, которые могут обозначать, понравился ли пользователю продукт, кликнул ли он на него (0/1), или рейтинг, который пользователь указал этому продукту, или количество единиц, купленных пользователем.
Преимущества и недостатки контент-ориентированных методов
Коллаборативная фильтрация
Основополагающее предположение подхода коллаборативной фильтрации заключается в том, что если А и В покупают аналогичные продукты, А, скорее всего, купит продукт, который купил В, чем продукт, который купил случайный человек. В отличие от контентно-ориентированного подхода, здесь нет признаков, соответствующих пользователям или предметам. Все, что у нас есть — это Матрица полезности. Вот как это выглядит:
Матрица полезности
A, B, C, D — пользователи, а столбцы представляют фильмы. Значения представляют оценки (1–5), которые пользователи дали фильму. В других случаях эти значения могли бы быть 0/1 в зависимости от того, смотрел ли пользователь фильм или нет. Существует две широких категории, на которые можно разделить коллаборативную фильтрацию:
Коллаборативная фильтрация
Подход на основе памяти
Для этого подхода запоминается матрица полезности, и рекомендации составляются путем запроса данного пользователя к остальной части матрицы полезности. Давайте рассмотрим тот же пример: у нас есть фильмы т и пользователи U, и мы хотим узнать, насколько пользователь i любит кино k.
Это средний рейтинг, который сформирован для пользователя i на основе всех фильмов, которые он/она когда-либо оценивал. Используя это, мы оцениваем рейтинг фильма k для пользователи i следующим образом:
Сходство между пользователями a и i можно вычислить с использованием любых методов, таких как косинусное сходство / сходство Жаккара / коэффициент корреляции Пирсона и т.д.
Эти результаты очень легко получать и интерпретировать, но как только данные становятся слишком разреженными, производительность ухудшается.
Подход на основе модели
Одной из наиболее распространенных реализаций подхода на основе модели является матричная факторизация. В этом случае мы создаем представления пользователей и предметов из матрицы полезности. Вот как это выглядит:
Матричная факторизация
Таким образом, наша матрица полезности разлагается на U и V, где U представляет пользователей, а V представляет фильмы в низкоразмерном пространстве. Это может быть достигнуто с помощью методов разложения матриц, таких как SVD или PCA, или обучение двух векторных представлений (embeddings) с использованием нейронных сетей с помощью некоторого оптимизатора, такого как Adam, SGD и т.д.
Для пользователя i и каждого фильма j нам просто нужно вычислить рейтинг y и рекомендовать фильмы с самым высоким прогнозируемым рейтингом. Этот подход наиболее полезен, когда у нас есть тонна данных, и они имеют высокую разреженность. Матричная факторизация помогает путем понижения размерности, что ускоряет вычисления. Одним из недостатков этого метода является то, что снижаться интерпретируемость, поскольку мы не знаем, что именно означают элементы векторов пользователей/предметы.
Кластеризация
Кластеризация обычно используется, когда задача рекомендательной системы становится задачей без учителя.
Если вы только начинаете заниматься бизнесом и у вас очень мало исторических/размеченных данных, вы можете кластеризовать наблюдения на основе набора признаков, а затем назначить рекомендации для кластеров на основе меток, которые имеются у объектов в этом кластере.
Это решение, конечно, не дает лучших результатов сразу, но является хорошей отправной точкой для таких случаев, пока не будет получено достаточно данных. Кластеризация также может быть использована для создания мета-признаков для объектов. Например, после кластеризации можно назначить значения от 1-k в качестве нового элемента «кластер» для каждого наблюдения, а затем обучить основную модель всем функциям. Это может быть сделано на уровне пользователя или продукта.
Оценивающие метрики
Основное препятствие при разработке систем рекомендаций — выбор метрик для оптимизации. Это может быть сложно, потому что во многих случаях цель — НЕ рекомендовать все те же продукты, которые пользователь купил ранее. Так как же узнать, хорошо ли работает ваша модель, предлагая продукты?
Статистические метрики
Они используются для оценки точности метода фильтрации путем сравнения прогнозируемых рейтингов непосредственно с фактическим рейтингом пользователей. Средняя абсолютная ошибка (MAE), среднеквадратическая ошибка (RMSE) и корреляция обычно используются в качестве статистических метрик. MAE является наиболее популярным и широко используемым — это мера отклонения рекомендации от фактической стоимости пользователя. MAE и RMSE рассчитываются следующим образом:
Чем ниже значения MAE и RMSE, тем точнее механизм рекомендаций прогнозирует пользовательские рейтинги. Эти метрики удобны, когда рекомендации основаны на прогнозировании рейтинга или количества транзакций. Они дают нам представление о том, насколько точны наши прогнозы и, в свою очередь, насколько точны наши рекомендации.
Метрики поддержки принятых решений
Популярными среди них являются Precision (точность) и Recall (полнота). Они помогают пользователям выбирать продукты, которые более похожи среди доступного набора продуктов. Метрики рассматривают процедуру прогнозирования как бинарную операцию, которая отличает хорошие элементы от тех, которые не являются хорошими. Давайте посмотрим на них более подробно:
Precision@k и Recall@k
Давайте начнем с понимания того, что означает точность и полнота для систем рекомендаций:
Метрики precision и recall
Но precision и recall не заботятся о порядке. Поэтому вместо этого мы используем точность и recall при отсечении k. Предположим, что мы даем N рекомендаций и рассматриваем только первый элемент, затем только первые два, затем только первые три и т. Д. … эти подмножества могут быть проиндексированы с помощью k.
Precision и recall в точке отсечения k, P@k и r@k — это просто precision и recall, рассчитанные с учетом только подмножества ваших рекомендаций от ранга 1 до k. Оценка рекомендаций определяется прогнозируемой ценностью. Например, продукт с самым высоким прогнозируемым значением ранжируется 1, продукт с k-м самым высоким прогнозируемым значением ранжируется k.
Средняя точность (Average Precision, AR)
Если мы должны порекомендовать N элементов и при этом в полном пространстве элементов m соответствующих элементов, средняя точность AP@N определяется как:
где rel (k) — это просто индикатор (0/1), который сообщает нам, был ли релевантен этот k-й элемент, а P (k) — точность @k. Если бы мы рекомендовали 2N элементов вместо N, метрика AP@N говорит, что мы думаем только о средней точности до N-го элемента.
AP вознаграждает вас за предоставление правильных рекомендаций,
AP вознаграждает вас за предварительную загрузку рекомендаций, которые, скорее всего, будут правильными,
AP никогда не накажет вас за добавление дополнительных рекомендаций в ваш список — просто убедитесь, что вы загружаете лучшие из них.
Средний precision по каждому классу (Mean Average Precision, MAP)
AP применяется к отдельным объектам выборки, например к отдельным пользователям. MAP@N просто делает шаг вперед и усредняет AP для всех пользователей.
Дополнительные предложения
Одно из предложений (это личное, в котором я не слишком уверен) заключается в поиске контента с истинной информацией, которая была получена не из исторических данных пользователей. Затем этот контент сравнивается с неисторическим содержанием в рекомендациях с использованием любой из стандартных метрик, описанных выше. Это дает нам представление о том, насколько хороша наша модель в рекомендации продуктов, которые напрямую не связаны с прошлыми транзакциями.
Что нужно иметь в виду
При разработке системы рекомендаций, особенно для рекомендаций, основанных на содержании, важно помнить, что нужно оптимизировать НЕ только одну метрику. То есть для рекомендации новостной статьи не рекомендуется отдавать статью с очень высоким значением привлекательности, потому что это означает, что мы рекомендуем пользователям контент, который они, скорее всего, потребляли бы и без нашей рекомендации.
Так мы в любом случае не улучшим бизнес. Мы должны обеспечить достойный precision/recall как показатель того, что наша модель способна изучать предпочтения пользователя, но нет цели пытаться максимально улучшить их. Кроме того, мы не хотим терять вовлечение пользователей в долгосрочной перспективе, рекомендуя одни и те же типы продуктов снова и снова. А это весьма вероятно, если мы попытаемся максимизировать precision@k/recall@k.