【问题标题】:Too small RMSE. Recommender systemsRMSE 太小。推荐系统
【发布时间】:2015-09-06 05:32:58
【问题描述】:

抱歉,我是推荐系统的新手,但我使用 apache mahout lib 编写了几行代码。嗯,我的数据集非常小,500x100,已知有 8102 个单元。

所以,我的数据集实际上是来自“Yelp 商业评级预测”竞赛的 Yelp 数据集的一个子集。我只选取评论最多的 100 家餐厅,然后选取 500 位最活跃的顾客。

我创建了 SVDRecommender,然后我评估了 RMSE。所以结果大约是 0.4... 为什么这么小?也许我只是不明白一些东西,我的数据集不是那么稀疏,但后来我尝试使用更大更稀疏的数据集,RMSE 变得更小(大约 0.18)!谁能解释我这样的行为?

DataModel model = new FileDataModel(new File("datamf.csv"));
final RatingSGDFactorizer factorizer = new RatingSGDFactorizer(model, 20, 200);
final Factorization f = factorizer.factorize();


RecommenderBuilder builder = new RecommenderBuilder() {
            public Recommender buildRecommender(DataModel model) throws TasteException {
                //build here whatever existing or customized recommendation algorithm
                return new SVDRecommender(model, factorizer);
            }
        };


RecommenderEvaluator evaluator = new RMSRecommenderEvaluator();
        double score = evaluator.evaluate(builder,
                null,
                model,
                0.6,
                1);

System.out.println(score); 

【问题讨论】:

    标签: machine-learning mahout recommendation-engine mahout-recommender


    【解决方案1】:

    RMSE 是通过查看预测评级与其隐藏的真实情况来计算的。因此,稀疏数据集可能只有很少的隐藏评级要预测,或者您的算法可能无法预测许多隐藏评级,因为与其他评级没有相关性。这意味着即使您的 RMSE 较低(“更好”),您的覆盖率也会很低,因为您没有预测很多项目。

    还有另一个问题:RMSE 完全依赖于数据集。在星级评分为 0.5 到 5.0 颗星的 MovieLens 评分数据集上,RMSE 约为 0.9 很常见。但在另一个 0.0 到 1.0 点的数据集上,我观察到 RMSE 约为 0.2。查看数据集的属性,看看 0.4 是否有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-10
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多