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 !

Reply via email to