编辑: 因为每个人都感到困惑,我想简化我的问题。我有两个有序列表。现在,我只想计算一个列表与另一个列表的相似程度。
例如,
1,7,4,5,8,9
1,7,5,4,9,6
这两个列表之间的相似性有多好,以便顺序很重要。例如,我们应该惩罚相似性,因为在两个列表中交换了4,5?
我有2个系统。一个最先进的系统和我实施的一个系统。给定查询,两个系统都返回排序的文档列表。现在,我想比较我的系统和“最先进的系统”之间的相似性,以便衡量我的系统的正确性。请注意,文档的顺序很重要,因为我们正在讨论排名系统。 有没有人知道任何可以帮助我找到这两个列表之间相似性的措施。
答案 0 :(得分:15)
DCG [折扣累积增益]和nDCG [标准化DCG]通常是排名列表的一个很好的衡量标准。
如果相关文档排名第一,它会给出相关文档的全部收益,并且随着排名的降低,收益会减少。
使用DCG / nDCG评估系统与SOA基线的比较:
注意:如果您将“最先进系统”返回的所有结果设置为相关,那么如果他们使用DCG / nDCG获得相同排名,那么您的系统与现有技术相同
因此,可能的评估可能是:DCG(your_system)/DCG(state_of_the_art_system)
为了进一步增强它,您可以给出相关性等级[相关性不是二进制] - 并且将根据每个文档在现有技术中的排名来确定。例如,对于现有技术系统中的每个文档,rel_i = 1/log(1+i)
。
如果此评估函数收到的值接近1:您的系统与基线非常相似。
示例:强>
mySystem = [1,2,5,4,6,7]
stateOfTheArt = [1,2,4,5,6,9]
首先根据最新系统[使用上面的公式]给每个文档打分:
doc1 = 1.0
doc2 = 0.6309297535714574
doc3 = 0.0
doc4 = 0.5
doc5 = 0.43067655807339306
doc6 = 0.38685280723454163
doc7 = 0
doc8 = 0
doc9 = 0.3562071871080222
现在您计算DCG(stateOfTheArt)
,并使用上述相关性[注意相关性不是二进制,并获取DCG(stateOfTheArt)= 2.1100933062283396
接下来,使用相同的评估权重计算系统并获取:DCG(mySystem) = 1.9784040064803783
因此,评估为DCG(mySystem)/DCG(stateOfTheArt) = 1.9784040064803783 / 2.1100933062283396 = 0.9375907693942939
答案 1 :(得分:4)
Kendalls tau是您想要的指标。它测量列表中成对反转的数量。斯皮尔曼的脚步也是如此,但是测量距离而不是倒置。它们都是为手头的任务而设计的,用于衡量两个等级排序列表的差异。
答案 2 :(得分:2)
正如您所说,您想要计算一个列表与另一个列表的相似程度。我认为简单来说,你可以从计算反转次数开始。有一个O(NlogN)分而治之的方法。这是一种非常简单的方法来衡量两个列表之间的“相似性”。
例如你想比较一下音乐网站上两个人的音乐品味的“相似”,你可以对一组歌曲进行排名并计算一下。反转的。数量越少,他们的口味就越“相似”。
D1 D2 D3 D4 D5 D6
-----------------
R1: 1, 7, 4, 5, 8, 9 [Rankings from 'state of the art' system]
R2: 1, 7, 5, 4, 9, 6 [ your Rankings]
由于排名按文档顺序排列,您可以根据R1编写自己的比较器功能(“最先进系统”的排名,因此计算与该比较器相比的反转。
对于发现的每个反转,您可以“惩罚”“相似性”: i< j但R2 [i]>' R2 [j]
(>'在这里使用自己的比较器)
答案 3 :(得分:2)
除了已经说过的内容之外,我还想指出以下优秀论文:W. Webber et al, A Similarity Measure for Indefinite Rankings (2010)。除了对现有措施进行了很好的回顾(例如上面提到的Kendall Tau和Spearman的脚趾)之外,作者还提出了一种直观吸引人的概率测量方法,该方法适用于不同长度的结果列表,当并非所有项目都出现在两者中时名单。粗略地说,它通过"持久性"进行参数化。在检查项目k(而不是放弃)之后用户扫描项目k + 1的概率p。 Rank-Biased Overlap(RBO)是用户停止阅读时预期的结果重叠率。
RBO的实施稍微复杂一些;您可以查看Apache Pig here中的实现。
另一个简单的度量是余弦相似度,两个向量之间的余弦,其维度对应于项目,反向排名为权重。但是,它不会优雅地处理只出现在其中一个列表中的项目(请参阅上面链接中的实现)。
对于您的示例,此值为0.7252747。
请让我在你的直接问题之外给你一些实用的建议。除非你的生产系统'基线是完美的(或者我们正在处理黄金集),比较质量测量(例如上面提到的nDCG)而不是相似性几乎总是更好;新的排名有时会更好,有时甚至比基线差,你想知道前一种情况是否比后者更常见。其次,相似性度量在绝对尺度上解释并不容易。例如,如果你得到的相似度分数为0.72,这是否意味着它真的相似或显着不同?相似度量更有助于说明新的排名方法1比另一种新的排名方法2更接近生产。
答案 4 :(得分:1)
我想你在谈论比较两个信任检索系统,它相信我并不是一件小事。这是一个复杂的计算机科学问题。
要衡量相关性或进行A / B测试,您需要做几件事:
衡量相关性的竞争对手。由于您有两个系统,因此满足此先决条件。
您需要手动为结果评分。您可以要求您的同事对热门查询的查询/网址对进行评分,然后对于漏洞(即查询/网址对未评级,您可以通过使用“学习排名”算法http://en.wikipedia.org/wiki/Learning_to_rank来获得一些动态排名功能。不要对此感到惊讶,但那是真的(请阅读下面的Google / Bing示例)。
Google和Bing是横向搜索市场的竞争对手。这些搜索引擎在世界各地使用手工评委,并在其上投入数百万美元,对查询结果进行评级。因此,对于每个查询/网址对,通常对前3个或前5个结果进行评级。根据这些评级,他们可能会使用像NDCG(标准化折扣累积增益)这样的指标,这是最好的指标之一,也是最受欢迎的指标之一。
根据维基百科:
折扣累积增益(DCG)衡量Web搜索引擎算法或相关应用程序的有效性,通常用于信息检索。使用搜索引擎结果集中的文档的分级相关性比例,DCG基于其在结果列表中的位置来测量文档的有用性或增益。增益从结果列表的顶部累积到底部,每个结果的增益在较低的等级上打折。
维基百科以极好的方式解释NDCG。这是一篇简短的文章,请仔细阅读。
答案 5 :(得分:1)
文件清单是否详尽无遗?也就是说,系统1排序的每个文档排名是否也按系统2排序?如果是这样a Spearman's rho可能符合您的目的。当他们不共享相同的文档时,最大的问题是如何解释该结果。我不认为有一个测量可以回答这个问题,尽管可能会有一些实现隐含的答案。
答案 6 :(得分:1)
我实际上为此目的知道了四种不同的措施。
已经提到了三个:
但如果你有两个以上的等级必须进行比较,请使用 Kendall的W 。