Двумя наиболее распространенными типами систем персонализированных рекомендаций являются Content-Based и Collaborative Filtering. Совместная фильтрация дает рекомендации, основанные на знании отношения пользователей к элементам, то есть использует «мудрость толпы» для рекомендации элементов. Напротив, системы рекомендаций на основе контента фокусируются на атрибутах элементов и дают вам рекомендации на основе сходства между ними.

Совместная фильтрация на основе моделей

Совместная фильтрация на основе моделей основана на матричной факторизации (MF), которая получила более широкое распространение, в основном как неконтролируемый метод обучения для декомпозиции скрытых переменных и уменьшения размерности. Матричная факторизация широко используется для рекомендательных систем, где она может лучше справляться с масштабируемостью и разреженностью, чем CF на основе памяти:

  1. Цель MF состоит в том, чтобы узнать скрытые предпочтения пользователей и скрытые атрибуты элементов из известных рейтингов (изучить функции, описывающие характеристики рейтингов), чтобы затем предсказать неизвестные рейтинги через скалярное произведение скрытых функций пользователей и элементов.
  2. Когда у вас есть очень разреженная матрица с большим количеством измерений, путем факторизации матрицы вы можете реструктурировать матрицу пользовательских элементов в структуру низкого ранга и представить матрицу путем умножения двух матриц низкого ранга, где строки содержат скрытый вектор.
  3. Вы подбираете эту матрицу, чтобы максимально приблизить исходную матрицу, перемножая матрицы низкого ранга вместе, что заполняет элементы, отсутствующие в исходной матрице.

Подходы к моделированию в случае явных данных

  • Совместная, основанная на содержании и гибридная
  • На основе графа (с кластеризацией, взвешиванием, случайным блужданием и т. д.)
  • Матричная факторизация с использованием tensorflo
  • Нейронная совместная фильтрация с FastAI
  • Взвешенная двудольная проекция графа, как обсуждалось в этой статье.

Что такое унарные неявные данные?

  • Будьте осторожны, чтобы не перепутать двоичные и унарные данные: унарные данные означают, что у вас есть информация о том, что пользователь потреблял что-то (которое закодировано как 1, очень похоже на двоичные данные), но у вас нет информации о том, что пользователю не понравилось или что он потреблял. что-то (которое кодируется как NULL вместо двоичных данных 0).
  • Неявные данные — это данные, которые мы собираем на основе поведения пользователей, без оценок или конкретных действий. Это может быть информация о том, какие товары купил пользователь, сколько раз он проигрывал песню или смотрел фильм, сколько времени читал определенную статью и т. д.

Подходы к моделированию

  1. Традиционный алгоритм — Модели ближайших соседей «элемент-элемент» — a. Метрика косинусного расстояния, b. ТФ ЦАХАЛ, гр. BM25, рекомендация на основе популярности.
  2. Матричная факторизация ALS (чередование методом наименьших квадратов). Мы можем использовать матричную факторизацию, чтобы математически уменьшить размерность нашей исходной матрицы «все пользователи по всем элементам» до чего-то гораздо меньшего, что представляет «все элементы по некоторым вкусовым измерениям». » и «всех пользователей по некоторым параметрам вкуса». Эти измерения называются скрытыми или скрытыми функциями, и мы изучаем их из наших данных. Существуют различные способы факторизации матрицы, такие как разложение по единичным значениям (SVD) или вероятностный латентно-семантический анализ (PLSA), если мы имеем дело с явными данными. неявные данные разница заключается в том, как мы поступаем со всеми отсутствующими данными в нашей очень разреженной матрице. Для явных данных мы рассматриваем их как просто неизвестные поля, которым мы должны присвоить некоторый прогнозируемый рейтинг. Но для неявного мы не можем просто предположить то же самое, поскольку в этих неизвестных значениях также есть информация. Как было сказано ранее, мы не знаем, означает ли отсутствующее значение, что пользователю что-то не понравилось, или означает, что ему это нравится, но он просто не знает об этом. По сути, нам нужен какой-то способ извлечь уроки из недостающих данных. Поэтому нам понадобится другой подход, чтобы добраться туда.

3. Байесовский персонализированный рейтинг (BPR): Исходная статья: https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf

4. Факторизация логистической матрицы: Исходная статья: http://stanford.edu/~rezab/nips2014workshop/submits/logmat.pdf

5. Совместная фильтрация меньше значит больше: Исходный документ: https://www.ijcai.org/Proceedings/13/Papers/460.pdf

Алгоритмическое понимание

Возьмем 4 пользователей (A, B, C и D) и 4 элемента (P, Q, R и S), которые будут рекомендованы нашим 4 пользователям. Начальное состояние такое:

Подход 1. Наивный подход здесь заключается в том, чтобы вычислить сходство между двумя элементами, просто взглянув на количество пользователей, общих для этих двух элементов:

P-Q: 1

P-R: 0

P-S: 0

Q-R: 0

R-S: 1

Проблема: Эффект популярности — самые популярные товары будут доминировать.

