2013-08-09 5 views
0

PearsonCorrelationSimilarity을 사용하여 간단한 아이템 기반 추천기를 평가하려고합니다. 나는 많은의Mahout - 아이템이 테스트 데이터에 있지만 훈련 데이터가 없습니다.

INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 
의를 얻고 그것을 실행하면

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); 

: 나는 사용자 ID가 포함 된 파일에서 DataModel를로드 (이 순서대로) 우선, 타임 스탬프 내 코드가 같이 보입니다를 항목 ID

이 항목은 내 DataModel 또는 평가자와 관련이 있습니다. 나는 RMSRecommenderEvaluatorAverageAbsoluteDifferenceRecommenderEvaluator 모두 시도했지만 동일한 정보 통지를 받고 있습니다. 나는 또한 사용을 시도했다 RandomUtils.useTestSeed();. UserSimilarity 메트릭을 사용하여 같은 것을 실행할 때이 문제가 발생하지 않는다.

제 질문은 내 평가 결과에 영향을 줍니까?

감사합니다. Dragan

답변

1

기본적으로 평가가 발생하기 때문에 Item exists in test data but not training data 메시지가 표시됩니다. 데이터는 2, 학습 세트 및 테스트 세트로 나뉩니다. 추천서는 교육 데이터에 대해 교육을받은 다음 결과가 테스트 세트에 대해 유효성이 검사됩니다. 훈련과 테스트에 대한이 파티션은 무작위로 이루어 지므로 일부 아이템은 테스트 세트가 아닌 훈련 세트에있을 수도 있고 그 반대의 경우도있을 수 있습니다. 더 중요한 결과를 얻으려면 3 번 이상 테스트를 실행하고 결과를 평균화해야합니다.

생산 평가 코드에서 RandomUtils.useTestSeed();을 사용하지 않는 것이 가장 이상적입니다. 테스트를 실행할 때마다 랜덤 시드를 동일하게 설정하여 재연성을 얻습니다. (내부 평가 기 코드를 테스트 해보십시오.)

또한 knh recommender는 Mahout 0.8 (최근 출시)에서 더 이상 사용되지 않으며 0.9