排名/声誉算法

时间:2011-12-01 18:18:00

标签: algorithm

我正在编写一个具有声誉组件的电子商务引擎。我希望用户能够对项目进行审核和评分,并能够对评论进行评分。

根据“最佳”评论对项目进行排序的最佳算法是什么?它必须按照提供最佳评价的人员获得的质量评估数量进行排名。我不知道如何将其转换为算法。

例如,我需要能够比较具有低声望的许多人的5星的项目与来自少数具有高声望的人的3星的另一项目。

为了增加复杂性,一些用户可能已经编写了许多由其他人评价为高/低的评论,而其他用户可能写了很少评论,但其他用户评价很高。在这种情况下哪个用户更有信誉?

2 个答案:

答案 0 :(得分:12)

如果您了解用户的声誉,那么您可以为每个用户使用UserScore,例如the one that Stackexchange uses

UserScore = Reputation >= 200 ? 0.233 * ln(Reputation-101) - 0.75 : 0 + 1.5

然后通过将用户得分与星星相加作为权重来找到项目的值:

ItemScore = \sum_i UserScore_i * Weight[Star_i]

其中i是投票的索引,Weight是涉及星的权重的数组。例如,对于5星的投票系统,它可以是[-2 -1 0 1 2]。还有一点需要注意的是,如果您希望只有3颗星的物品出现在未评估的物品之前,您可以将3颗恒星的重量更改为+eps

您可以根据需要更改200和所有其他常数/重量。

答案 1 :(得分:0)

我会尽力回答你的问题:

我认为诀窍是权衡不同声誉的人,例如:

拥有声望2的人的投票率是另一个声誉低于1的人的投票的3倍。不同声誉的人之间的关系真的取决于你以及你想要多少总体评级取决于声誉低的人的评级。与声誉低的人投票相比,具有较高声誉的人的投票权重越高,由于声誉投票率低,整体声誉就会变得越小。

所以每个人都会有一个重量让我们说w_i,w_j等....然后所有评级都将是所有人的加权平均值:

来自两个不同的人的投票总评分的例子i和j =(w_i * r_i)+(w_j * r_j)/(w_i + w_j)

其中r_i,r_j分别是人i和人j的等级。

要获得每个人的权重值,您可以获取该人的星数。

一个好的资源将是以下页面: http://en.wikipedia.org/wiki/Weighted_mean