[英]Need help on like/dislike voting system
我想獲得一些幫助來建立一個喜歡/不喜歡的排序算法來找到最好的條目。 我想了一種方法來做到這一點,但是這種方法有兩個主要缺陷,我想知道是否有更好的方法。
以下是我的想法:
條目將按l/d
給出的比率排序,其中l = number of likes
和d = number of dislikes
,因此具有較高比率的人有更大的喜歡數,並且比那些比率低的人應該得到更高的位置.
這種方法有兩個問題:
1:如果不喜歡的數量為 0,則l/d
將是不可能的。 因此,即使一個條目有 1000 個喜歡和 0 個不喜歡,它仍然不會進入記分板。
2:喜歡和不喜歡的條目與評分多的條目相比具有優勢,因為它需要較低的評分來影響比率並給條目一個好分數。
你怎么看?
編輯:這是解決第一個問題的可能替代方法: (l + 1) / (d + 1)
。 對此有任何反饋嗎?
這可能是相關的: 如何不按平均評分排序。
要消除除以零,您可以在分子和分母上加 1 以獲得 (l+1)/(d+1)。 如果您想對更多喜歡的條目進行更高的排名,那么您可以將排名公式乘以 log(喜歡的數量 + 1)。 在這里添加一個以消除如果條目有零個贊而導致的數學錯誤。 對於接下來的討論,假設日志的底數為 10。因此,滿足要求的排名公式為 (likes + 1)/(dislikes + 1) * log(likes + 1)。
請注意,如果因為 log(1) = 0 而沒有喜歡,則此公式提供的排名為 0。假設投票與一個喜歡投票和一個不喜歡投票相關聯。 那么秩是 2/2*log(2) = 0.3,因為 log(2) = 0.3。 現在考慮另一個有 9 個喜歡和 9 個不喜歡的關系。 那么排名是 10/10*log(10) = 1,因為 log(10) = 1。也就是說,log(likes) 項對喜歡更多的關系的排名高於喜歡更少的關系。
這對我來說效果最好。
rank = likes * 100 / (likes + dislikes)
它按較高的喜歡排序,然后是任何喜歡和/或不喜歡的活動,然后是沒有活動。 例子:
likes, dislikes => rank
0, 0 => 0 //avoid /0 error
3, 3 => 50
3, 0 => 100
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.