繁体   English   中英

使用Mahout推荐人评估产生混乱

[英]Confusion using Mahout Recommender Evaluation

我有一个关于使用AverageAbsoluteDifferenceRecommenderEvaluator #evaluate方法的问题。

使用GenericUserBasedRecommender

new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel model) throws TasteException {
UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(model);
UserNeighborhood userNeighborhood = new NearestNUserNeighborhood(50, userSimilarity, model);
return new GenericUserBasedRecommender(model, userNeighborhood, userSimilarity);
    }
};

AverageAbsoluteDifferenceRecommenderEvaluator在开始时间显示以下内容:

12:02:04.000 [pool-1-thread-1] INFO  org.apache.mahout.cf.taste.impl.eval.StatsCallable - Average time per recommendation: 127ms
12:02:04.000 [pool-1-thread-1] INFO  org.apache.mahout.cf.taste.impl.eval.StatsCallable - Approximate memory used: 826MB / 960MB

并通过recommenderBuilder.buildRecommender(model).recommend(101, 10);获得推荐recommenderBuilder.buildRecommender(model).recommend(101, 10); -大约需要186.091毫秒..这差不多是来自AverageAbsoluteDifferenceRecommenderEvaluator每个建议的平均时间

现在,使用GenericItemBasedRecommender会发生以下情况:

new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel model) throws TasteException {
ItemSimilarity itemSimilarity = new PearsonCorrelationSimilarity(model);
return new GenericItemBasedRecommender(model, itemSimilarity);
    }
};

评估结果:

11:59:19.950 [main] INFO  o.a.m.c.t.i.eval.AbstractDifferenceRecommenderEvaluator - Starting timing of 63493 tasks in 8 threads
11:59:19.979 [pool-1-thread-1] INFO  org.apache.mahout.cf.taste.impl.eval.StatsCallable - Average time per recommendation: 26ms
11:59:19.979 [pool-1-thread-1] INFO  org.apache.mahout.cf.taste.impl.eval.StatsCallable - Approximate memory used: 598MB / 897MB

是的..每次大约26ms

但实际上,使用此推荐器我必须等待很长一段时间才能找到答案-

recommenderBuilder.buildRecommender(model).recommend(101, 10);

GenericItemBasedRecommender —> 49267.09 ms ..或有时更少...但永远不会低于100ms!

我正在将GroupLens 10M数据与GroupLensDataModel和评估一起使用,我正在使用0.95 trainingPercentage数据和1.0 EvaluationPercentage

有了完整的EvaluationPercentage,我将确保创建的建议将所有项目都考虑在内。.因此,我可以将平均建议时间与正常建议进行比较

为什么通过将GenericItemBasedRecommender和AverageAbsoluteDifferenceRecommenderEvaluator一起使用,每个建议的平均时间会这么少? 但是实际上使用#recommend方法并没有那么快

我不明白..希望有人把它清除掉! 谢谢!

发生这种情况是因为您有10,000个项目和72,000个用户(项目数量的7倍)。

在性能方面,如果您的用户少得多,则应该选择UBCF,否则,最好选择IBCF。

显然,就建议准确性而言,越快不一定是最好的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM