排序数组的相对质量

时间:2012-04-17 13:05:33

标签: algorithm search sorting

我有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 - array1中的位置

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。

有没有标准算法?这个算法有什么缺点?

1 个答案:

答案 0 :(得分:1)

您正在寻找的可能是DCG [折扣累积增益]和nDCG [标准化DCG],用于对相关性进行排名。

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

我在this post的回答中详细描述了解决方案和一个例子[抱歉我自己也很自我,这似乎很适合这里]。而基本的想法是评估:

DCG(list1)/DCG(list2)

每个元素的相关性来自list2本身,例如:rel_i = 1/log(1+i)

注意:

  • 当然DCG只能在relvant n元素上计算 而不是整个清单。
  • 如果1
  • ,此解决方案将产生list1 == list2的结果
  • 此解决方案假定重要的是元素出现的位置,而不是元素的数值。它完全忽略了数值。