Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 行家推荐人_Java_Mahout - Fatal编程技术网

Java 行家推荐人

Java 行家推荐人,java,mahout,Java,Mahout,报告提到以下内容: // Construct the list of pre-computed correlations Collection <GenericItemSimilarity.ItemItemSimilarity> correlations = ...; 本例指的是这样一种情况,即您已经计算了相似性,例如通过Hadoop作业,并存储在文件系统或数据库中。正如构造器文档所示: 一个“泛型”{@link ItemSimilarity},它获取预先计算的项相似性的静态列表

报告提到以下内容:

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

本例指的是这样一种情况,即您已经计算了相似性,例如通过Hadoop作业,并存储在文件系统或数据库中。正如构造器文档所示:

一个“泛型”{@link ItemSimilarity},它获取预先计算的项相似性的静态列表,并将其响应单独基于该列表。这些值可能已由另一个进程脱机预计算,存储在文件中,然后读取并馈送到此类的实例中。


如果您有数千万条或更少的建议,您只需动态计算相似性,然后使用另一个
GenericItemSimilarity
constructor-
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);

这里没有什么神奇之处,只是建议您创建一组ItemSimilarity对象,为您知道的每个项目相似性创建一个对象

Collection<GenericItemSimilarity.ItemItemSimilarity> correlations = 
  new ArrayList<GenericItemSimilarity.ItemItemSimilarity>();
correlations.add(new GenericItemSimilarity.ItemItemSimilarity(1, 2, 0.5));
...
集合关联=
新的ArrayList();
添加(新的GenericItemSimilarity.ItemSimilarity(1,2,0.5));
...

您可以通过这种方式或任何其他方式进行推荐。

“如果您有数千万条或更少的推荐,您只需动态计算相似度”->使用10M movielens数据,基于项目的推荐加载大约需要22秒。。基于用户的测试只需要200毫秒。如何使用item-based动态加载数千万?我已经创建了一个相关集合,正如您在这里提到的,然后创建了以下相似性实例:new CachingItemSimilarity(new GenericItemSimilarity(correlations),dataModel.getNumItems())。。使用1M MovieLens数据,我的基于项目的推荐程序只比以前快了40-50%(比如589.5毫秒而不是1222.9毫秒)。但是基于用户的速度真的很快,就像24.2ms?这怎么会发生?我对项目相似性的预计算可以吗?我希望你也能给我一点时间:)
Collection<GenericItemSimilarity.ItemItemSimilarity> correlations = 
  new ArrayList<GenericItemSimilarity.ItemItemSimilarity>();
correlations.add(new GenericItemSimilarity.ItemItemSimilarity(1, 2, 0.5));
...