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

Lance Norskog commented on MAHOUT-586:
--------------------------------------

The problem with the API is that it subclasses to pick a counting algorithm. It 
should implement an interface to pick an evaluation algorithm. The counting 
algorithm can be supplied by a separate object. There are two ways to add an 
order-based evaluator to the API:

# Shoehorn the OrderBased evaluator into the Abstract*Evaluator class, we can 
have one subclass to make a simple running average and another to make an RMS 
value. This puts two mostly separate chunks of code into one abstract class. 
Except then we have to have some way to say "do preference-based" or "do 
order-based". 

# Make two separate Abstract*Evaluator classes, one for preference-based 
evaluation and the other for order-based evaluation, and then have two 
subclasses for each one. This would require 4 subclasses to get a 
preference-based average, a preference-based RMS, an order-based average, or an 
order-based RMS.



> 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
>            Assignee: Sean Owen
>             Fix For: 0.5
>
>         Attachments: MAHOUT-559.patch, MAHOUT-586.patch, 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to