2010-07-01 105 views
9

我有一個系統,人們可以投票或投票項目,我想顯示結果作爲5星評級。如何實現貝葉斯二進制評分系統的平均算法

我一直在嘗試使用解釋爲herehere的貝葉斯分級算法,但沒有成功。

例如:我在我的數據庫三個項目(A,B和C):

A = 500 UP和500向下票 B = 0 UP和1000向下票 C = 0 UP和1000反對票

如何計算每個項目的貝葉斯平均評分,以便它在1到5的評分上得分?

+0

可能重複[什麼是最好的算法來計算得分最高的項目?](http://stackoverflow.com/questions/2134504/what-is-the-best-algorithm-to-calculate-the-most - 評分項目) – 2010-07-01 14:57:17

回答

3

簡單的代數運算:選票的所有項目* 5 /的所有選票總和的

AvgVotes = SUM的所有票/總和的所有項目的

AvgRating = SUM

CurVotes數=對目前的項目投票

CurRating的選票= SUM對目前的項目*票對目前的項目5 /數

TotalVotes的= SUM對目前的項目

((AvgVotes * AvgRating)+(CurVotes * CurRating))*所有票+總票數的5/TotalVotes

所以封堵你的數字評估用於重...

AvgVotes = 1000

AvgRating = 0(記住不包括的項目,你在這個計算中評估數字)

CurVotes = 1000

CurRating = 500 *千分之五= 2.5

總投票= 2000 + 1000 = 3000

((1000 * 0)+(1000 * 2.5))*3000分之5= 4.166

我忘了補充,不要在任何計算中包含任何項目或超過沒有投票的總和,否則會拋棄權重。

編輯 - 簡化的解決方案:

我應該注意,有一個簡單的解決方案,可以執行的問題。我只演示了理解力的長效形式。壓縮算法是這樣的:

定義:

SET =任何無法與當前的評價目標,其中票數大於零。

TARGET =元素你正在試圖評估

25 *((SET UP-票)的(金額/(設置項之和))+目標總(上票))/(目標票數SET票+和)總和

再次封堵與你的數字評估 'A' 的澄清和證明:

(25 *((0/2)+500))/(1000+ 2000)= 4.166

+0

我將我的評論移到了我上面編輯的文章中,以便閱讀。 – 2010-07-01 22:06:16