我正在尝试mahout,并开始构建所有内容并查看示例。我对协作过滤最感兴趣,因此我从从BookCrossing数据集中查找推荐内容的示例开始。我设法使所有工作正常,该示例运行无错误。但是,输出是这样的:
INFO: Creating FileDataModel for file /tmp/taste.bookcrossing.
INFO: Reading file info...
INFO: Read lines: 433647
INFO: Processed 10000 users
INFO: Processed 20000 users
INFO: Processed 30000 users
INFO: Processed 40000 users
INFO: Processed 50000 users
INFO: Processed 60000 users
INFO: Processed 70000 users
INFO: Processed 77799 users
INFO: Beginning evaluation using 0.9 of BookCrossingDataModel
INFO: Processed 10000 users
INFO: Processed 20000 users
INFO: Processed 22090 users
INFO: Beginning evaluation of 4245 users
INFO: Starting timing of 4245 tasks in 2 threads
INFO: Average time per recommendation: 296ms
INFO: Approximate memory used: 115MB / 167MB
INFO: Unable to recommend in 1 cases
INFO: Average time per recommendation: 67ms
INFO: Approximate memory used: 107MB / 167MB
INFO: Unable to recommend in 2363 cases
INFO: Average time per recommendation: 72ms
INFO: Approximate memory used: 146MB / 167MB
INFO: Unable to recommend in 5095 cases
INFO: Average time per recommendation: 71ms
INFO: Approximate memory used: 113MB / 167MB
INFO: Unable to recommend in 7596 cases
INFO: Average time per recommendation: 71ms
INFO: Approximate memory used: 130MB / 167MB
INFO: Unable to recommend in 10896 cases
INFO: Evaluation result: 1.0895580110095793
当我检查代码时,我可以看到是这样的:
RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator();
File ratingsFile = TasteOptionParser.getRatings(args);
DataModel model =
ratingsFile == null ? new BookCrossingDataModel(true) : new BookCrossingDataModel(ratingsFile, true);
IRStatistics evaluation = evaluator.evaluate(
new BookCrossingBooleanRecommenderBuilder(),
new BookCrossingDataModelBuilder(),
model,
null,
3,
Double.NEGATIVE_INFINITY,
1.0);
log.info(String.valueOf(evaluation));
因此,这似乎是正确的,但我希望从生成的建议和/或相似之处中看到更多详细信息。返回的对象的类型为IRStatistics,它仅显示结果统计信息中的一些数字。我应该看看别的地方吗?这个推荐人不是要获取任何实际推荐吗?
最佳答案
您实际上并不是在生成建议,这里您只是在进行评估。
《行动中的Mahout》一书(link)中的此示例应为您提供有关如何实际获得建议的想法。
该示例仅请求一个用户的建议,在这种情况下,您将遍历所有用户并获得每个用户的建议,然后决定如何处理,例如将其输出到文件中。
同样,该示例未使用数据模型构建器或推荐构建器,但是您不难通过查看方法签名来弄清楚它。