система рекомендаций на основе пользователей не работает должным образом (mahout)

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

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

Какую ошибку я делаю?

Мой код такой -

DataModel dm =new FileDataModel(new File("data.csv"));

UserSimilarity similarity =new PearsonCorrelationSimilarity(dm);

UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, dm);

UserBasedRecommender recommander= new GenericUserBasedRecommender(dm,neighborhood,similarity);

for(LongPrimitiveIterator users=dm.getUserIDs(); users.hasNext();)
{
   Long UserID=users.nextLong();
   List<RecommendedItem>recommendations = recommander.recommend(UserID,10000);
   for(RecommendedItem recommendation : recommendations)
   {

    System.out.println(recommendation);
   }

}

И мой формат модели данных - (userID, ItemID, предпочтение)

как-

25417,11114,1
25417,11114,1
25669,11114,1
25333,11114,1
26426,11114,1
26427,11114,1
25432,11114,1
26432,11114,1
26432,11114,1
13720603,116608,1
13720602,204167,1
13720602,198158,1
13720604,6584,1
13720605,3124,1
217778,76263,2
13720606,5199,1
13720607,63613,1
217778,49443,1
13720608,118189,1
13361003,65759,2
13361003,65759,2
13673094,19002,1
13720609,3284,2
13720610,167130,1
13720611,211780,1
13720611,211780,1
13720612,62397,1
13720613,62397,1
13720614,60860,1
13720613,62397,1
13720615,108533,1 

Пожалуйста помоги. Я не могу выяснить проблему.


person Sunil Kumar    schedule 30.03.2015    source источник


Ответы (1)


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

Кстати, здесь есть более новая и лучшая рекомендательная архитектура от Mahout (она будет использовать идентификаторы вашего приложения):

  1. Mahout Введение в Cooccurrence Recommenders.
  2. Бесплатная электронная книга, в которой рассказывается об общей идее: Практическое машинное обучение
  3. Слайд-презентация, в которой рассказывается о комбинировании действий или других индикаторов: Создание мультимодального рекомендателя совместного появления
  4. Два сообщения в блоге: Что нового в рекомендациях: часть 1 и новые возможности рекомендаций: часть №2
  5. Сообщение с описанием логарифмического отношения правдоподобия: Surprise and Coinsidense LLR используется чтобы уменьшить шум в данных, сохраняя сложность вычислений O (n).
person pferrel    schedule 02.04.2015