3

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

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

很简单。但是,我想添加一些系统来奖励用户上传更多图片。因此,该公式将是收视率的平均值 + 上传图片数量的某些函数。

例如,Rating = AVG + .05 * Count

这个公式对于上传 1-20 张图片的用户来说是公平的……但是,如果用户上传 2000 张图片,他们将通过整个评分系统并自动获得 10/10。

因此,我对后代数数学的有限知识正在失败。什么是会产生预期效果的公式?“日志”这个词一直在我的脑海里蹦蹦跳跳——但老实说,我不记得为什么...... :)

4

3 回答 3

4

只需执行以下操作:

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

这将使它做到这一点,因为他们上传更多的照片,他们得到的越来越少。您可以根据您希望普通用户上传多少张图片来更改 0.09(衰减率)。

这是用于半衰期衰减的方程

于 2012-07-01T18:32:56.733 回答
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 - 所以你最好仔细选择你的比例因子并给出一个一点,思想。如果您想通过上传获得最多积分,这是错误的解决方案。你应该选择类似的东西

avg + scaling*(.9^n)

n图片的数量在哪里。如果您可以上传无限多的图片,您将拥有

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

对于您的评价:正如我评论的那样,这要好得多。

ps:我认为@maxhud 应该离开

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

因为上传10张图片后,你已经超过了你的收缩增长功能。

于 2012-07-01T18:34:20.883 回答
3

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

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

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

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

于 2012-07-01T20:22:49.227 回答