mahout-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lance Norskog (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (MAHOUT-586) Redo RecommenderEvaluator for modularity
Date Mon, 17 Jan 2011 04:57:43 GMT

    [ https://issues.apache.org/jira/browse/MAHOUT-586?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12982478#action_12982478
] 

Lance Norskog edited comment on MAHOUT-586 at 1/16/11 11:57 PM:
----------------------------------------------------------------

Complete rewrite of [MAHOUT-559]

Total rewrite to a new modular implementation:

Removes old evaluator recommender implementation.
New RecommenderEvaluator interface with PreferenceBased and OrderBased implementations.
New SamplingDataModel wrapper supplies randomly selected prefs from a delegate DataModel.
PreferenceBaseRecommenderEvaluator does roughly what the old Abstract.....Evaluator does,
but uses SamplingDataModel to implement hold-outs.
RecommenderEvaluator allows different calculation formula for evaluators. The different calculations
from the first patch are picked with a choosable Enum.

I'm happy with that it does, and was able to analyze my recommender projects more effectively.

I'm not sure exactly what the old RecommenderEvaluator did with held-out sampled data. This
code from GroupLensRecommenderEvaluatorRunner does the same thing, I think. The training datamodel
holds out the given percentage of both users and preferences within the remaining users.

RecommenderEvaluator evaluator = new PreferenceBasedRecommenderEvaluator();
File ratingsFile = TasteOptionParser.getRatings(args);
DataModel model = ratingsFile == null ? new GroupLensDataModel() : new GroupLensDataModel(ratingsFile);
GroupLensRecommenderBuilder recommenderBuilder = new GroupLensRecommenderBuilder();
DataModel trainingModel = new SamplingDataModel(model, 0.0, 0.9, Mode.USER);
DataModel testModel = glModel;
Recommender trainingRecommender = recommenderBuilder.buildRecommender(trainingModel);
Recommender testRecommender = recommenderBuilder.buildRecommender(testModel);
RunningAverage tracker = new CompactRunningAverageAndStdDev();
evaluator.evaluate(trainingRecommender, testRecommender, 50, tracker, RecommenderEvaluator.Formula.NONE);
double average = tracker.getAverage();
log.info(String.valueOf(average));

      was (Author: lancenorskog):
    Complete rewrite of 559
  
> Redo RecommenderEvaluator for modularity
> ----------------------------------------
>
>                 Key: MAHOUT-586
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-586
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>            Reporter: Lance Norskog
>         Attachments: MAHOUT-586.patch
>
>
> The RecommenderEvaluator implementation is hard-coded around one algorithm.
> This is a more flexible, modular rewrite.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message