【问题标题】:Running the mahout example for collaborative filtering: where are the results?运行协同过滤的 mahout 示例:结果在哪里?
【发布时间】:2013-05-24 14:56:05
【问题描述】:

我正在对 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 类型,它仅公开结果统计信息中的一些数字。我应该看看别的地方吗?此推荐器不是用于获得任何实际推荐吗?

【问题讨论】:

    标签: machine-learning mahout


    【解决方案1】:

    您实际上并没有生成建议,您只是在执行评估。

    Mahout in Action 一书 (link) 中的这个示例应该让您了解如何实际获得建议。

    该示例仅请求一个用户的推荐,在您的情况下,您将遍历所有用户并获取每个用户的推荐,然后您决定如何处理,例如将它们输出到文件中。

    此外,该示例没有使用数据模型构建器或推荐器构建器,但通过查看方法签名应该不难弄清楚。

    【讨论】:

    • 啊,酷。那时我显然对这个例子期望过高。
    • 是的,这是错误的地方。在第 17 页的示例中给出了最简单的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多