【发布时间】:2015-03-09 01:56:11
【问题描述】:
我有一个关于使用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); 获得推荐 - 大约需要
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
是的 .. 每次都像 26 毫秒
但实际上,使用此推荐器我必须等待很长时间才能得到答案 -
recommenderBuilder.buildRecommender(model).recommend(101, 10);
GenericItemBasedRecommender —> 49267.09 毫秒 .. 或有时更少 ...但永远不会低于 100 毫秒!!
我将 GroupLens 10M 数据与 GroupLensDataModel 一起使用,我使用 0.95 trainingPercentage 数据和 1.0 evaluationPercentage 进行评估
通过完整的评估百分比,我将确保创建的推荐考虑到所有项目......所以我可以将平均推荐时间与正常推荐进行比较
为什么将 GenericItemBasedRecommender 与 AverageAbsoluteDifferenceRecommenderEvaluator 结合使用,每次推荐的平均时间会如此短?但实际上使用#recommend方法并没有那么快
我不明白..希望有人能解决这个问题!谢谢!
【问题讨论】: