2012-04-22 114 views
6

我在網站上實現了一個簡單的向上/向下投票系統,並且記錄了個人投票以及投票時間和獨特的用戶iD(哈希IP)。投票 - 票數與投票率?

我的問題不是如何計算的票數百分比或總和 - 但更多的,什麼是一個好的算法,用於基於選票的好成績?

我覺得純得票率排序是不可接受的,以及簡單地清點upvotes。

考慮這個例子:

  • 圖像A:4個upvotes,1個downvotes
  • 圖片B:5個upvotes,4個downvotes
  • 圖片C:1名給予好評,0 downvotes

理想的系統會把第一個,也許其次是B和C.然後

在純百分比的情況下,訂單(錯) 在一個純粹的投票計數場景中,順序是B> A> C(錯誤)

我對基於系統信心的某種「混合」算法有一個想法在得分,也許沿着線的東西:

// (if totalvotes > 0, else score = 0) 
score = 1 - ((downvotes+1/totalvotes+1) * sqrt(1/totalvotes)) 

不過,我希望能向社會是否有任何真正明確的算法已經在那裏,我根本不知道,我以前從現在起一直到日落都圍繞着我的算法進行調整。

我也有最新數據爲每票 - 不過,該網站的內容是不是很時間敏感的,所以我真的不關心排序依據「什麼是熱」的說法。

+2

[可能重複(http://stackoverflow.com/questions/9169143/finding-most-liked-item-of-a-user-with-rating-values)?至少答案是相關的。 – Anthales 2012-04-22 18:02:28

+0

輝煌的問題,我必須說:) – 2012-04-22 18:44:31

回答

0

我知道,不回答你的問題,但我只花了3分鐘的樂趣試圖找到一些公式和...只是檢查它:) A柱是upvotes和B是downvotes :)

=(LN((A1+1)/(A1+B1+1))+1)*LN(A1) 

5 3  0.956866995 
4 1  1.133543015 
5 4  0.787295787 
1 0  0 
6 4  0.981910844 
2 8  -0.207447157 
6 5  0.826007385 
3 3  0.483811507 
4 0  1.386294361 
5 0  1.609437912 
6 1  1.552503332 
5 2  1.146431478 
100 100  -3.020151034 
10 10  0.813671022 
2

按票數的平均值排序並不是很好。

通過,而不是一個小數目喜歡這篇文章中解釋觀測的不確定性平衡正面評級的比例,你實現你的分數更好的表現。

下面的文章解釋瞭如何避免犯許多流行網站所犯的錯誤。 (亞馬遜,城市詞典等)

http://evanmiller.org/how-not-to-sort-by-average-rating.html

希望這有助於!

+1

驚人的鏈接是驚人的!榮譽給你,先生! – 2012-04-22 18:43:13