2014-05-23 2 views
9

두 가지 방법으로 문자열 목록의 순위를 달리하고 목록의 "올바른"순위 (즉, 금 표준)로 간주 할 수있는 항목이 있습니다. 즉순위 사이의 거리

:

ranked_list_of_strings_1 = method_1(list_of_strings) 
ranked_list_of_strings_2 = method_2(list_of_strings)  
correctly_ranked_list_of_strings # Some permutation of list_of_strings 

어떻게 어떤 방법이 method_1method_2이 블랙 박스는 점을 고려 더 확인할 수 있습니까? 이것을 측정 할 수있는 방법이 있습니까? SciPy 또는 scikit-learn 또는 이와 유사한 라이브러리가 있습니까?

내 구체적인 경우에는 데이터 프레임이 있고 각 메서드는 점수를 출력합니다. 중요한 것은 방법과 실제 점수의 점수 차이가 아니라 순위가 (모든 점수에서 점수가 높을수록 점수가 높다는 뜻)입니다.

 strings  scores_method_1 scores_method_2 true_scores 
5714 aeSeOg     0.54    0.1   0.8 
5741 NQXACs     0.15    0.3   0.4 
5768 zsFZQi     0.57    0.7   0.2 

답변

8

정규화 할인 누적 이익 (NDGC)을 찾고 있습니다. 결과 순위의 품질을 테스트하기 위해 검색 엔진 순위에서 일반적으로 사용되는 통계입니다.

아이디어는 클릭 수 (실제 순위를 던지기)를 통해 사용자 피드백에 대한 순위 (귀하의 경우 두 가지 방법)를 테스트하는 것입니다. NDGC는 진실에 비례하여 순위의 질을 알려줍니다.

Python은이 메트릭을 구현하는 모듈과 다른 모듈을 구현하기 위해 RankEval 기반 모듈을 사용합니다. repo is here에는 멋진 것이 있습니다. IPython NB with examples