Sorry, I'm a newbie at recommender systems, but I wrote few lines of code using the Apache Mahout library.
My dataset is pretty small, 500x100 with 8102 cells known.
The dataset is actually a subset of the Yelp dataset from the "Yelp business rating prediction" competition. I just took the top 100 most commented restaurants, and then took the 500 most active customers.
I created SVDRecommender and then I evaluated RMSE.
The result is about 0.4... Why is it so small?
Maybe I just don't understand something and my dataset is not so sparse, but then I tried with a larger and more sparse dataset and RMSE became even smaller (about 0.18)! Could anyone explain this behaviour?
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 {
return new SVDRecommender(model, factorizer);
}
};
RecommenderEvaluator evaluator = new RMSRecommenderEvaluator();
double score = evaluator.evaluate(builder,
null,
model,
0.6,
1);
System.out.println(score);