7

В Mahout, имеется поддержка рекомендации на основе элемента с помощью метода API:Как сделать рекомендацию, основанную на деталях, в искровом mllib?

ItemBasedRecommender.mostSimilarItems(int productid, int maxResults, Rescorer rescorer) 

Но Спарк Mllib, оказывается, что API-интерфейсы в пределах БАС может принести рекомендуемые продукты, но идентификатор пользователя должен быть обеспечен через:

MatrixFactorizationModel.recommendProducts(int user, int num) 

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

ответ

11

Искры версии 1.2x не содержат «рекомендацию, основанную на деталях», такую ​​как те, что присутствуют в Mahout.

Однако в настоящее время MLlib поддерживает совместную фильтрацию на основе моделей, где пользователи и продукты описываются небольшим набором скрытых факторов. {Поймите случай использования для неявных (представления, клики) и явной обратной связи (рейтинги) при построении пользователя -элементная матрица.}

MLlib использует алгоритм альтернативных наименьших квадратов (ALS) [можно считать похожим на алгоритм SVD], чтобы изучить эти скрытые факторы.

Если вам необходимо построить чисто Рекомендатор на основе пункт-подобии, я бы рекомендовал это:

  1. Представляет все детали характеристического вектора
  2. Построить матрицу сходства элемента-элемент путем вычисления подобия метрики (например, косинус) с каждой парой пунктов
  3. Использовать этот элемент подобия матрицы, чтобы найти похожие элементы для пользователей

так как матрицы подобия не масштабируются ш флигель, (представьте, как ваша матрица подобия будет расти, если у вас 100 пунктов против 10000 пунктов) это прочитать на Dimsum может быть полезно, если вы планируете реализовать его на большом количестве пунктов:

https://databricks.com/blog/2014/10/20/efficient-similarity-algorithm-now-in-spark-twitter.html

+0

Это было полезно, спасибо. –

3

Пожалуйста, ознакомьтесь с моей реализацией модели рекомендаций по элементам item, используя Apache Spark. here. Вы можете реализовать это, используя матрицу productFeatures, которая создается при запуске алгоритма ALB ALS для данных пользовательских рейтингов. Алгоритм ALS существенно факторизует две матрицы: одна - это userFeatures, а другая - матрица productFeatures. Вы можете запустить сходство с косинусом на матрице рангов productFeatures, чтобы найти сходство элементов товара.

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

  • Нет связанных вопросов^_^