Feed流算法初探

什么是Feed?

Feed是一个互联网早起概念,本意是RSS中用来接收信息来源更新的接口。普遍对feed的解释是:

a web feed (or news feed) is a data format used for providing users with frequently updated content. Content distributors syndicate a web feed, thereby allowing users to subscribe to it

即feed实际上是一种数据格式,给用户持续提供更新的内容。我们刷微博、朋友圈、知乎、各大门户媒体,我们所看到的内容,都是一种feed流,我们获取的内容好不夸张的说,是被这些feed流所控制了。内容分发机制能够控制用户在合适的时间看到“规定”的内容。

早期的feed流是以时间线来控制的,即timeline,新浪微博早期就是以timeline的形式进行内容展示的。如今feed流进行了多种变革,不再是单纯的timeline,各大互联网公司都有自己的内容分发机制。

如同搜索一样,内容分发机制的设计也始终关注两大核心问题:

1.给用户分发(展示)哪些内容

2.对分发的内容怎么进行排序

不同的内容分发机制其实对这两个问题所给出的解决方式是不一样的。不同的互联网公司为了自己的商业利益或者其他战略层面的考虑,所设计的feed流设计方案也是不同。

(1)永恒的Timeline

Timeline是Feed流设计中最原始、最基本也是最直觉的展示形式。timeline,所谓的“时间线”,内容的分发完全按照时间进行排序和展示的。比如说早期的微博,用户关注(订阅)了一些“大V”,在微博首页看到的内容按照所关注的人所发微博的时间顺序进行展示的。再比如现在的微信朋友圈,也是按照朋友发布内容的时间顺序进行展示的。

其实微信朋友圈、早期的微博很好的回答了feed流设计两大核心问题:

1.给用户分发(展示)哪些内容:微博是关注的用户、微信是相互专注的好友

2.对分发的内容怎么进行排序:按照时间的先后顺序,最新的内容越靠前

Timeline有简单粗暴的优点:利于用户对呈现的内容进行理解,时间的先后顺序嘛,另外由于是按照时间顺序,每次更新都能最大化的保证用户能够看到更新的内容。当时timeline也有致命的弱点:内容呈现的效率极为底下,甚至可能会出现大量的垃圾内容。需要内容提供方十分克制,也需要用户对这些内容足够关注。可以想象一下,一个平台每天发布上千条内容,如果按照timeline的内容分发机制,这么多信息一下子给用户展示,必定给用户造成了严重的干扰。现在的新浪微博就放弃了timeline这种feed流设计,这里不去探讨微博为什么放弃timeline,可以肯定的是timeline这种内容分发机制日益不能满足用户的需求。(ps:实际上,很多用户也开始怀念ttimeline,如今的微博内容分发机制也引起了用户大量吐槽)

(2)重力排序法——兼顾热度和更新时间

其实一个平台大了之后,每天将会产生大量的内容,既有大量的feed流,这些feed流中大部分内容其实对用户是没有太大的价值的。这种场景其实是很常见的。微信朋友圈之所以现在还保持timeline的内容分发机制,是因为朋友圈每天产生的feed其实不多,使用timeline对微信用户会更加友好。但微博、知乎、今日头条不一样,每天产生的feed流比微信朋友圈大得多,遇到这种棘手的问题该如何解决也是考验产品经理的能力。

何为重力排序法,对于一个feed流中的内容而言,有两种力量:重力和拉力。重力就是让内容持续往下路的力,即时间,时间越久,掉的越快;拉力就是让内容往前排的力,比如知乎的点赞、门户新闻的阅读数等。重力和拉力,两者相斥,共同决定内容的排序机制。

这里有一个重力算法的排序公式,来自于Reddit的核心排序算法:

score(H,T)=logH + (T-t)/A

这个公式里面有一些因子,代表如下含义。H表示内容的热度,比如内容的浏览量、点赞数,也可以是经过加权(降权)处理过的一些值,H的值越大,排名自然靠前;T表示内容的发布时间;t表示一个时间的起始值,只要比发布的时间早就成。T-t用来衡量一个内容的的新旧程度,T-t的值越大,表示内容越新;A表示一个系数,A越大,T-t的影响力就越小,即按照时间进行排序的影响就越小,内容更新的速度也越慢。一般来说,A的初始值为10个小时,36000秒,后面不断迭代调整参数。

(3)智能排序法——在唾骂中前行

对于智能排序的算法,由于牵涉到复杂的模型构建和机器学习,已超出了我的能力范围,这里只是简单的阐述一下智能排序的机制,比较通俗的讲解可以参考“纯银”的一篇文章,浅显易懂。(http://www.jianshu.com/p/4b51126fe930)

什么是智能排序?

首先,系统需要知道什么是一个内容被展示的目标值。比如微博,一个内容被展示的目标值是转发、评论、点赞的次数。那么通过大量的样本机器学习,系统对于什么是好的内容会有一个预测。这对于一个内容的预测,则是智能排序的基础。

其次,系统会屏蔽一些违规的内容,比如涉及到政治、敏感事件

再次,为了用户内容质量,系统会在用户的feed中增加一些热门的内容

最后,考虑内容和用户的亲密度,系统认为内容受到欢迎的程度,内容事件衰减等因素后,系统进行综合排序。

智能排序听起来是个很好的主意。但是也是一把双刃剑,从微博的排序法被骂可以看出,也有很大一部分用户其实不满这个智能排序法。但为什么微博要一意孤行呢?也许是商业利益、也许是战略,这里不去探究里面的动机,毕竟好多探究是经不起推敲的,只是一本正经的胡扯。

就像文章开头所提出的两个核心问题:1.给用户分发(展示)哪些内容;2.对分发的内容怎么进行排序。我们在设计内容分发机制的时候,不管选择何种机制,作为产品经理,需要根据用户实际的场景来进行feed流的设计。

你可能感兴趣的:(Feed流算法初探)