mahout Рекомендатор - PullRequest
       10

mahout Рекомендатор

3 голосов
/ 27 ноября 2011

Документация для Apache Mahout упоминает следующее:

// Construct the list of pre-computed correlations
Collection <GenericItemSimilarity.ItemItemSimilarity>  correlations = ...;

Я не уверен, как фактическая конструкция выполняется в приведенной выше строке. Может кто-нибудь привести пример?

ItemSimilarity itemSimilarity  =  new GenericItemSimilarity(correlations);

Ответы [ 2 ]

3 голосов
/ 27 ноября 2011

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

A "generic" {@link ItemSimilarity} which takes a static list of precomputed item similarities and bases its responses on that alone. The values may have been precomputed offline by another process, stored in a file, and then read and fed into an instance of this class.

Если у вас есть десятки миллионов рекомендаций или меньше, вы можете просто вычислить сходства на лету и использовать другой конструктор GenericItemSimilarity - GenericItemSimilarity(ItemSimilarity otherSimilarity, DataModel dataModel)

Например:

DataModel dataModel = new FileDataModel(new File("path://to/file.csv"));
ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
ItemSimilarity itemSimilarity = new GenericItemSimilarity(itemSimilarity, dataModel);
2 голосов
/ 27 ноября 2011

Здесь нет никакой магии, она просто предлагает вам создать группу объектов ItemItemShoity, по одному для каждого подобия элемента-предмета, о котором вы знаете.

Collection<GenericItemSimilarity.ItemItemSimilarity> correlations = 
  new ArrayList<GenericItemSimilarity.ItemItemSimilarity>();
correlations.add(new GenericItemSimilarity.ItemItemSimilarity(1, 2, 0.5));
...

Вы можете сделать это так или любым другим способом.так, как ты хочешь.

...