RMSE太小。推荐系统

时间:2015-06-20 07:47:12

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

抱歉,我是推荐系统的新手,但我用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); 

1 个答案:

答案 0 :(得分:0)

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

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