我有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。
有没有标准算法?这个算法有什么缺点?
答案 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
的结果