Mahout-Рекомендация пользователей

Я пытаюсь найти способ, используя apache Mahout, рекомендовать похожих пользователей, а не Предметы. У меня есть список пользователей, каждый из которых читал определенные книги. Я хотел спросить, есть ли способ рекомендовать группу пользователей другому пользователю, основываясь на том, что он прочитал.
Как вы понимаете, рекомендуемые пользователи читали бы одни и те же книги.
Спасибо за вашу помощь и ваше руководство.

2 ответа

Решение

Используйте задание спарк-строк в Mahout v1. Создать файл из

user-ID<tab>book-ID1<space>book-ID2<space>etc...

Другими словами, каждая строка - это история прочитанных книг пользователя. Первый столбец - это идентификатор пользователя, второй столбец - это список идентификаторов книг, разделенных пробелами. Запустите "mahout spark-rowlinksity", и вы получите файлы в форме:

user-ID<tab>user-ID5:strength<space>user-ID6:strength<space>etc...

Это список похожих пользователей для каждого пользователя. Список отсортирован, и сила - это показатель LLR (логарифмического правдоподобия) того, насколько похожи пользователи.

Документы здесь: http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.html

В Java вы можете сделать это так:

org.apache.mahout.cf.taste.model.DataModel dataModel;
...
UserSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);
UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.75, similarity, dataModel);
UserBasedRecommender userBasedRecommender = new GenericUserBasedRecommender(dataModel, neighborhood, similarity);
long[] mostSimilarUserIDs = userBasedRecommender.mostSimilarUserIDs(...);
Другие вопросы по тегам