что такое рекомендательные системы в метрике
Что такое рекомендательные системы в метрике
Мы добавили в Метрику два новых источника трафика — рекомендательные системы и мессенджеры. Теперь они показываются в отчёте «Источники, сводка» в общем списке каналов привлечения трафика: при этом переходы из рекомендательных систем определяются автоматически, а для мессендежров понадобится обычная UTM-разметка.
Мы добавили в Метрику два новых источника трафика — рекомендательные системы и мессенджеры. Теперь они показываются в отчёте «Источники, сводка» в общем списке каналов привлечения трафика: при этом переходы из рекомендательных систем определяются автоматически, а для мессенджеров понадобится обычная UTM-разметка.
Рекомендательные системы и мессенджеры давно стали важной частью интернет-экосистемы. По нашим подсчётам, в марте 2019 года рекомендательные системы обеспечили порядка четверти трафика на сайты паблишеров*, при этом на Яндекс.Дзен пришлось больше 20% от общего трафика этих площадок. Однако в большинстве систем аналитики рекомендательные системы и мессенджеры не представлены в виде отдельных источников трафика, и их не получится быстро сравнить с другими каналами привлечения посетителей.
*Из топ-10 000 сайтов в категориях «Новости» и «Контентные проекты» согласно классификатору Яндекс.Радара.
Какие рекомендательные системы и мессенджеры распознаёт Метрика
Рекомендательные системы — Яндекс.Дзен, Google Discover, Opera Personal News, Sony News Suite, Flipboard.
Мессенджеры — Telegram, WhatsApp, Viber, Skype, WeChat. Остальные мессенджеры будут отображаться в строке «Другой мессенджер: определено по меткам» при наличии в ссылке utm_medium=messenger.
Новые источники доступны не только в сводке по источникам, но и в других отчётах — в качестве группировок или условий сегментации.
Данные по мессенджерам и рекомендательным системам доступны начиная с даты запуска — 15.04.2019.
Как использовать данные о трафике из рекомендательных систем и мессенджеров
Сравнить объём трафика из разных рекомендательных систем
Для этого достаточно в отчёте Источники, сводка развернуть список рекомендательных систем.
Изучить, какой контент предпочитают пользователи разных мессенджеров
1. Откройте отчёт Содержание → Страницы входа
2. В группировках оставьте Путь страницы или URL.
3. Создайте сегмент Визиты, в которых → Последний значимый источник → Тип источника → Переходы из мессенджеров.
4. Чтобы посмотреть, какие именно мессенджеры приводили трафик на конкретную страницу, добавьте группировку Источник трафика (детально)
Узнать, какие статьи популярнее всего в рекомендательных системах
1. Откройте отчёт Содержание → Страницы входа
2. В группировках оставьте Путь страницы или URL.
3. Создайте сегмент Визиты, в которых → Последний значимый источник → Тип источника → Переходы из рекомендательных систем.
4. Чтобы посмотреть, какие именно рекомендательные системы приводили трафик на конкретную страницу, добавьте группировку Источник трафика (детально)
Как правильно разметить ссылки для мессенджеров
Если вы уже используете UTM-разметку, достаточно убедиться, что для utm_medium задано значение messenger, а в utm_source указан конкретный мессенджер из списка выше, например: http://example.com/?utm_source=skype&utm_medium=messenger. Переходы по ссылкам, которые уже были размечены таким образом, автоматически начнут отображаться не только в отчёте по меткам, но и в отчёте по источникам — в строке «Мессенджеры».
А если вам ещё не приходилось работать с utm-разметкой, тут всё очень просто. Достаточно дописать к ссылке вот такое окончание:?utm_source=название нужного мессенджера&utm_medium=messenger. Название мессенджера должно быть прописано полностью, с маленькой буквы и без пробелов — например: telegram, whatsapp. Полный список меток для мессенджеров можно посмотреть в таблице с описанием источников трафика, в строке Переходы из мессенджеров. А подробное описание работы с UTM-метками есть в отдельной статье.
Если у вас есть вопросы про новые источники трафика, спрашивайте в комментариях или пишите в наш чат. Будем рады помочь!
Как работают рекомендательные системы
Рекомендательные системы, основанные на машинном обучении, получили широкое распространение для бизнеса в последние годы. В этой статье приведено описание принципов работы основных методов для реализации рекомендательных систем и метрик для оценки их работы.
Перевод статьи 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.
Анатомия рекомендательных систем. Часть вторая
Неделю назад я делал здесь обзор существующих алгоритмов рекомендаций. В этой статье я продолжу данный обзор: расскажу об item-based варианте коллаборативной фильтрации, о методах, основанных на матричных разложениях, проблемах тестирования, а также о менее «раскрученных» (но не менее интересных) алгоритмах.
Коллаборативная фильтрация (Item-based вариант)
Подход Item-based является естественной альтернативой классическому подходу User-based, описанному в первой части, и почти полностью его повторяет, за исключением одного момента — применяется он к транспонированной матрице предпочтений. Т.е. ищет близкие товары, а не пользователей.
Напомню, пользовательская коллаборативная фильтрация (user-based CF) ищет для каждого клиента группу наиболее похожих на него (в терминах предыдущих покупок) клиентов и усредняет их предпочтения. Эти усредненные предпочтения и служат рекомендациями для пользователя. В случае же с товарной коллаборативной фильтрацией (item-based CF) ближайшие соседи ищутся на множестве товаров — столбцов матрицы предпочтений. И усреднение происходит именно по ним.
Действительно, если продукты содержательно похожи, то скорее всего они либо одновременно нравятся, либо одновременно не нравятся. Поэтому когда мы видим, что у двух товаров оценки сильно коррелируют, это может говорить о том, что это товары-аналоги.
Преимущества Item-based перед User-based:
Из-за того, что корреляция продуктов считается на большем количестве наблюдений, не так критично ее пересчитывать после каждой новой оценки и можно это делать периодически в батчевом режиме.
Несколько возможных усовершенствований алгоритма:
Если в матрице предпочтений в качестве рейтинга мы используем просмотр описания товара, то рекомендуемые товары скорее всего будут аналогами — товарами, которые часто смотрят вместе. Если же рейтинги в матрице предпочтений мы рассчитываем на основании покупок, то скорее всего рекомендуемые товары будут аксессуарами — товарами, которые часто покупают вместе.
Оценка качества системы
Тестирование рекомендательной системы — процесс непростой и всегда вызывающий множество вопросов, главным образом из-за неоднозначности самого понятия «качество».
Вообще, в задачах машинного обучения есть два основных подхода к тестированию:
Основное ограничение, с которым приходится сталкиваться — оценить точность прогноза мы можем только на тех товарах, которые пользователь уже оценил.
Стандартный подход — это кросс-валидация методами leave-one-out и leave-p-out. Многократное повторение теста с усреднением результатов позволяет получить более устойчивую оценку качества.
Когда рейтинги оцениваются по непрерывной шкале (0-10), как правило, достаточно метрик класса Prediction Accuracy.
Название | Формула | Описание |
---|---|---|
MAE (Mean Absolute Error) | Среднее абсолютное отклонение | |
MSE (Mean Squared Error) | Среднеквадратичная ошибка | |
RMSE (Root Mean Squared Error) | Корень из среднеквадратичной ошибки |
Название | Формула | Описание |
---|---|---|
Precision | Доля рекомендаций, понравившихся пользователю | |
Recall | Доля интересных пользователю товаров, которая показана | |
F1-Measure | Среднее гармоническое метрик Precision и Recall. Полезно, когда заранее невозможно сказать, какая из метрик важнее | |
ROC AUC | Насколько высока концентрация интересных товаров в начале списка рекомендаций | |
Precision@N | Метрика Precision, посчитанная на Top-N записях | |
Recall@N | Метрика Recall, посчитанная на Top-N записях | |
AverageP | Среднее значение Precision на всем списке рекомендаций |
Название | Формула | Описание |
---|---|---|
Mean Reciprocal Rank | На какой позиции списка рекомендаций пользователь находит первую полезную | |
Spearman Correlation | Корреляция (Спирмена) реального и прогнозируемого рангов рекомендаций | |
nDCG | Информативность выдачи с учетом ранжирования рекомендаций | |
Fraction of Concordance Pairs | )$» data-tex=»inline»/> | Насколько высока концентрация интересных товаров в начале списка рекомендаций |
Если мы возьмем рекомендательные системы в онлайн бизнесе, то они, как правило, преследует две (иногда противоречивые) цели:
Lift — показатель того, во сколько раз точность модели превосходит некий baseline алгоритм. В нашем случае baseline алгоритмом может быть просто отсутствие рекомендаций. Данная метрика хорошо отлавливает долю инкрементальных покупок и это позволяет эффективно сравнивать разные модели.
Тестирование с пользователем
Поведение пользователя вещь плохо формализуемая и ни одна метрика в полной мере не опишет мыслительные процессы в его голове при выборе товара. На решение влияет множество факторов. Переход по ссылке с рекомендуемым товаром еще не есть его высокая оценка или даже интерес. Частично понять логику клиента помогает онлайн тестирование. Ниже приводится пара сценариев такого тестирования.
Первый и самый очевидный сценарий — анализ событий сайта. Мы смотрим, что пользователь делает на сайте, обращает ли внимание на наши рекомендации, переходит ли по ним, какие фичи системы пользуются спросом, какие — нет, какие товары лучше рекомендуются, какие хуже. Чтобы понять какой из алгоритмов в целом работает лучше или просто попробовать новую перспективную идею, делаем A/B тестирование и собираем результат.
Второй сценарий — это получение фидбека от пользователей в виде опросов и голосований. Как правило, это общие вопросы для понимания, как клиенты пользуются сервисом — что важнее: релевантность или разнообразие, можно ли показывать повторяющиеся продукты, или это слишком раздражает. Преимущество сценария — он дает прямой ответ на все эти вопросы.
Подобное тестирование штука сложная, но для крупных рекомендательных сервисов она просто необходима. Вопросы могут быть и более сложными, например, «какой из списков вам кажется более релевантным», «насколько лист выглядит цельным», «будете ли вы смотреть этот фильм/читать книгу».
Неявные рейтинги и унарные данные
В начале своего развития рекомендательные системы применялись в сервисах, где пользователь явно оценивает товар путем выставления ему рейтинга — это и Amazon, и Netflix и прочие сайты интернет торговли. Однако с ростом популярности рекомендательных систем возникла потребность применять их ещё и там, где никаких рейтингов нет — это могут быть банки, автомастерские, ларьки с шаурмой и любые другие сервисы, где по какой-то причине невозможно наладить систему оценивания. В этих случаях интересы пользователя можно вычислить лишь по косвенным признакам — о пользовательских предпочтениях говорят определенные действия с товаром, например, просмотр описания на сайте, добавление товара в корзину и т.д. Здесь используется принцип «купил — значит любит!». Такая система неявного оценивания называется Implicit Ratings.
Неявные рейтинги очевидно работают хуже явных, поскольку вносят на порядок больше шума. Ведь пользователь мог купить товар в подарок жене или зайти на страницу с описанием товара, только чтобы оставить там комментарий в стиле «какая же все-таки это гадость» или удовлетворить свое природное любопытство.
Если в случае с явными рейтингами мы вправе ожидать, что хоть одну отрицательную оценку нет-нет да и поставит, то отрицательную оценку мы ниоткуда не возьмем. Если пользователь не купил книгу «Пятьдесят оттенков серого», он мог это сделать по двум причинам:
Второй кейс — это возможность оставлять только положительные оценки. Яркий пример — это кнопка Like в соцсетях. Рейтинг здесь проставляется уже явно, но так же как и в предыдущем примере, у нас нет отрицательных примеров — мы знаем, какие каналы пользователю нравятся, но не знаем, какие не нравится.
В обоих примерах задача превращается в задачу Unary Class Classification.
Самый очевидный вариант решения — идти по простому пути и считать отсутствие оценки отрицательной оценкой. В некоторых случаях это более оправдано, в некоторых — менее. Например, если мы знаем, что пользователь товар скорее всего видел (например, мы ему его показывали в списке товаров, а он перешел на товар, идущий за ним), то отсутствие перехода действительно может говорить об отсутствии интереса.
Алгоритмы факторизации
Было бы здорово описать интересы пользователя более «крупными мазками». Не в формате «он любит фильмы X, Y и Z», а в формате «он любит современные российские комедии». Помимо того, что это увеличит обобщаемость модели, это еще решит проблему большой размерности данных — ведь интересы будут описываться не вектором товаров, а существенно меньшим вектором предпочтений.
Такие подходы еще называют спектральным разложением или высокочастотной фильтрацией (поскольку мы убираем шум и оставляем полезный сигнал). В алгебре существует много различных разложений матриц, и одно из наиболее часто используемых называется SVD-разложением (singular value decomposition).
Метод SVD применялся в конце 80-х для выборки похожих по смыслу, но не по содержанию страниц, а затем стал использоваться и в задачах рекомендаций. В основе метода — разложение исходной матрицы рейтингов ® в произведение 3 матриц:
, где размеры матриц
, а r —
ранг разложения — параметр, характеризующий степень детализации разложения.
Применяя данное разложение к нашей матрице предпочтений, мы получаем две матрицы факторов (сокращенных описаний):
U — компактное описание предпочтений пользователя,
S — компактное описание характеристик продукта.
Важно, что при таком подходе мы не знаем, какие именно характеристики соответствуют факторам в уменьшенных описаниях, для нас они закодированы какими-то числами. Поэтому SVD является неинтерпретируемой моделью.
Для того, чтобы получить приближение матрицы предпочтений достаточно перемножить матрицы факторов. Сделав это получим оценку рейтинга для всех пар клиент-продукт.
Общее семейство подобных алгоритмов называется NMF (non-negative matrix factorization). Как правило вычисление таких разложений весьма трудоемко, поэтому на практике часто прибегают к их приближенным итеративным вариантам.
ALS (alternating least squares) — популярный итеративный алгоритм разложения матрицы предпочтений на произведение 2 матриц: факторов пользователей (U) и факторов товаров (I). Работает по принципу минимизации среднеквадратичной ошибки на проставленных рейтингах. Оптимизация происходит поочередно, сначала по факторам пользователей, потом по факторам товаров. Также для обхода переобучения к среднеквадратичной ошибке добавляются регуляризационные коэффиценты.
Если дополнить матрицу предпочтений новым измерением, содержащим информацию о пользователе или товаре, то мы сможем раскладывать уже не матрицу предпочтений, а тензор. Таким образом, мы задействуем больше доступной информации и возможно получим более точную модель.
Другие подходы
Ассоциативные правила (Association Rules)
Ассоциативные правила обычно используются при анализе продуктовых корреляций (Market Basket Analysis) и выглядят примерно так «если в чеке клиента есть молоко, то в 80% случаев там будет и хлеб». То есть если мы видим, что молоко в корзину клиент уже положил, самое время напомнить о хлебе.
Это не то же самое, что анализ разнесенных во времени покупок, но если мы будем считать всю историю одной большой корзиной, то вполне можем применить данный принцип и здесь. Это может быть оправдано, когда мы, например, продаем дорогие разовые товары (кредит, полет).
RBM (restricted Bolzman Machines)
Ограниченные машины Больцмана — относительно старый подход, основанный на стохастических рекуррентных нейронных сетях. Он представляет собой модель с латентными переменными и в этом похож на SVD-разложение. Здесь также ищется наиболее компактное описание пользовательских предпочтений, которое кодируется с помощью латентных переменных. Метод не был разработан для поиска рекомендаций, но он успешно использовался в топовых решениях Netflix Prize и до сих пор применяется в некоторых задачах.
В основе лежит все тот же принцип спектрального разложения, поэтому такие сети еще называют denoising auto-encoders. Сеть сначала сворачивает известные ей данные о пользователе в некоторое компактное представление, стараясь оставить только значимую информацию, а затем восстанавливает данные в исходной размерности. В итоге получается некий усредненный, очищенный от шума шаблон, по которому можно оценить интерес к любому продукту.
DSSM (deep sematic similiarity models)
Один из новых подходов. Все тот же принцип, но в роли латентных переменных здесь внутренние тензорные описания входных данных (embeddings). Изначально модель создавалась для матчинга запроса с документами (как и content-based рекомендации), но она легко трансформируется в задачу матчинга пользователей и товаров.
Многообразие архитектур глубоких сетей безгранично, поэтому Deep Learning предоставляет действительно широкое поле для экспериментов в области рекомендательных систем.
Гибридные решения
На практике редко используется только один подход. Как правило несколько алгоритмов комбинируются в один, чтобы достичь максимального эффекта.
Два главных преимущества объединения моделей — это увеличение точности и возможность более гибкой настройки на разные группы клиентов. Недостатки — меньшая интерпретируемость и бОльшая сложность реализации и поддержки.
Несколько стратегий объединения:
Feature Weighted (Linear) Stacking:
Веса обучаются на выборке. Как правило, для этого используется логистическая регрессия.
Stacking в общем виде:
Краткое описание решения Netflix
Netflix Prize — это конкурс, проводившийся в 2009 году, в котором требовалось спрогнозировать оценку пользователями фильмотеки Netflix. Неплохие призовые в 1 млн долларов вызвали ажиотаж и привлекли большое количество участников, в том числе довольно известных людей в ИИ.
Это была задача с явными рейтингами, оценки ставились по шкале от 1 до 5, а точность прогноза оценивалась по RMSE. Большинство первых мест заняли большие ансамбли классификаторов.
Победивший ансамбль использовал модели следующих классов:
Резюме
Постановка задачи генерации рекомендаций очень проста — мы составляем матрицу предпочтений с известными нам оценками пользователей, если получается, дополняем эти оценки информацией по клиенту и товару, и пытаемся заполнить неизвестные значения.
Несмотря на простоту постановки, выходят сотни статей, описывающих принципиально новые методики её решения. Во-первых это связано с ростом количества собираемых данных, которые можно использовать в модели и увеличением роли implicit-рейтингов. Во-вторых, с развитием глубокого обучения и появлением новых архитектур нейронных сетей. Все это кратно увеличивает и сложность моделей.
Но в целом все это многообразие сводится к очень небольшому набору подходов, которые я и попытался описать в данной статье.