毫无疑问,互联网媒体的未来是属于 social media 的。
群体智慧,是 social media 的基础。其基本假设是说,参与到 social 中的群体越多,media 所反应出来的智慧越高超。但如何把群体活动转化为可被使用的智慧呢?这个就是算法发挥作用的地方了。
本文将陆续披露 Reddit,Stumbleupon,Del.icio.us,Hacker News 等一系列站点所使用到的算法。
Reddit,背景介绍可以参考我之前写的两篇短文:1)社会新闻网站:Reddit 和 Findory;2)Reddit 被收购了。
1、公式构成
假设有一篇文章《Social Media Algorithm》,与其相关的有两个时间 A 和 B,其中,A 为某篇文章的具体发布时间,精确到秒;B 为一个固定的时间常量,2005-12-8 7:46:43。则可以计算得到 A 和 B 间隔的秒数 ts,
另外,U 表示 《Social Media Algorithm》一文得到的支持票数,D 表示得到的否定票数,则可以计算得到 x,
定义变量 y,
定义变量 z,
最后定义得分公式 为,
2、公式解释
1)时间点 B,2005-12-8 7:46:43,是一个固定的值,猜测应该是 Reddit 的上线时间。ts 反映了文章的新鲜程度。引入 B 是一个非常优雅的技巧,它使得新鲜度的度量可以独立于系统当前时间。
2)y 表示支持数和否定数之间的相对关系。被否定多的文章得负分,这是合乎常理的。
3)45000 代表的是一个 12.5 小时周期内的总秒数。它 与 yts 一起使用,随着时间的推移,新文章的得分会逐渐超越高投票数的老文章,从而实现自动更新的效果。
4)log10 的使用是另外一个技巧,它可以使得早期的投票获得更大的权重。比如,前 10 票获得的权重,与 11 到 101 票所获得的权重是一样的。
整个公式的效果可以简单解释为:在 00:00:00 发布的一个帖子 a,如果它想在 12.5 小时之后,能够取得与在 12:30:00 发布的帖子 b 同样的得分,则必须在 00:00:00 点到 12:30:00 这段时间内,把它的得票数扩大 10 倍。注:这个解释不精确,但容易理解一些,不然写着太绕。
不过,其中 45000 与 log10 的选择不是通用的,得根据自己网站实际的情况进行修正。这是一个 trial-and-error 的过程,也是作算法的人最头大的部分。
3、来源
code.reddit.com,Redflavor.com 以及 Hacker News 的用户 Aneesh。














