我是推荐系统的新手。我正在尝试学习 Mahout,到目前为止,我认为我已经掌握了它。
但是,当我尝试使用 Mahout in Action (Listing 2.4, page 21) 一书中的示例计算 Precision & Recall 时遇到了一个相当特殊的问题,为了更方便,我将正文复制粘贴到这里:
RandomUtils.useTestSeed();
DataModel model = new FileDataModel (new File("intro.csv"));
RecommenderIRStatsEvaluator evaluator =
new GenericRecommenderIRStatsEvaluator ();
RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel model)
throws TasteException {
UserSimilarity similarity = new PearsonCorrelationSimilarity (model);
UserNeighborhood neighborhood =
new NearestNUserNeighborhood (2, similarity, model);
return
new GenericUserBasedRecommender (model, neighborhood, similarity);
}
};
IRStatistics stats = evaluator.evaluate(
recommenderBuilder, null, model, null, 2,
GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD,
1.0);
System.out.println(stats.getPrecision());
System.out.println(stats.getRecall());
当我尝试使用书中找到的小数据集执行上述操作时,一切都应该是这样。但是,当我尝试使用 Movielens 1M 或 10M 计算 Precision & Recall 时,结果非常低……例如 Precision 和 Recall @ 2 等于:P:0.00573 和 R:0.005882
我没有想法,所以如果有人遇到或遇到类似问题,我很高兴听到有解决方案......