Reputation: 891
I have a table with estimates of the users. There are about 1000 entries. From these data, I want to build a recommendation, but returns an empty list Mahout. In what may be the problem?
JDBCDataModel dataModel = new MySQLJDBCDataModel(source, "rate", "userId", "eventId", "rate", null);
dataModel.refresh(null);
try {
UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(dataModel);
userSimilarity.setPreferenceInferrer(new AveragingPreferenceInferrer(dataModel));
UserNeighborhood neighborhood =
new NearestNUserNeighborhood(10, userSimilarity, dataModel);
Recommender recommender =
new GenericUserBasedRecommender(dataModel, neighborhood, userSimilarity);
Recommender cachingRecommender = new CachingRecommender(recommender);
List<RecommendedItem> recommendations =
cachingRecommender.recommend(user.id, 10);
} catch (TasteException e) {
e.printStackTrace();
}
Upvotes: 0
Views: 584
Reputation: 66876
That just means there was nothing eligible for recommendation. Your data set is tiny, and, I imagine too sparse. Pearson does not work well with sparse data as it can rarely compute any similarity.
Upvotes: 7