我想帮助建立一个喜欢/不喜欢的排序算法来找到最好的条目。我想到了一种方法,但这种方法存在两个主要缺陷,我想知道是否有更好的方法。
以下是我对此的看法:
条目将按l/d
l = number of likes
和d = number of dislikes
给出的比率进行排序,以便那些比例较高的人拥有更大的喜欢数量并且值得比那些比例低的人。
此方法存在两个问题:
1:如果不喜欢的数量为0,则无法l/d
。因此,即使一个条目有一千个喜欢也不喜欢它,它仍然不会进入记分板。
2:具有较少喜欢和不喜欢的条目与具有许多评级的条目相比具有优势,因为它需要较低的评级来影响比率并使条目良好分数。
您怎么看?
编辑:这是解决第一个问题的可能替代方案:(l + 1) / (d + 1)
。有关这一个的任何反馈吗?
答案 0 :(得分:13)
这可能是相关的:How Not To Sort By Average Rating。
答案 1 :(得分:2)
要将除法除去零,可以在分子和分母上加1,得到(l + 1)/(d + 1)。如果你想对更多喜欢的条目进行更高排名,那么你可以将你的排名公式乘以log(喜欢的数量+ 1)。这里添加一个以删除如果条目为零的结果导致的数学错误。对于下面的讨论,假设日志的基数为10.因此满足要求的排名公式将是(喜欢+ 1)/(不喜欢+ 1)*日志(喜欢+ 1)。
观察到如果没有喜欢,这个公式提供0的等级,因为log(1)= 0.假设投票与投票和一个不喜欢投票相关联。然后秩为2/2 * log(2)= 0.3,因为log(2)= 0.3。现在考虑与9个喜欢和9个不喜欢的另一个领带。然后排名为10/10 * log(10)= 1,因为log(10)= 1。也就是说,log(like)项与更多喜欢的关系比喜欢更少喜欢的关系更高。
答案 2 :(得分:0)
这对我来说是最好的。
rank = likes * 100 / (likes + dislikes)
它通过更高的喜欢,然后任何喜欢和/或不喜欢的活动,然后没有活动。 示例:
likes, dislikes => rank
0, 0 => 0 //avoid /0 error
3, 3 => 50
3, 0 => 100