Feed流设计:怎样用策略掌控用户视线?

12 评论 24141 浏览 261 收藏 9 分钟

早期的Feed流主要是把用户关注的内容以Timeline的形式展开。但是随着用户场景的丰富,Feed流也有了更多的变种。本篇文章主要讨论如何设计一个Feed流,以及Feed流背后的设计逻辑。

0.前言

首先,什么是Feed流?

Feed是一个互联网早期的概念,本意是RSS中用来接收信息来源更新的接口。现在的定义比较宽泛,一般而言,持续更新并呈现给用户的内容都叫做Feed流。朋友圈是feed流,微博首页是feed流,知乎首页是feed流,各种门户的内容也是feed流。换句话说,我们大量的在线时间和视线,实际上都被Feed流掌控。

早期的Feed流主要是把用户关注的内容以Timeline的形式展开。但是随着用户场景的丰富,Feed流也有了更多的变种。本篇文章主要讨论如何设计一个Feed流,以及Feed流背后的设计逻辑。

1. Feed流设计的要核心问题

之前提到,对于搜索而言,基本上是召回用户感兴趣的内容,然后进行筛选排序。其实Feed的设计也是如此。一个Feed流永远是在解决两个核心问题:

  • 应该展示给用户什么内容
  • 这些内容该怎么排序

不同的Feed流其实是在给出这两个问题不同的答案。不同的答案也没有绝对的对与错,更多的是场景是否合适。

2. 永恒的经典——Timeline

Timeline,一般而言,不对用户主动要求获取的内容进行筛选,同时所有的内容按照时间排序。最经典的案例就是朋友圈。关于Feed流设计的两个核心问题,微信朋友圈的回答是这样的:

  • 应该展示给用户什么内容:用户好友发的内容
  • 这些内容该怎么排序:按照时间先后顺序

Timeline简单的内容选取和排序非常易于用户理解,充满了极简主义的哲学:随时更新,吸引用户随时打开使用,而每次更新的部分都有限也保证了大部分用户不会错过任何消息。微信也用这个设计,获取了用户大量的时间。

既然Timeline有这么多优点,那么Feed流为什么还会迭代衍生出来其他的设计?

其实这里也牵扯到一个问题,Timeline有一个致命的缺点——内容呈现效率最为低下。需要内容提供方非常克制,同时也需要用户对这些内容足够关注。

微信朋友圈的内容是用户自己的个人展示,注定不会大量更新;同时选择都是基于熟人关系,能引起用户足够的关注。正是这两个原因,保证了朋友圈内容虽然效率低下,但是还是极具吸引力。如果动辄每天上千条陌生人更新的内容,使用Timeline的形式呈现出来,想见一下,这是一个多么缺乏思考的设计。

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

如果每天有更新量很大的Feed流,同时大部分内容没有太大用户价值,这种情况下我们该怎么排序?这个场景其实也很常见,也是一些PM在实际工作中遇到的棘手问题。答案就是重力排序算法。

重力排序算法中,对于一个在Feed流中的内容而言,有两种力量:重力和拉力。重力是持续让内容往下掉的力,这个重力就是时间,因为新的内容会把老的内容刷下去;同时拉力则是让内容排序往前的力,比如知乎的赞,贴吧的回复。

这样的排序算法实现方式有很多,这里可以简单介绍一种,也是来自Reddit的核心排序算法:

其中:H表示能代表内容热度的值:比如说收到的赞,比如说浏览量,也可以是综合类似的指标,加权求和得到的值。

T代表内容发布的时间,代表一个时间的起始值,只要比最早发布的内容早就行了(比如用公司创立时间)。T-T0用来衡量一个内容的新旧程度,单位为秒,T-T0越大,则代表内容越新。

A也是设立的参数,A越大,T-T0的影响力越小,则内容更新的越慢。一般而言初始值可以用36000,10个小时的秒数,后续不断迭代。

关于Feed流设计的两个核心问题,重力排序算法的回答是这样的:

应该展示给用户什么内容:用户表现出喜好的内容都推给用户,虽然用户不一定看得见后面的。

