2014-05-23 18 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_1 और method_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) के लिए देख रहे हैं। यह परिणाम रैंकिंग की गुणवत्ता का परीक्षण करने के लिए आमतौर पर खोज इंजन रैंकिंग में उपयोग किया जाने वाला एक मीट्रिक है।

विचार यह है कि आप क्लिक के माध्यम से उपयोगकर्ता प्रतिक्रिया के विरुद्ध अपनी रैंकिंग (अपने मामले में दो विधियों) का परीक्षण करते हैं (आपके कलाकार को सही रैंक में)। एनडीजीसी आपको सत्य के सापेक्ष आपकी रैंकिंग की गुणवत्ता बताएगा।

पायथन में RankEval आधारित मॉड्यूल है जो इस मीट्रिक को लागू करता है (और कुछ अन्य यदि आप उन्हें आजमाएं)। repo is here और एक अच्छा IPython NB with examples

है
संबंधित मुद्दे