簡體   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