这些内容该怎么排序:按照时间衰减因素和内容受欢迎程度综合排序。

3. 智能排序——双刃剑

Facebook使用智能排序之后据称效果拔群,于是我们看到越来越多的社交网络放弃使用Timeline排序,转入智能排序的阵营,国外的Twitter,国内的微博和知乎。

智能排序牵扯到复杂的模型构建和机器学习,这里只阐述下简单的原理。

  • 首先,系统需要知道什么是一个内容被展示的目标值。比如微博,一个内容被展示的目标值是转发,评论,点赞的次数。那么通过大量的样本的机器学习,系统对于什么是好的内容会有一个预测。这个对于一个内容的预测,则是的智能排序的基础。
  • 接下来,系统会屏蔽掉一些违规的内容,比如Facebook处罚标题党,知乎处罚抱团点赞。
  • 其次,为了用户内容的质量,系统会在用户的Feed中增加一些热门的内容。
  • 最后,考虑内容和用户的亲密度、系统认为内容受欢迎的程度、内容时间衰减性等因素后,系统进行综合排序。

听起来智能排序是一个很好的主意。但是,智能排序也是一把双刃剑。

算法质量的高要求,导致一些技术比较差的公司,使用智能排序效果不佳。另一方面,因为智能排序的不透明性和扩展性,过度的商业化更是成为了用户体验的头号凶手。

有的内容因为用户买了粉丝头条而可以排在Feed流前面,有的内容只要有足够的推广费,可以绕过关注关系,呈现在用户面前。智能排序如果被过度商业化,那么Feed流的用户体验也会越来越差。

4. 总结

Feed流的设计原理其实讲起来比较简单,如果需要成型的排序算法,也可以找到很多,但是更重要的是,什么是真正适合的选择。

如果选择Timeline的排序,那么就需要考虑用户关注的内容是否足够有吸引力。

如果选择重力排序算法,那么就需要考虑该如何选择参数保证最后的展示效果。

如果加入不断壮大的智能排序大军,那么就需要考虑是否有足够的技术实力和产品自制力。

重要的是思考清楚两个问题:

  • 应该展示给用户什么内容
  • 这些内容该怎么排序

Don’t waste life in doubts and fears,just make a choice.

#专栏作家#

潘一鸣,公众号:产品逻辑之美,人人都是产品经理专栏作家。毕业于清华大学,畅销书《产品逻辑之美》作者;先后在多家互联网公司从事产品经理工作,有很多复杂系统的构建实践经验。

本文原创发布于人人都是产品经理。未经许可,禁止转载。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. Reddit算法里,T-T0应该是越小表示内容越新吧?不应该越新的内容,前后的时间差越小么?

    来自广东 回复
  2. 微信不算feed流吧

    来自北京 回复
    1. 朋友圈应该是最基础的feed流

      来自陕西 回复
  3. 最近对feed流设计非常入迷。
    有一个自己设计的音乐产品,想要将“话题”这个功能界面也设计成信息流,最好加入跟用户需求相近的广告并提高变现效率,但是没拿准怎么设计。大佬能指点下吗?
    目前我设计的话题是比较简洁的,用卡片设计的,每一张卡片正中放个标题,背景是图片,卡片底部放的参与人数和发起人。想将这个设计成feed流的话是不是直接在里面插入广告,让广告以同样的卡片设计形式表现出来?

    来自广东 回复
  4. 潘老师知识渊博,让我受益匪浅,期待潘老师下次更新。 😉

    来自北京 回复
    1. 期待你更多地打赏

      来自北京 回复
  5. 一直在思考除了时间以外更合适的排序方式

    回复
  6. 重力排序算法的那个参数A不是很懂,就是他对时间差的一个影响这里,请问可以再深入一些吗😂

    回复
    1. 参数A是自定义参数,用来对更新速度做一个把控

      来自浙江 回复
  7. 笔记做起来
    1.Timeline 内容率低
    2.重力排序 兼顾
    3.AI 双刃剑

    回复
  8. 不错不错 :mrgreen:

    来自广东 回复
  9. 新人获益良多,算法这块不是很懂,可以深度点。

    回复