Рекомендации на основе содержания в масштабе

Этот вопрос, вероятно, часто повторяется в блогах и на сайтах вопросов и ответов, но я пока не нашел конкретного ответа.

Я пытаюсь построить систему рекомендаций для клиентов, используя только их историю покупок.

  • Допустим, в моем приложении есть n продуктов.
  • Вычислить сходство элементов для всех n продуктов на основе их атрибутов (таких как страна, тип, цена)
  • Когда пользователю нужна рекомендация - зациклить ранее купленные продукты p для пользователя u и получить похожие продукты (сходство делается на предыдущем шаге)

Если я прав, мы называем это рекомендацией на основе содержимого, а не совместной фильтрацией, поскольку она не предполагает одновременного появления элементов или пользовательских предпочтений для элемента.

Моя проблема многократна:

  1. Существует ли какая-либо существующая масштабируемая платформа ML, которая соответствует рекомендациям, основанным на соперничестве (я могу использовать другие технологии/язык)
  2. Есть ли способ настроить Mahout, чтобы получить такой результат?
  3. Является ли классификация способом обработки рекомендаций на основе контента?
  4. Это что-то, что база данных графа хорошо решает?

Примечание. Я посмотрел на Mahout (поскольку я знаком с Java, а Mahout, по-видимому, использует Hadoop для распределенной обработки), чтобы сделать это в масштабе и воспользоваться хорошо протестированными алгоритмами ML.

Ваша помощь приветствуется. Любые примеры были бы действительно замечательными. Спасибо.


person Community    schedule 23.04.2015    source источник
comment
Это слишком широко. Существует значительная литература о том, как это сделать, и компромиссы повсюду. Начните с поиска статьи, в которой обобщаются попытки в этой области.   -  person Daniel Langdon    schedule 24.04.2015
comment
Я ищу то же самое, вы нашли что-то, так как вы разместили вопрос. Я имею в виду некоторые существующие реализации для этого.   -  person imanis_tn    schedule 03.12.2015


Ответы (1)


Так называемые рекомендатели «элемент-элемент» являются естественными кандидатами для предварительного вычисления сходства, потому что атрибуты элементов редко меняются. Я бы посоветовал вам предварительно вычислить сходство элементов между каждым элементом и, возможно, сохранить верхний K для каждого элемента, и, если у вас достаточно ресурсов, вы можете загрузить матрицу подобия в основную память для рекомендации в реальном времени.

Посмотрите мой ответ на этот вопрос, чтобы узнать, как это сделать в Mahout: Предоставляет ли Mahout способ определения сходства между контентом (для рекомендаций на основе контента)?

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

Для сравнения производительности различных структур данных для хранения значений проверьте этот вопрос: ">Предварительно рассчитанное Mahout сходство между товарами — медленная рекомендация

person Dragan Milcevski    schedule 24.04.2015
comment
Спасибо за ответ. Я попробую это. - person ; 24.04.2015