我有一個系統,人們可以投票或投票項目,我想顯示結果作爲5星評級。如何實現貝葉斯二進制評分系統的平均算法
我一直在嘗試使用解釋爲here和here的貝葉斯分級算法,但沒有成功。
例如:我在我的數據庫三個項目(A,B和C):
A = 500 UP和500向下票 B = 0 UP和1000向下票 C = 0 UP和1000反對票
如何計算每個項目的貝葉斯平均評分,以便它在1到5的評分上得分?
我有一個系統,人們可以投票或投票項目,我想顯示結果作爲5星評級。如何實現貝葉斯二進制評分系統的平均算法
我一直在嘗試使用解釋爲here和here的貝葉斯分級算法,但沒有成功。
例如:我在我的數據庫三個項目(A,B和C):
A = 500 UP和500向下票 B = 0 UP和1000向下票 C = 0 UP和1000反對票
如何計算每個項目的貝葉斯平均評分,以便它在1到5的評分上得分?
簡單的代數運算:選票的所有項目* 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
我將我的評論移到了我上面編輯的文章中,以便閱讀。 – 2010-07-01 22:06:16
這個博客文章How Not To Sort By Average Rating描述了你的情況,以及如何解決我t使用Wilson Score confidence interval。 Reddit used this效果很好。
爲了節省時間,這不適用於5星評級,只適用於正面/負面評價。 – mattmanser 2014-04-04 08:59:25
可能重複[什麼是最好的算法來計算得分最高的項目?](http://stackoverflow.com/questions/2134504/what-is-the-best-algorithm-to-calculate-the-most - 評分項目) – 2010-07-01 14:57:17