评级公式设计(概念不编码)

时间:2012-07-01 18:28:40

标签: php sql math rating logarithm

我网站的一个要素是评级系统。我对如何最好地设置公式感到困惑,我希望有更多数学能力的人可以帮助我。

用户上传其他用户评分为1-10的图片。用户评分则是这些分数的平均值。

足够简单。但是,我想添加一些奖励用户上传更多图片的系统。因此,公式将是评级的平均值+上传图片数量的某些函数。

一个例子可能是,评级= AVG + .05 *计数

对于上传了1-20张图片的用户来说,这个公式会有些公平......但是,如果用户上传了2000张图片,他们将会对整个评级系统进行双向翻译,并自动拥有一个10/10。

所以,我对代数后数学知识的了解有限。会产生预期效果的公式是什么? “log”这个词一直在我的脑海中蹦蹦跳跳 - 但我诚实地记不起为什么......:)

3 个答案:

答案 0 :(得分:4)

做一些像:

avg + numofpics * scale *(。9 ^ numofpics)

这将使它成功,因为他们上传的图片越来越少。您可以更改.09(衰减率),具体取决于您希望普通用户上传的图片数量。

这是用于半衰期衰减的等式

答案 1 :(得分:3)

你可以做点什么:

Rating = Average + (\sum_{i=1}^numofuploads 1/i)*scalefactor

虽然总和增长到无穷大 - 总和增长非常缓慢

编辑:

这个想法与@ maxhud的解决方案基本相同,你为每张图片增加了更少的评分,简单来说缩放是1/3,现在我使用精确的非浮点数学

1 -> avg + (1/1)*.3 = avg + 1/3
2 -> avg + (1/1+1/2)/3 = avg + (3/2)/3) = avg + 1/2
3 -> avg + (3/2+1/3)/3 = avg + (10/6)/3 = avg + 10/18 = avg + 5/9 ~ avg + .55555
4 -> ...

从技术上讲,系列(1 + 1/2 + 1/3 + ...)将无限但你必须上传大量的图片才能超过50 - 所以你最好仔细选择你的比例因子并且给予一点思考。如果您希望通过上传获得最大分数,那么 WRONG 解决方案。你应该选择像

这样的东西
avg + scaling*(.9^n)

其中n是图片数量。如果你可以上传无数张图片

avg + scaling*(1/(1-.9)) = avg + 10*scaling

对于你的评价:正如我评论的那样,更好。

ps:我认为@maxhud应该离开

avg + numofpics*scale*(.9^numofpics)
      ^^^^^^^^^

因为在上传了10张照片之后,你的体重就会超过你的缩小增长功能。

答案 2 :(得分:3)

考虑另一种方法 - 您希望通过增加上传图像来奖励用户,但也许用户正在上传许多评价不高的图像。如果他们的大多数图像都很差,你想奖励他们吗?以stackoverflow为例 - 您可以回答很多问题,但如果社区其他成员认为它们“不好”,那么无论您提供多少答案,您的声誉都不会增加。

这可能不是你想要的方式,而是想要奖励数量而不是质量,但如果你决定相反,你可以尝试类似的东西

    UserRating = 10 * (AverageRating/10 + Scalefactor*((AverageRating/10)^2 * ImageUploadCount)))

您选择比例因子是您想要的,并且明显将评级限制为最大值10.这样,您可以奖励多个图像上传,但您也可以奖励更高质量图像上传的用户。考虑有人使用某种类型的网络机器人自动上传图像,并且用户认为所有图像都很差 - 你想奖励它吗?通过这种方式,您可以奖励多次上传,但更优质的上传会受到更好的待遇。也许不是你想要的,但也许值得考虑 - 只有你可以决定......