【发布时间】:2014-10-16 11:45:18
【问题描述】:
我有一个排名系统,用户可以在其中支持/反对(+1/-1)个对象,每个对象都有一个累积的rating_sum,它可以是负数、零或正数。我还记录了在rating_count 中对对象进行评级的总次数。因此,我可以通过一些代数得到赞成票和反对票的数量。
我想实现一个评分算法,它考虑到对象的评分,但也意味着较旧的对象会受到惩罚并获得较低的分数。
到目前为止,我发现了以下内容:
score=rating_sum/(age^gravity)
其中gravity 是一些常数(我一直在使用gravity=2)。
这可以正常工作,除了带有负值的评级,在这种情况下,对象越老,它的分数就越高(负值越小)。这意味着给定两个具有相同负评分的对象,例如 -2,较旧的对象得分高于较年轻的对象,并且浮动更高。
有没有我可以使用的评分算法也适用于负面评分?
(出于技术原因(我正在尝试使用 django ORM 进行优化),我想要一个相当简单的算法,我可以放入 SQL 查询语句,所以只需 POW , LOG 最好)
【问题讨论】:
-
为什么不
score = rating_sum - age^gravity?将rating_sum视为“人气”,将-1 * age^gravity视为“新鲜度”。然后score = popularity + freshness.
标签: algorithm sorting rating-system popularity