Mahout — оценщик рекомендаций возвращает 0,0

Хорошо, я ОЧЕНЬ новичок в Mahout и java. Я пытаюсь оценить рекомендателя, и приведенный ниже код возвращает 0,0 КАЖДЫЙ РАЗ, независимо от меры расстояния или размера кластера, который я использую. Ясно, что это вообще не разделение данных обучения и тестирования, и я не уверен, почему.

Любая помощь с этим кодом приветствуется!

public class Example {
public static void main(String[] args) throws Exception {

 final DataModel model = new FileDataModel(new File("FILENAME")) ;
  RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
  RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
      @Override
      public Recommender buildRecommender(DataModel dataModel) throws TasteException {
          UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
          ClusterSimilarity clusterSimilarity = new NearestNeighborClusterSimilarity(similarity);
          TreeClusteringRecommender tree = new TreeClusteringRecommender(model, clusterSimilarity, 50);
          return tree;
      }
  } ;
double score = evaluator.evaluate(recommenderBuilder, null, model, .7, 1.0);
    System.out.println(score);
    }
}

Спасибо!


person user2793047    schedule 27.09.2013    source источник


Ответы (2)


Я полагаю, это потому, что вы передаете модель в качестве параметра в методе buildRecommender. Вы должны использовать dataModel в этом методе при передаче DataModel таким вещам, как PearsonCorrelation, NearestNeighborClusterSimilarity и т. д.

Если вы этого не сделаете, вы в конечном итоге оцените модель данных, содержащую все предпочтения, что означает, что она попытается оценить предпочтение, найти его уже существующим и вернуть значение. Таким образом, у вас всегда будут идеальные рекомендации, поскольку модель DataModel уже знает предпочтения.

person user3517559    schedule 10.04.2014

из документации mahout,

https://builds.apache.org/job/Mahout-Quality/javadoc/org/apache/mahout/cf/taste/eval/RecommenderEvaluator.html#evaluate(org.apache.mahout.cf.taste.eval.RecommenderBuilder, org.apache.mahout.cf.taste.eval.DataModelBuilder, org.apache.mahout.cf.taste.model.DataModel, double, double)

Evaluate() Возвращает: «оценку», показывающую, насколько хорошо предполагаемые предпочтения Рекомендателя соответствуют реальным значениям; более низкие баллы означают лучшее совпадение, а 0 — идеальное совпадение

Думаю, ты в порядке.

person Daehee Han    schedule 13.12.2013