排名之间的距离



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

换句话说:

 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

您正在寻找标准化贴现累积增益(NDGC)。这是一个通常用于搜索引擎排名的指标,用来测试结果排名的质量。

的想法是,你测试你的排名(在你的情况下,这两个方法)针对用户反馈通过点击(在你的cast真实排名)。NDGC会告诉你质量相对于你排名的真相。

Python有基于RankEval的模块来实现这个度量(如果你想尝试,还有其他一些)。repo在这里,有一个很好的ippython NB示例

scikit-learn库现在似乎也实现了NDCG(和DCG)度量。

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.ndcg_score.html sklearn.metrics.ndcg_score

相关内容

  • 没有找到相关文章

最新更新