I am trying to evaluate a simple item-based recommender using PearsonCorrelationSimilarity
.
I load the DataModel
from a file that contains userid, itemid, preference, timestamp (in this order)
My code looks something like that:
DataModel model = new FileDataModel(new File("FILE_NAME"));
RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel model) throws TasteException {
ItemSimilarity similarity = new PearsonCorrelationSimilarity(model);
Optimizer optimizer = new ConjugateGradientOptimizer();
return new KnnItemBasedRecommender(model, similarity, optimizer, N);
}
};
score = evaluator.evaluate(recommenderBuilder, null, model, 0.7, 1.0);
When I run it I am getting lot's of
INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data:
Does this have to do something with my DataModel
or with the evaluator. I've tried with both RMSRecommenderEvaluator
and AverageAbsoluteDifferenceRecommenderEvaluator
but I am getting the same INFO notice. I also tried using RandomUtils.useTestSeed();.
When I run the same using UserSimilarity
metrics, I don't have this issue.
My question is will this affect my evaluation results?
Thank you. Dragan