3

Apache Mahout Recommender 文档提到以下内容 :

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

我不确定上述行中的实际构造是如何完成的。有人可以提供一个例子吗?

ItemSimilarity itemSimilarity  =  new GenericItemSimilarity(correlations);
4

2 回答 2

3

此示例指的是您已经通过 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);
于 2011-11-27T11:45:43.597 回答
2

这里没有什么魔法,它只是建议你创建一堆 ItemItemSimilarity 对象,每个你知道的 item-item 相似性都有一个。

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

你可以用这种方式或任何你想要的方式。

于 2011-11-27T19:57:49.233 回答