2013-12-17 4 views
4

У меня есть набор данных из 50 миллионов пользовательских настроек, содержащих 8 миллионов различных пользователей и 180K отдельных продуктов. В настоящее время я использую логическую модель данных и имею базовую рекомендацию, основанную на сходстве с танимото. Я пытаюсь изучить различные алгоритмы для получения лучших рекомендаций и начать с SVD с использованием факторизатора ALSWR. Я использовал базовый рекомендатель SVD, представленный в mahout, следующим образом.Реализация рекомендации SVD в Mahout

DataModel dataModel = new FileDataModel("/FilePath");

ALSWRFactorizer factorizer = new ALSWRFactorizer(dataModel, 50, 0.065, 15);

recommender = new SVDRecommender(dataModel, factorizer);

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

У меня есть несколько сомнений относительно подхода: -

  1. Что является лучшим способом выбрать параметры факторизации и как много времени делает обычно принимает факторизацию? Я попытался с вышеуказанными параметрами, и сама факторизация продолжалась 30+ мин.
  2. Есть ли способ обслуживать запросы в реальном времени немного быстрее, так как получение точечного продукта со всеми возможными векторами товаров приводит к увеличению времени запроса? Есть ли что-то в автономном режиме SVD?
  3. Глядя на размер набора данных, который у меня есть, должен ли я попробовать другой факторизатор?

ответ

2

Я хочу ответить на все ваши вопросы вместе.

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

  1. Выполнение автономного расчета подобия предметов, которое не нужно делать, что часто для предметов с большим количеством оценок. Они в основном не меняются. Возможно, вы захотите пересчитать для элемента с несколькими рейтингами.
  2. Рассчитайте прогноз рейтинга пользовательских позиций для каждого пользователя в режиме реального времени, используя список подобий элементов. Эта операция не такая дорогостоящая, поскольку у вас гораздо меньше предметов, чем у пользователей. Это также операция с постоянным временем, когда размер элемента не так сильно изменяется.
+0

У нас уже есть такой подход. Мы внедрили базовый элемент item, теперь мы пытаемся реализовать другой алгоритм с использованием некоторой формы SVD. Из того, что я прочитал, я надеялся, что SVD будет иметь лучшее качество рекомендации. – user1045047

+0

Я думаю, вам не повезло, когда у вас есть требования в реальном времени. Кстати: вы НАДЕЕТЕСЬ для лучшего качества? вы можете сначала попробовать алгоритм и посмотреть, лучше ли это или нет! – fatih

+0

Вот о чём мой вопрос, я читал о SVD, и теперь я это пробовал, но, как уже было сказано, мое первое сомнение в том, что нужно настроить алгоритмы и запустить факторизацию. Помимо этого, вторая вещь, которую я задал, заключается в том, есть ли способ предоставить рекомендации в реальном времени, может быть, это должен быть отдельный вопрос. – user1045047

Смежные вопросы