【问题标题】:Modifying reddit's ranking algorithm to change content more often?修改 reddit 的排名算法以更频繁地更改内容?
【发布时间】:2016-05-19 19:04:06
【问题描述】:

我在我的网站上使用 reddit 的排名算法来对“热门”和不热门的内容进行排名。下面简单解释一下reddit的排名算法是如何工作的:

https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9#.igk62pe0x

具体来说,这部分:

# Rewritten code from /r2/r2/lib/db/_sorts.pyx

from datetime import datetime, timedelta
from math import log

epoch = datetime(1970, 1, 1)

def epoch_seconds(date):
    td = date - epoch
    return td.days * 86400 + td.seconds + (float(td.microseconds) / 1000000)

def score(ups, downs):
    return ups - downs

def hot(ups, downs, date):
    s = score(ups, downs)
    order = log(max(abs(s), 1), 10)
    sign = 1 if s > 0 else -1 if s < 0 else 0
    seconds = epoch_seconds(date) - 1134028003
    return round(sign * order + seconds / 45000, 7)

但是,我发现,虽然这种算法运行良好,但它并没有像我希望的那样频繁地更改内容。

如何修改算法来做到这一点?我需要修改算法的哪些数字或部分,以使我网站上的内容更频繁地更改?

【问题讨论】:

    标签: algorithm sorting ranking


    【解决方案1】:

    除了将seconds 除以 45000 之外,您还可以将其除以较小的数字,这样最近的帖子就会产生更显着的影响,并且提要会更频繁地更改。您还可以调整对数函数的基数或使用具有不同增长率的函数,例如平方根函数。

    【讨论】:

    • 45000 到底指的是什么?为什么算法要除以45000?
    • 如果您在时间 T1 发布文章,数字 T 将是时间 T1 与 08/12/2005 上午 07:46:43 之间的时间差(以秒为单位)。在计算热度的时候,我们添加了T/45000,这样最近的帖子有更多的热度。如果您希望增加新近度的影响,则应将常数从 45000 减小。
    • @user6357859 45000 是 12.5 小时以秒为单位,Reddit 上热门故事的衰减时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多