public abstract class AbstractDifferenceRecommenderEvaluator extends Object implements RecommenderEvaluator
Modifier and Type | Class and Description |
---|---|
class |
AbstractDifferenceRecommenderEvaluator.PreferenceEstimateCallable |
Modifier | Constructor and Description |
---|---|
protected |
AbstractDifferenceRecommenderEvaluator() |
Modifier and Type | Method and Description |
---|---|
protected abstract double |
computeFinalEvaluation() |
double |
evaluate(RecommenderBuilder recommenderBuilder,
DataModelBuilder dataModelBuilder,
DataModel dataModel,
double trainingPercentage,
double evaluationPercentage)
Evaluates the quality of a
Recommender 's recommendations. |
protected static void |
execute(Collection<Callable<Void>> callables,
AtomicInteger noEstimateCounter,
RunningAverageAndStdDev timing) |
float |
getMaxPreference() |
float |
getMinPreference() |
protected abstract void |
processOneEstimate(float estimatedPreference,
Preference realPref) |
protected abstract void |
reset() |
void |
setMaxPreference(float maxPreference) |
void |
setMinPreference(float minPreference) |
protected AbstractDifferenceRecommenderEvaluator()
public final float getMaxPreference()
getMaxPreference
in interface RecommenderEvaluator
public final void setMaxPreference(float maxPreference)
setMaxPreference
in interface RecommenderEvaluator
public final float getMinPreference()
getMinPreference
in interface RecommenderEvaluator
public final void setMinPreference(float minPreference)
setMinPreference
in interface RecommenderEvaluator
public double evaluate(RecommenderBuilder recommenderBuilder, DataModelBuilder dataModelBuilder, DataModel dataModel, double trainingPercentage, double evaluationPercentage) throws TasteException
RecommenderEvaluator
Evaluates the quality of a Recommender
's recommendations.
The range of values that may be returned depends on the implementation, but lower values must
mean better recommendations, with 0 being the lowest / best possible evaluation, meaning a perfect match.
This method does not accept a Recommender
directly, but
rather a RecommenderBuilder
which can build the
Recommender
to test on top of a given DataModel
.
Implementations will take a certain percentage of the preferences supplied by the given DataModel
as "training data". This is typically most of the data, like 90%. This data is used to produce
recommendations, and the rest of the data is compared against estimated preference values to see how much
the Recommender
's predicted preferences match the user's
real preferences. Specifically, for each user, this percentage of the user's ratings are used to produce
recommendations, and for each user, the remaining preferences are compared against the user's real
preferences.
For large datasets, it may be desirable to only evaluate based on a small percentage of the data.
evaluationPercentage
controls how many of the DataModel
's users are used in
evaluation.
To be clear, trainingPercentage
and evaluationPercentage
are not related. They
do not need to add up to 1.0, for example.
evaluate
in interface RecommenderEvaluator
recommenderBuilder
- object that can build a Recommender
to testdataModelBuilder
- DataModelBuilder
to use, or if null, a default DataModel
implementation will be useddataModel
- dataset to test ontrainingPercentage
- percentage of each user's preferences to use to produce recommendations; the rest are compared
to estimated preference values to evaluate
Recommender
performanceevaluationPercentage
- percentage of users to use in evaluationRecommender
's
estimated preferences match real values; lower scores mean a better match and 0 is a
perfect matchTasteException
- if an error occurs while accessing the DataModel
protected static void execute(Collection<Callable<Void>> callables, AtomicInteger noEstimateCounter, RunningAverageAndStdDev timing) throws TasteException
TasteException
protected abstract void reset()
protected abstract void processOneEstimate(float estimatedPreference, Preference realPref)
protected abstract double computeFinalEvaluation()
Copyright © 2008–2017 The Apache Software Foundation. All rights reserved.