gpt4 book ai didi

algorithm - 排序数组的相对质量

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:30 25 4
gpt4 key购买 nike

我有 2 个提供不同结果的排序算法(我按相关性对信息进行排序)。结果,我以两种方式以不同的顺序获得相同的项目。我知道,第一个 alghorytm 比第二个提供更好的结果。我想获得相对值(从 0 到 1),这意味着“array2 的前 N ​​个值是 array1 的前 N ​​个值的 0.73 质量”(我比较第一个元素,因为用户看到它没有任何操作)。首先想到的是使用 array1 和 array2 中位置之间的差异之和。例如:

数组 1:1 2 3 4 | 5 6 7 8 9

数组 2:8 6 2 3 | 7 4 1 5 9 - array1 中的位置

数组 2*: 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。

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

最佳答案

你要找的大概是DCG [贴现累积 yield ] 和 nDCG [归一化 DCG],用于对相关性进行排序。

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

我在 this post 中的回答中用更多细节和示例描述了解决方案[抱歉自欺欺人,它似乎很适合这里]。基本思想是评估:

DCG(list1)/DCG(list2)

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

注意事项:

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

关于algorithm - 排序数组的相对质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10191848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com