Mahout 精确召回 Movielens 10M

标签 mahout

我是推荐系统的新手。我正在尝试学习 Mahout,到目前为止我认为我已经掌握了它。

但是,当我尝试使用 Mahout in Action( list 2.4,第 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 and Recall @ 2 等于: P:0.00573 和 R:0.005882

我没有想法,所以如果有人遇到或遇到过类似的问题,我会很高兴听到有解决方案...

最佳答案

第 2.4.2 节涉及解释:精确度和召回率测试对推荐系统而言意义不大,因为您实际上不知道哪些项目是“相关”结果。您可以猜测评分高的项目是相关的,但您不知道未评分的项目是否相关。该测试相当于找出推荐与评分最高的项目相交的程度,这并不是精确度/召回率需要做的。

所以你得到低分。实际上,10% 还不错。现在,0.5% 很差,是的。这意味着这不是该数据集的好算法。

Mean average precision , 或 AUC ,可能会让您更全面地了解结果的质量,因为他们正在查看更大范围的结果的行为。这些未在 Mahout 中实现(无论如何都未在代码的这一部分中实现)。

但他们在Myrrix .我知道您将在 Grouplens 10M 数据集上获得 25+% 的准确率/召回率和 14+% 的平均准确率,因为有一个 unit test for this。 . (我是 Mahout 这部分的作者,并将其作为 Myrix 商业化。)如果您正在寻找开箱即用的能够很好地处理此类数据的东西,我认为值得您花时间看看。

关于Mahout 精确召回 Movielens 10M,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15504762/

相关文章:

象夫味道 : in-memory DataModel that supports set/removePreference

hadoop - 基于点击流数据的访问者/用户分析?

java - 在伪分布式模式下设置mapred.map.tasks时出错

java - Mahout 0.9 和 Hadoop 2.2.0 - 找到接口(interface) org.apache.hadoop.mapreduce.JobContext,但类是预期的

java - 如何解析 CSV 文件以便 Mahout 对其进行分类

hadoop - 如何在Mahout中更改randomForest的源代码?

mahout - 在 Mahout 中实现 SVD 推荐器

hadoop - Mahout - Seq2Sparse 单 reducer

apache - 使用 Apache Mahout 机器学习库

hadoop - Mahout 运行分布式推荐给出空文件