说我有一个东西,你可以赞成/反对它是否是真的。随着时间的推移,这件事发生了变化,所以我希望更久以前发生的投票更少(至少,我认为应该发生的事情)。有这样的公式吗?我错过了什么吗?
一个想法:
vote# is +1 if upvote, -1 if downvote
score = (vote1/time since vote1) + (vote2/time since vote2) + (vote3/time since vote3)
这样得分会随着更多选票的增加而增加,每个人的投票开始衰败。高分将意味着很多人对此表示赞同,并且最近也是如此。
答案 0 :(得分:2)
我认为最常见的方法是使用指数加权移动平均值:https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average。
指数加权的好处在于您只需要跟踪当前的平均值,然后您可以轻松地为每个新的传入值更新它,而不是需要保留所有过去值的完整历史记录,以便计算更新的平均值。
(或者至少,基于“自此以来的数据点数”进行加权的情况。对于基于“自此数据点以来的时间量”的加权,数据点不在哪里固定间隔,它稍微更复杂,因为你还需要保留最后一个数据点的时间戳;但你仍然不需要保留完整的历史记录,所以它仍然很简单高效。)