[英]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.