bak*_*akz 5 algorithm math reddit web
最近我正在研究Reddit的算法,以确定什么使帖子成为"热门"主题,哪些内容适合reddit主页.
我正在阅读的文章在这里:http: //amix.dk/blog/post/19588
我注意到他们有数学逻辑,并创建了某种数学函数来确定帖子的热度/相关性.
在使用的公式中,每个数学组件来自何处以及如何使用它们?
谢谢!
- 巴克兹
编辑:只是为了澄清,我刚刚高中毕业并道歉,如果这个问题的答案似乎很明显.再次感谢!
Gar*_*ees 22
我将解决第一个公式,即帖子的"热度".像这样的公式来自要求.Reddit的设计师已经考虑了他们想要实现的目标,并相应地设计了公式.我无法确切地告诉你他们想到了什么要求,但我可以看看实现并猜测他们想要一个系统:
除非投票数改变,否则不需要重新计算分数.这减少了对数据库的更改次数,并且在复制数据时更容易实现一致性.(因此任何基于分数越低的评分系统随着文章的年龄变得越来越不好).
如果两个故事同样陈旧,那么有更多赞成的故事应该更高.(所以需要投票的贡献.)
故事越多,它应该保持在排名顶部附近的时间越长.
老故事不应该永远保持在排名的前列,即使他们有很多赞成票.相当快(一两天之后),新故事需要超越它们.(所以需要从约会开始做出贡献,并且由于投票很快就会超过得分,无论得到多少票.)
有更多downvotes而不是upvotes的故事根本不应出现在排名中.
现在让我们看一下公式:log z + yt/45000,看看它是如何满足这些要求的.
如果投票数没有改变,则z,y和t都不变.所以得分没有变化.这满足要求(1).
如果两个故事具有相同的年龄,那么它们对于t具有相同的值.但是有更多upvotes的那个具有更高的z值,并且由于log是单调的,所以它具有更高的分数.这满足要求(2).
一个故事越多,它的z越高,所以它越长,直到另一个更高的t的故事可以超越它.这满足要求(3).
对数是一个随着变大而变得越来越慢的函数(看一下它的图形).因此,随着时间的推移,一个故事需要越来越多的关注以跟上新故事.这满足要求(4).
如果故事有更多的downvotes而不是upvotes,则z = 1且y = -1,因此得分为负.这满足要求(5).
常数45,000是一个比例因子,使得投票和年龄达到平衡.一天有86,400秒,所以t每天都会增加这个数量.将t除以45,000给出1.92,这意味着一天的相对新价值是10 1.92 = 83票,而两天的相对新价值约为7,000票.
他们不来自任何地方。他们没有绝对的真理,也没有什么可以证明的。这只是一种以开发团队认为最合理的方式量化属性的方法。
当您希望某个因素成为一个因素(尽管不太重要)时,您可以使用日志(因为大值确实会增长,尽管非常缓慢)。但出于同样的原因,他们也可以选择立方根。
这些公式只是对那些我们可以假设是那些特征上属于“热”事物的因素的表示,以及它们的组合,以适当的比例考虑每个因素(例如,我们将平方那些非常重要的值,并记录那些不太重要的值)。
一旦他们想出了公式,他们可能会想出 10 或 15 种不同类型的帖子,并将数字代入,发现这很有意义,所以坚持下去。事实上,最初的几次尝试可能效果不太好,经过一番摆弄数字后得出了这个公式。