Algorithm 类似亚马逊的星级(1-5)排名算法?

Algorithm 类似亚马逊的星级(1-5)排名算法?,algorithm,amazon,ranking,voting,Algorithm,Amazon,Ranking,Voting,我是一名CS学生,正在做一份关于另类投票系统的报告。我认为最好的系统之一是排名投票。例如在总统选举中,每位总统的排名为1-5。(在我看来,美国制度的问题在于,实际上只有对胜利者的投票才算数) 只是想知道是否有人知道增加收视率的最佳方法?我到处搜索,我知道亚马逊使用加权平均。我认为把每个“明星”和赢家最多的人加起来是有道理的。也许有更倾向于数学的人可以提出更好的建议?你可以对评级系统做的一件有趣的事情是通过低通过滤器传递选票。这有助于消除某些极端情况,即100个男人中有一个只想怪罪某件事。这也有助

我是一名CS学生,正在做一份关于另类投票系统的报告。我认为最好的系统之一是排名投票。例如在总统选举中,每位总统的排名为1-5。(在我看来,美国制度的问题在于,实际上只有对胜利者的投票才算数)


只是想知道是否有人知道增加收视率的最佳方法?我到处搜索,我知道亚马逊使用加权平均。我认为把每个“明星”和赢家最多的人加起来是有道理的。也许有更倾向于数学的人可以提出更好的建议?

你可以对评级系统做的一件有趣的事情是通过低通过滤器传递选票。这有助于消除某些极端情况,即100个男人中有一个只想怪罪某件事。这也有助于缓解人们在最初发布内容后,他们会用自制账户对自己的产品进行五星评级

平均值的作用几乎相同,但低通滤波器可以使投票系统更难或更容易提高排名或保持排名,而排名可能因主题而异

低通滤波器看起来很简单,如下所示:

ranks = [2,3,1,2,4,2,1,2,3,4,3,4,2]
y = [ranks[0], ranks[1], ranks[2]]

for(i=2; i<ranks.length; ++i)
    currentRank = .2*ranks[i] + .3*y[2] + .2*y[1] + .3*y[0]
    y.push(currentRank)
    y.shift()
ranks=[2,3,1,2,4,2,1,2,3,4,3,4,2]
y=[等级[0],等级[1],等级[2]]

对于(i=2;i如果所有项目都有很多评分员,那么取平均值应该很有效。如果数据稀疏,就会出现问题。例如,假设产品a有一个5星级评分,而产品B有5个5星级和5个4星级评分。我更信任产品B,尽管算术平均值较低(4.5 vs 5)


根本的问题是要考虑不确定性。直觉上,对于少数评级,我们会考虑一个在平均范围内的先验信念。这将这个想法形式化,并衍生出一种贝叶斯方法。

这取决于你想对汇总分数做些什么。如果你真的在谈论选举,我想你应该阅读基于社会选择理论。你可以将“美国制度”改为“地球上的每一个投票制度”(政治制度)