2009-07-17 84 views
5

我需要根據用戶評分對一些產品進行排序。A排名算法

假設我們有3個產品{一個bÇ},我們對這個產品的用戶的飼料背上。 哪個用戶給我們反饋並不重要(這個問題不是關於相關的過濾,如果你熟悉的話 - 用戶的興趣不在這裏)

以下每行都是用戶反饋比較3種款產品:

150點 - b 0,點(該用戶只告訴我們他的想法的2產品A和b中的比較和b他的是,如果他給出了一個150點,然後b值0點)

a 150分 - -C 20點

C 200點 - 一個10分(儘管前一個這種用戶認爲c是更好在於:a)

一個200點 - b 40點 - C 100點

一個150點 - b 50點

150點 - B 20分

(這些評級只是一個樣本,並在產品和收視率的現實世界排名比這個大得多)

現在我需要一個算法來根據用戶投票來查找產品的排名。在我看來,最好的方法是用相關圖來描述這個問題,並將所有產品連接起來。

讚賞任何形式的幫助或提示。

/******************************************** ************************************/

你不能只加點和計算產品的點平均 原因是很重要的它是如何得到他的觀點假設一個得到了800分對b - 然後ç得到10分對一個這樣的:

200 - b 0

200 - B 0

200 - B 0

200 - B 0

-C 10 - 0(這意味着c小於更好)

所以絕對是a要好於b但小10分c得到了更好的排名a

/******************************************** ************************************/

回答

5

你有一些挑戰。添加排名c 0 - b 20並且您有一個圈,其中c < b < a < c

當然,您的訂單不僅沒有transitif(從< b < C不遵循<ç)你不能決定這是因爲沒有用戶更好的,這也不是總(有可能是元素投票已經完成,甚至可以通過其他元素。

你得到的是一個disconnected, directed, finite graph(使用邊緣的方向說哪一個元素(節點是更好)。

你可以找到一個特定的節點開始更好的節點在圖中前進,可能會找到多個不可比較的解決方案再次啓動節點,停止處理該路徑。

也許在數學中的順序理論可以幫助您:查找order theory,部分順序,Hasse diagram

爲了使這更實用:

使用二維陣列與行和每個元素的列。在單元格(a,b)中計算評分的總和。從某個元素a開始,遵循所有正(> 0)連接,直到您到達沒有正連接的節點或回到已經訪問的節點。這些節點是您的解決方案。

3

A baysean rating system可能是你最好的選擇 - 它考慮到一個項目的投票和相對票數以便給它一個加權分數。

+1

的baysean評級系統在元素評級時起作用,但當評級與其他元素相關時則不起作用。 – 2009-07-17 12:28:48

1

我認爲你需要涉及每個人在每個產品上如何投票 - 例如: 人1投票:100一,50 b和0對C 人2 b和80投0了,200對於C

這應該被解釋成:
人1投3爲一個,2 b和-1對C
人2投-1對應,3 b和2對C

我正在使用的地方:
3爲最高票數
2第二高
1爲最低
-1,如果他們投票0(表明他們不喜歡/沒有 - 不考慮產品)

我最初的想法上也無妨