2013-09-27 2 views
0

좋아, 전 Mahout과 java에 아주 익숙 해요. 추천인을 평가하려고하는데 아래의 코드는 거리 측정이나 클러스터 크기에 상관없이 항상 0.0을 반환합니다. 분명히 그것은 교육 및 테스트 데이터를 전혀 분할하지 않으며, 왜 그런지 잘 모르겠습니다.Mahout - 추천 평가자가 반환 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); 
    } 
} 

고맙습니다!

코끼리 조련사 문서에서

답변

-1

,

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, 더블, 더블)

evaluate() 반환 값 : 추천인의 예상 선호도가 실제 값과 얼마나 잘 일치 하는지를 나타내는 "score"; 낮은 점수는 더 나은 일치를 의미하고 0은 완벽한 일치입니다.

나는 괜찮다고 생각합니다.

3

여러분이 model을 buildRecommender 메소드 내에서 매개 변수로 전달했기 때문에 그럴 것이라고 생각합니다. DataModel을 PearsonCorrelation, NearestNeighborClusterSimilarity 등과 같은 것으로 전달할 때 해당 메소드 내에서 dataModel을 사용해야합니다.

그렇지 않으면 모든 기본 설정을 포함하는 데이터 모델에서 최종적으로 환경 설정이 이미 존재하는지 확인하고 값을 반환하십시오. 따라서 DataModel 모델은 이미 환경 설정을 알고 있기 때문에 항상 완벽한 권장 사항을 갖게됩니다.