Сегодняшние заголовки [Неожиданная битва рекомендательных системных алгоритмов]

искусственный интеллект

推荐系统算法之 surprise 实战

Изображение через обзор алгоритмов рекомендаций

В последней статье «Анализ поведения пользователей системы рекомендаций» были представлены некоторые базовые алгоритмы рекомендаций, в этой статье будет использоваться библиотека сюрпризов для более глубокого анализа этих алгоритмов.

NormalPredictor

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

Задача: Имея набор выборок x 1 , x 2 ... x n , о которых известно, что они исходят из гауссовского распределения N(µ,σ), попытайтесь оценить параметры µ,σ.

Функция плотности вероятности распределения Гаусса:

推荐系统算法之 surprise 实战

Вводя в выборку значение xi из Xi, мы получаем:

推荐系统算法之 surprise 实战

Записываем L(x) и упрощаем выражение:

推荐系统算法之 surprise 实战

Наконец, мы выводим формулу, чтобы получить µ,σ:

推荐系统算法之 surprise 实战

Посмотрите на код:

推荐系统算法之 surprise 实战

BaselineOnly

Второй алгоритм основан на Факторе соседей: масштабируемая и точная совместная фильтрация Алгоритм находит некоторые проблемы с традиционным методом CF:

  • Разные предметы имеют разный рейтинг

  • У разных пользователей разные оценки

  • Рейтинги меняются со временем

Итак, предлагается следующая базовая модель:

推荐系统算法之 surprise 实战

где u — средний балл, bu — предвзятость пользователя, а bi — предвзятость элемента, что эквивалентно следующей задаче об экстремальных значениях:

推荐系统算法之 surprise 实战

Можно получить следующие бу и би:

推荐系统算法之 surprise 实战

Снова можем с удивлением смотреть на код, реализация внутри такая:

推荐系统算法之 surprise 实战

Запустите код, чтобы получить:

推荐系统算法之 surprise 实战

Можно обнаружить, что результат лучше, чем у NormalPredictor.

KNNBasic

KNNBasic — это базовый алгоритм CF, основанный на пользователях или элементах.

推荐系统算法之 surprise 实战

Вычислите сходство между пользователями или вычислите сходство между элементами.

推荐系统算法之 surprise 实战

Вы можете видеть, что этот результат немного хуже, чем у BaselineOnly.

KNNWithMeans

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

推荐系统算法之 surprise 实战

Результат, рассчитанный методом среднего, немного лучше, чем KNNBasic.

推荐系统算法之 surprise 实战

KNNBaseline

KNNBaseline основан на KNNWithMeans и заменяет среднее значение значением базовой линии.Формула расчета выглядит следующим образом:

推荐系统算法之 surprise 实战

Видно, что использование метода KNNBaseline пока дает лучший результат.

推荐系统算法之 surprise 实战

SVD

Начиная с этого алгоритма, это делается с помощью алгоритма матричной факторизации, начиная с самого простого метода svd.

Сначала определите оценочное значение:

推荐系统算法之 surprise 实战

в определении потери

推荐系统算法之 surprise 实战

Наконец, метод обновления:

推荐系统算法之 surprise 实战

где eui - остаток

推荐系统算法之 surprise 实战

推荐系统算法之 surprise 实战

Основной код:

推荐系统算法之 surprise 实战

svd++

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

  • Поведение с явной обратной связью включает в себя поведение, при котором пользователи четко выражают свои предпочтения в отношении элементов: основными методами являются рейтинги и оценки «нравится/не нравится»;

  • Поведение с неявной обратной связью относится к такому поведению, которое не отражает четко пользовательских предпочтений: наиболее репрезентативным поведением с неявной обратной связью является поведение при просмотре страниц;

Дополнительные сведения см. в предыдущей статье «Анализ поведения пользователей рекомендательных систем».

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

На этом этапе мы моделируем следующую формулу:

推荐系统算法之 surprise 实战

где R(u) — набор элементов, неявное поведение которых у пользователя u, а y — векторное моделирование неявного поведения элементов.Если у пользователя есть несколько неявных поведений, мы также можем добавить скрытый вектор:

推荐系统算法之 surprise 实战

На данный момент метод обновления параметров:

推荐系统算法之 surprise 实战

Код:

推荐系统算法之 surprise 实战

Эффект выполнения кода:

推荐系统算法之 surprise 实战

NMF

И неотрицательная матричная факторизация (NMF), и svd выполняют матричную факторизацию, поэтому я не буду много объяснять, просто посмотрите на эффект выполнения кода:

推荐系统算法之 surprise 实战

Суммировать

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