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(...);