簡體   English   中英

排名算法

[英]A Ranking algorithm

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

假設我們有 3 個產品 { a , b , c } 並且我們有用戶對這些產品的反饋。 哪個用戶給我們反饋並不重要(如果您熟悉,這個問題與相關過濾無關 - 用戶興趣不是這里的情況)

以下每一行都是用戶在嘗試比較 3 種產品時的反饋:

a 150 分- b 0 分(該用戶只是告訴我們他對 2 個產品 a 和 b 的看法,在比較 a 和 b 時,他認為如果他給出 150 分,那么 b 值 0 分)

a 150 分- c 20 分

c 200 分- 10 分(盡管前一個該用戶認為 c 比 a 好)

a 200 分- b 40 分- c 100 分

a 150 分- b 50 分

a 150 分- b 20 分

(這些評級只是一個樣本,在現實世界中,產品和評級的數量比這要大得多)

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

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

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

您不能只是添加積分並計算產品積分的平均值,因為它如何獲得積分很重要。 假設對B A得到了800分-那么C得到10分針對這樣的:

a 200 - b 0

a 200 - b 0

a 200 - b 0

a 200 - b 0

c 10 - a 0(這意味着 c 比 a 好)

所以肯定ab好,但只有 10 分, ca 中獲得了更好的排名

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

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

當然,您的訂單不僅不是transitif(從 a < b < c 不跟在 a < c 之后),也不是全部(可能有些元素您無法決定哪個更好,因為沒有進行用戶投票,即使通過其他元素。

你得到的是一個斷開的、有向的、有限的圖 (使用邊的方向來說明哪個元素(節點更好)。

從某個節點開始,您可以在圖中找到更好的節點,也許會找到多個不可比較的解決方案。 如果您再次訪問起始節點,請停止處理該路徑。

也許數學中的階論可以幫助你:尋找階論,偏序,哈斯圖

為了使這更實用:

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

貝西恩評級系統可能是您最好的選擇——它考慮了投票和一個項目擁有的相對投票數,以便給它一個加權分數。

我認為您需要關聯每個人對每種產品的投票方式 - 例如:第 1 個人投票:a 100,b 50,c 0 人 2 0 投 a,200 投 b,80 投 c

這應該翻譯成:
人 1 為 a 投了 3 票,b 投了 2 票,c 投了-1 票
第 2 個人投了 -1 票,a 票 -1,b 票 3 票,c 票 2 票

我在哪里使用:
3 票數最高
2 為第二高
1 為最低
AND -1 如果他們投 0 票(表明他們不喜歡/不考慮該產品)

無論如何我最初的想法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM