排名之间的距离

时间:2014-05-23 00:13:05

标签: python pandas scipy scikit-learn

我有两种方法可以对字符串列表进行不同的排序,以及我们可以认为是列表的“正确”排名(即黄金标准)。

换句话说:

 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是黑框,我怎样才能确定哪种方法更好?是否有任何方法可以在SciPyscikit-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

2 个答案:

答案 0 :(得分:8)

您正在寻找标准化折扣累积增益(NDGC)。这是搜索引擎排名中常用的度量标准,用于测试结果排名的质量。

这个想法是你测试你的排名(在你的情况下是两种方法),通过点击(在你的演员阵容中的真实排名)反对用户反馈。 NDGC将告诉您排名相对于事实的质量。

Python基于RankEval的模块实现了这个指标(如果你想尝试它们,还有其他一些)。 repo is here并且有一个很好的IPython NB with examples

答案 1 :(得分:1)