The problem is that you have boolean data with no ratings, so all the ratings are 1. But you are using GenericItemBasedRecommender, which expects ratings. Since it ranks on estimated ratings, but, all ratings are 1, the result is essentially random. Use GenericBooleanPrefItemBasedRecommender. On Thu, Sep 20, 2012 at 2:04 PM, Davide Pozza wrote: > Hello > > I'm trying to understand how to develop a item-based recommendation module > for an ecommerce website. > > Here's my input data.csv file format: > > USER_ID,ITEM_ID > > (data coming from the orders history, so I haven't any rating to use) > > If I correctly understand the documentation, the following implementations > should be equivalent (the first one just uses the precomputed data), but > they return different results. > Could anyone help me to understand the reason? > > FIRST IMPLEMENTATION > ==================== > DataModel dataModel = new FileDataModel(new File("data.csv"));//FORMAT > user_id,item_id > > //precomputed data generated by ItemSimilarityJob with > SIMILARITY_LOGLIKELIHOOD > ItemSimilarity similarity = new FileItemSimilarity(new > File("precomputed_data")); > > GenericItemBasedRecommender recommender = > new GenericItemBasedRecommender(dataModel, similarity); > > long userId = 8500003; > List recommendations = > recommender.recommend(userId , 5); > for (RecommendedItem recommendation : recommendations){ > System.out.println(recommendation); > } > > ==RESULT== > RecommendedItem[item:1653, value:1.0] > RecommendedItem[item:14, value:1.0] > RecommendedItem[item:1592, value:1.0] > RecommendedItem[item:25, value:1.0] > RecommendedItem[item:43, value:1.0] > > SECOND IMPLEMENTATION > ====================== > DataModel dataModel = new FileDataModel(new File("data.csv"));//FORMAT > user_id,item_id > > ItemSimilarity similarity = new LogLikelihoodSimilarity(dataModel); > > GenericItemBasedRecommender recommender = > new GenericItemBasedRecommender(dataModel, similarity); > > long userId = 8500003; > List recommendations = > recommender.recommend(userId , 5); > for (RecommendedItem recommendation : recommendations){ > System.out.println(recommendation); > } > > ==RESULT== > RecommendedItem[item:28, value:1.0] > RecommendedItem[item:14, value:1.0] > RecommendedItem[item:20, value:1.0] > RecommendedItem[item:21, value:1.0] > RecommendedItem[item:25, value:1.0] > > -- > Davide Pozza