2014-05-23 14 views
9

Ho due metodi che classificano un elenco di stringhe in modo diverso, e ciò che possiamo considerare come la "giusta" classifica della lista (cioè un gold standard).Distanze tra le classifiche

In altre parole:

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 

Come posso determinare quale metodo è migliore se si considera che method_1 e method_2 sono scatole nere? Esistono metodi per misurare questo disponibile in SciPy o scikit-learn o librerie simili?

Nel mio caso specifico, ho effettivamente un dataframe e ogni metodo emette un punteggio. Ciò che conta non è la differenza nel punteggio tra i metodi e il punteggio vero, ma i metodi ottengono il punteggio (un punteggio più alto indica un posizionamento più alto per tutte le colonne).

 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 

risposta

8

Siete alla ricerca di guadagno normalizzato scontati cumulativo (NDGC). È una metrica comunemente usata nei ranking dei motori di ricerca per testare la qualità della classifica dei risultati.

L'idea è di testare la classifica (nel tuo caso i due metodi) contro il feedback degli utenti tramite clic (nel cast il vero rango). NDGC ti dirà la qualità della tua classifica relativa alla verità.

Python ha il modulo basato su RankEval che implementa questa metrica (e alcune altre se si desidera provarle). Il repo is here e c'è un bel IPython NB with examples

Problemi correlati