Подход 2. Расстояния на основе наборов. Наиболее распространенным способом решения проблемы подхода 1 является расстояние Жаккара, которое нормализует размер пересечения двух наборов путем деления на общее количество пользователей, выбравших предпочтительным любой из них. пункт.

P-Q: 1/4

P-R: 0/3

P-S: 0/3

Q-R: 0/3

R-S: ½

Проблема: такие метрики, как смещение расстояния Жаккара, приводят к тому, что элементы имеют одинаковое количество пользователей в своих наборах.

Подход 3: метод косинусного/евклидового расстояния

Подход 4: сходство на основе информационного поиска — TF-IDF, BM-25 и т. д.

Подход 5: уменьшение размерности, а затем поиск подобия в уменьшенном пространстве измерений: -item в приближении низкого ранга, а затем вычислить расстояния в этом пространстве. Это сжатие вызывает обобщение входных данных, и это обобщение приводит к лучшему пониманию данных.

Проблема: данные в нашем случае являются неявными — мы можем предположить, что пользователь, выбирающий любимый элемент, означает, что он ему нравится, но у нас нет соответствующего сигнала о том, что пользователю не нравится элемент. Неявные данные, как правило, более многочисленны и их легче собрать, чем явные данные, и даже когда вы даете пользователю оценку 5 звезд, подавляющее большинство этих оценок будет только положительным, поэтому вам все равно нужно учитывать неявное поведение.

Это создает пару проблем при изучении факторизованного представления. Первая проблема заключается в эффективном выполнении этой факторизации: рассматривая неизвестные как отрицательные значения, наивная реализация будет рассматривать каждую запись в нашей входной матрице. Поскольку размерность здесь высока, необходимо учитывать большое количество записей по сравнению с несколькими ненулевыми записями. Вторая проблема заключается в том, что мы не можем быть уверены, что пользователь, который не упомянул элемент как любимый, на самом деле означает, что он ему не нравится.

Чтобы справиться со случаем, когда мы не уверены в наших отрицательных данных, используется подход Альтернативный метод наименьших квадратов (ALS), изучающий факторизованное матричное представление с использованием различных уровней достоверности для двоичных предпочтений: невидимые элементы рассматриваются как отрицательные с низкая достоверность, когда имеющиеся элементы рассматриваются как положительные с гораздо более высокой степенью достоверности. Таким образом, цель состоит в том, чтобы узнать пользовательские факторы Xu и факторы элемента Yi путем минимизации взвешенной по достоверности суммы функции потерь квадратов ошибок.

Проблема временной сложности.Проблема в том, что использование этих факторов для расчета всех наиболее связанных исполнителей занимает много времени после факторизации. Чтобы выполнить точное вычисление ближайшего соседа, нужно вычислить O(N2), поскольку нам нужно сравнить каждый элемент с другим элементом.

Можно выполнить работу гораздо быстрее, используя приблизительный поиск ближайших соседей. Пакет annoy использует метод случайного разделения гиперплоскостей для создания леса деревьев поиска для эффективного вычисления ближайших соседей. Результаты, полученные при использовании этого метода, во многом идентичны, и время вычисления для всех исполнителей сокращается с часа до примерно 30 секунд, что включает в себя в первую очередь время на создание индекса.

Данные и предварительная обработка

Формат необработанных данных: у нас есть только 2 функции — идентификатор клиента и идентификатор товара. Каждая строка представляет продажи, т. е. покупатель с идентификатором «a» купил товар с идентификатором «b».

Преобразование данных: из необработанного формата в двусторонний формат

Другая предварительная обработка: #отключение клиентов с очень частой покупкой, #отключение клиентов с очень редкой покупкой, #отбрасывание продуктов с очень низкой частотой покупки и #проверка разреженности.

Оценка модели

Важно понимать, что у нас нет надежных отзывов о том, какие предметы не нравятся. Отсутствие индикатора избранного элемента может быть связано с несколькими причинами. Мы также не можем отслеживать реакцию пользователей на наши рекомендации. Таким образом, метрики, основанные на точности, такие как RMSE и MSE, не очень подходят, поскольку они требуют знания того, какие элементы не нравятся пользователям, чтобы они имели смысл. Кроме того, в настоящее время мы не можем отслеживать реакцию пользователей на наши рекомендации. Таким образом, метрики, основанные на точности, не очень подходят, поскольку они требуют знания того, какие программы нежелательны для пользователя. Однако просмотр программы свидетельствует о том, что она вам нравится, что делает применимыми меры, ориентированные на припоминание.

Шаг 1/2: Случайное маскирование и измерение прогнозируемых и фактических значений замаскированных значений — оценка ROC AUC

Шаг 2/2. Ранжирование на основе отзыва — Средний процентный рейтинг (MPR), также известный как ожидаемый процентильный рейтинг. Более низкие значения MPR более желательны. Ожидаемое значение MPR для случайных прогнозов составляет 50%, и, таким образом, MPR > 50% указывает на то, что алгоритм не лучше случайного.

использованная литература

Статья о подходе неявных рекомендаций

Статья о подходах к совместной фильтрации