需要关于喜欢/不喜欢投票系统的帮助



我想得到一些帮助来构建一个喜欢/不喜欢的排序算法,以找到最好的条目。我想过一种方法,但这种方法有两个主要缺陷,我想知道是否有更好的方法。

以下是我的想法:

条目将按照l/d给出的比率进行排序,其中l = number of likesd = number of dislikes,因此比率较高的条目具有更大的点赞数,并且应该比比率较低的条目获得更高的排名。

这种方法有两个问题:

1:如果不喜欢的数量为0,则l/d将不可能。因此,即使一个条目有一千个喜欢和0个不喜欢,它仍然不会在记分牌上占据任何位置。

2:喜欢和不喜欢程度较低的条目与评分较高的条目相比具有优势,因为需要较低的评分才能影响比率并给条目打分。

你觉得怎么样?

编辑:以下是修复第一个问题的可能替代方案:(l + 1) / (d + 1)。对此有任何反馈吗?

这可能是相关的:如何不按平均评分排序。

若要删除除以零,可以在分子和分母上加1,得到(l+1(/(d+1(。如果你想对点赞数更多的条目进行更高的排名,那么你可以将你的排名公式乘以log(点赞数+1(。这里添加了一个,以删除如果条目没有点赞则会导致的数学错误。对于下面的讨论,假设日志的基数为10。因此,满足要求的排名公式将是(喜欢+1(/(不喜欢+1(*log(喜欢+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(点赞(术语对点赞次数较多的关系的排名高于点赞次数较少的关系。

这对我来说效果最好。

rank = likes * 100 / (likes + dislikes)

它按更高的赞数排序,然后是任何喜欢和/或不喜欢的活动,然后是没有活动。示例:

likes, dislikes => rank
0, 0 => 0            //avoid /0 error
3, 3 => 50
3, 0 => 100

相关内容

  • 没有找到相关文章

最新更新