mahout에 주어진 권장 사항 항목을 사용하여 부울 기본 설정을 사용하여 데이터 집합의 정밀도와 회수율을 계산하려고합니다. 내가 GenericBooleanPrefItemBasedRecommender 및Mahout의 부울 기본 설정을 사용하는 아이템 기반 권장 장치의 정확도 및 회수
평가 (RecommenderBuilder recommenderBuilder, DataModelBuilder dataModelBuilder, DataModel이 데이터 모델, IDRescorer의 rescorer에서 INT, 더블 relevanceThreshold, 더블 evaluationPercentage)를 사용하고
는 TasteException을 던졌습니다; 나는 동일한 코드를 여러 번 실행하면 부울 환경 설정이 있기 때문에, 사용자에 대한 "관련"또는 "좋은"영화의 세트가 평가하는 모든 것들 `
1.
는 항상 제공 정확도와 리콜의 동일한 가치와 항상 서로 동일합니다. 왜? RandomUtils.useTestSeed()를 사용하고 있지 않습니다. 데이터를 교육 및 테스트 세트로 나누는 방법은 무엇입니까?
가능성 :
는) 무작위로 시작되는 시점 또는 무작위 테스트 세트에 관련 영화의 고정 비율을두고 각 사용자에 대한 테스트 및 교육에 설정 한 전체 데이터를 분할 : :이 비율을 결정 않는 방법이 있기 때문에 사용자가 매개 변수로 입력 할 수있는 장소가 없습니다. 코드를 실행할 때마다 P와 R의 동일한 값을 얻는 이유는 무엇이며 왜 P에서 n과 R의 값이 같은지?
b) 각 사용자에 대해 교육 세트에 모든 관련 영화를 넣습니다. 그러면 권장 사항을 작성할 정보가 남지 않으므로 사용자가 사용할 수 없습니다.
n에서 P와 R의 값이 같기 때문에, 각 사용자에 대해 관련 영화의 수는 추천 = n의 횟수마다 테스트 세트로 이동된다는 것을 의미합니다. 테스트 세트에 포함 된 관련 영화가 무작위이면 코드를 실행할 때마다 P와 R의 동일한 값을 얻는 이유는 무엇입니까?
내가 생각할 수있는 유일한 설명은 추천자가 다음과 같이 n에서 P와 R을 계산한다는 것입니다. 각 사용자별로 하나씩 테스트 세트에 관련 영화를 무작위로 배치합니다. 프로세스는 임의의 관련 영화를 구분할 수 없기 때문에 무작위로 진행되어야하지만 프로세스가 고정되어 있으며 코드를 실행할 때마다 각 사용자별로 동일한 관련 영화를 선택합니다. 그런 다음 n 권장 사항을 만들고 n에서 P와 R을 계산합니다.
결과는 다음과 같습니다.
1) 교육 및 테스트 세트의 개념은 백분율로 정의되지 않으므로 일반적인 정의와 일치하지 않습니다.
2) P와 R은 항상 서로 같아서 두 개가 아닌 한 개의 측정 항목 만 얻습니다.
3) 'n'영화를 무작위로 선택하는 과정은 매번 동일합니다.
편집 : 나는 내 질문에 대한 답을 찾을 수 CASE IN MY FULL 코드를 추가 AM :
공공 정적 무효 메인 (문자열 []에 인수하는) 예외를 throw {
FileDataModel model = new FileDataModel(new File("data/test.csv"));
RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator();
RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel model) {
ItemSimilarity similarity = new LogLikelihoodSimilarity(model);
return new GenericBooleanPrefItemBasedRecommender(model, similarity);
}
};
IRStatistics stats = evaluator.evaluate(
recommenderBuilder, null, model, null, 5,
GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD,1.0);
System.out.println(stats.getPrecision());
System.out.println(stats.getRecall());
}
Welcome to Stackoverflow. [포맷 도움말] (http://stackoverflow.com/help/formatting)을보고 _code formatting_ 및 _simple lists_ 등을 사용해보십시오. 귀하의 게시물에 대한 또 다른 문제점은 너무 광범위하고 하나 이상의 질문을 포함하거나 주요 질문이 분명하지 않다는 것입니다. 더 구체적으로 말하십시오. – user1251007