2012-04-17 66 views
1

我有2个排序alghoritms,提供不同的结果(我排序信息的相关性)。结果在两种方式中,我都以不同的顺序获得相同的物品。我知道,第一个alghorytm提供比第二个更好的结果。我想获得相对值(从0到1),这意味着“array2的前N个值是array1的前N个值的0.73质量”(我比较了第一个元素,因为用户没有任何操作就可以看到它)。 首先想到的是array1和array2中位置差异的总和。 例如:排序阵列的相对质量

array1:1 2 3 4 | 5 6 7 8 9

array2:8 6 2 3 | 7 4 1 5 9 - 阵列中的位置1

array2 *:5 5 2 3 | (大于4个替换5采取diapasone相对值0..1)

我想比较前4个元素:

S = 1 + 2 + 3 + 4 - 标准具的总和,最大偏差

D = | 1 - 5 | + | 2 - 5 | + | 3 - 2 | + | 4 - 3 | = 9 - 这是绝对偏差

要计算相对质量,我使用下面的公式:(S - D)/ S = 0.1。

是否有任何标准算法?这个算法有什么缺点?

+2

我很难理解你想要做什么。你能改说你的问题吗? – Kevin 2012-04-17 13:31:55

+0

我有2个排序算法。首先按匹配类别的数量排序,其次按匹配类别的权重总和排序。重量现在是类别树中的类别深度(更具体的类别位于更深处)。第二个算法返回更正确的结果。我想要计算一下数字来说我的经理“我们提供的相关信息的质量,在很多页面上都会提高,如果我改变算法,它会提高X个百分点”。 – 2012-04-17 15:17:11

回答

1

你在找什么可能是DCG [折扣累积收益]和nDCG [归一化DCG],这是用来排序相关性。

这假设一个列表[它是list2]是一个基线 - “绝对真理”,并且list1应尽可能接近它。
这个想法是,如果第一个元素如果出现故障 - 如果第10个元素出现故障则更重要。

该解决方案是在this post的答案中给出更多详细信息和示例的一个示例[抱歉自我加我自己,它似乎很适合在这里]。和的基本思路是评价:

DCG(list1)/DCG(list2) 

当各元素的相关性从list2本身衍生自例如:rel_i = 1/log(1+i)

注:

  • 当然DCG可以计算仅在相关的n元素 而不是整个列表中。
  • 此解决方案将产生的结果为1如果list1 == list2
  • 此解决方案假定重要的是只有元素出现的地方,而不是元素的数值。它完全无视数值。