That sounds reversed. Are you sure? without pref values, you should get 0. With values, you almost certainly won't get 0 RMSE. RMSE can't be used with boolean data.
Code #4 needs to use the boolean user-based recommender or else you will get "1" for all estimates and results are randomly ordered then. On Tue, Jan 22, 2013 at 4:04 PM, Zia mel <[email protected]> wrote: > Thanks Sean. > > - When I used GenericUserBasedRecommender in code 2 I got 0 , but when > using GenericBooleanPrefUserBasedRecommender both MAE and RMSE in case > 2 gave me scores, so only RMSE is not useful or also MAE ? > > - If I want to compare between recommenders that use preferences and > those that don't use , does using code 3 and 4 below with > GenericRecommenderIRStatsEvaluator makes sense? Since using code 2 > with GenericBooleanPrefUserBasedRecommender creates different > recommender that uses weights. > > //--- Code 3 ----- > > DataModel model = new FileDataModel(new File("ua.base")); > > RecommenderIRStatsEvaluator evaluator = new > GenericRecommenderIRStatsEvaluator(); > RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { > > public Recommender buildRecommender(DataModel model) throws > TasteException { > UserSimilarity similarity = new PearsonCorrelationSimilarity(model); > UserNeighborhood neighborhood = new > NearestNUserNeighborhood(k, similarity, model); > return new GenericUserBasedRecommender(model, neighborhood, > similarity); > }}; > > //--- Code 4 --- > > DataModel model = new GenericBooleanPrefDataModel( > GenericBooleanPrefDataModel.toDataMap( > new FileDataModel(new File("ua.base")))); > > RecommenderIRStatsEvaluator evaluator = new > GenericRecommenderIRStatsEvaluator(); > RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { > > public Recommender buildRecommender(DataModel model) throws > TasteException { > UserSimilarity similarity = new LogLikelihoodSimilarity(model); > UserNeighborhood neighborhood = new > NearestNUserNeighborhood(k, similarity, model); > return new GenericUserBasedRecommender(model, neighborhood, > similarity); > }}; > > > On Tue, Jan 22, 2013 at 1:58 AM, Sean Owen <[email protected]> wrote: >> No it's really #2, since the first still has data that is not >> true/false. I am not sure what eval you are running, but an RMSE test >> wouldn't be useful in case #2. It would always be 0 since there is >> only one value in the universe: 1. No value can ever be different from >> the right value. >> >> On Tue, Jan 22, 2013 at 4:34 AM, Zia mel <[email protected]> wrote: >>> Hi ! >>> >>> Can we say that both code 1 and 2 below are using boolean recommender >>> since they both use LogLikelihoodSimilarity? Which code is used by >>> default when no preferences are available ? When using >>> GenericUserBasedRecommender in code 1 it gave a score during >>> evaluation , but when using it in code 2 it gave 0 , is the score >>> given by code 1 correct since in MAI book page 23 said "In the case of >>> Boolean preference data, only a precision-recall test is available >>> anyway". >>> >>> //-- Code 1 -- >>> DataModel model = new GroupLensDataModel(new File("ratings.dat")); >>> RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { >>> public Recommender buildRecommender(DataModel model) throws >>> TasteException { >>> UserSimilarity similarity = new LogLikelihoodSimilarity(model); >>> UserNeighborhood neighborhood = new >>> NearestNUserNeighborhood(2, similarity, model); >>> return new GenericUserBasedRecommender(model, neighborhood, >>> similarity); >>> }}; >>> >>> //--- Code 2 --- >>> DataModel model = new GenericBooleanPrefDataModel( >>> GenericBooleanPrefDataModel.toDataMap( >>> new FileDataModel(new File("ua.base")))); >>> >>> RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { >>> public Recommender buildRecommender(DataModel model) throws >>> TasteException { >>> UserSimilarity similarity = new LogLikelihoodSimilarity(model); >>> UserNeighborhood neighborhood = new >>> NearestNUserNeighborhood(2, similarity, model); >>> return new GenericBooleanPrefUserBasedRecommender (model, >>> neighborhood, similarity); >>> }}; >>> >>> Many Thanks !
