2012-04-17 61 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
  • 此解決方案假定重要的是隻有元素出現的地方,而不是元素的數值。它完全無視數值。