小红书的推荐系统
如果大家没有用过小红书,不妨安装一个小红书app,这样方便一起学习相关背景。
打开小红书,按默认进入发现页面,这个页面展示推荐系统分发给你的内容,这个页面展示的内容叫做笔记,都是由用户自己创作的(UGC),我们把用户创作内容展示给其他用户,形成陌生人社交的社区。
在页面上看到的笔记都是推荐系统给你看的推荐内容,根据自己过去的点击、点赞、收藏、转发、评论的行为给你推荐,你可能感兴趣的内容笔记,比如我回国之前经常看机票的隔离酒店内容,推荐系统就会给你推荐这方面的。
系统把一篇笔记展示给用户,这叫做曝光(impression)。假如用户对这篇笔记感兴趣,会点击它,然后进入这篇笔记。
如果用户在这篇笔记上停留几秒,就意味着用户不是手滑,而是真的对这篇笔记感兴趣,这被算作一次有效点击。有效点击就意味着用户对笔记感兴趣,这被算作一次有效点击。有效点击就意味着用户对笔记感兴趣,这将被视为推荐系统的一个信号。
接下来用户可能会向下滑动阅读这篇笔记,如果滑动到底,更能说明用户对这篇笔记感兴趣。滑动到底也是推荐系统的一个依据。如果用户足够喜欢这篇笔记,可能还会点赞、收藏、转发。
下面的红心是点赞,红星旁边的五角星是收藏,最下面的箭头是转发,用户还可以读评论。
转化流程
推荐系统决定给用户曝光什么内容,用户自己决定是否点击进去,点击进去是否会滑到底、评论、点赞、收藏,不同的网站,都会有不同的转化流程,跟产品的设计有关。算法工程师应该熟悉自己公司的产品,这对设计特征和模型会有帮助。对于绝大多数的公司的产品,前两步都是曝光和点击,比如YouTube、淘宝、快手、知乎都是这种设计,但是抖音不太一样,抖音没有曝光和点击,用户下滑,你只能看到一个视频,点击之后用户会做这几个动作,包括滑动到底、点赞、收藏、转发,这些动作意味着用户对笔记感兴趣,这些动作都可以作为推荐系统用的信号推荐依据。
在滑动到底之后,用户可以评论,正面和中心的评论,对社区的氛围很有好处,所以留评论也作为推荐系统的一个信号。
消费指标
作为算法工程师,我们优化推荐系统是为了提升一些业务指标。
这里列出了几个消费者的指标,这些指标反映出用户对推荐是否满意。
点击率是一个重要的消费指标,点击率等于点击次数除以曝光次数。举个例子,每天笔记展示得100个用户,其中有20个用户点击了点击,那么点击的点击率就是20%的,点击率越高就说明推荐越精准给用户展示了他感兴趣的内容。
虽然点击率是重要的消费指标,但也不能把点击率作为唯一的优化目标,否则骗点击的标题就会泛滥。不然页面上到处都是美国人吓尿了,日本人震惊了,或者满屏都是美女图片骗点击。
其他一些指标也可以反映出用户对笔记的兴趣:
- 点赞率=点赞次数/点击次数。举个例子,有100个用户点击进入某篇笔记,其中有十个用户点赞,那么点赞率就是10%。
- 收藏率=收藏次数/点击次数
- 转发率=转发次数/点击次数
阅读完成率稍微有点复杂,阅读完成率等于滑动到底次数除以点击次数,再乘以一个归一化的函数。归一化的函数跟笔记长度有关。这是因为笔记越长,完成阅读的比例就越低。如果没有归一化的函数,对长笔记会不公平,通常来说,推荐的笔记越符合用户兴趣,那么点击、点赞的行为就会越多。
做实验的时候,我们希望看到新的推荐算法能在这些指标上超越原有的算法。我在这里列出的短期消费指标都是有意义的,但可能不是评价推荐系统好坏的根本指标,一味追求这些短期消费指标是不对的。
举个例子,如果推荐算法只看用户短期兴趣,推很多用户最近感兴趣的内容,会让这些消费指标上涨,但这样的坏处是为竭泽而渔,用户很快被失去兴趣,不再活跃。反过来,尝试一些用户没看过的话题,那么点击率不会上涨,但是会有利于提高用户粘性,留住用户,让用户更活跃。
北极星指标
刚才讲的点击率、点赞率之类的指标都是短期的消费指标,不是最重要的指标。衡量推荐系统的好坏,最重要的指标叫做北极星指标,有这样几个北极星指标,用户规模、消费、发布,北极星指标,意思就是最关键的指标,是衡量推荐系统好坏的根本标准。
在小红书我们就考察这三类北极星指标,
第一是用户规模,就是和用户数据和月活用户数mau来衡量,比如我是个用户,我今天使用一次小红书或者使用十次小红书,今天都算给小红书贡献了一个dau,但这个月无论我总共登录了一次小红书,还是每天都登录小红书,都算给小红书,这个月贡献了一个MAU。DAU和mau,都跟推荐系统的好坏强相关,推荐系统做得好,用户就会越活跃,DAU和MAU就会越高。
第二个北极星指标是消费,包括人均使用推荐的时长、人均阅读笔记数量,如果我今天刷了一个小时的小红书推荐,那么我就贡献了一个小时的时长,如果我今天看了20个小时的笔记,那我就贡献了20篇的阅读量。
推荐做的越好,用户就会越上瘾,使用小红的时长和阅读数量速度越高。这两个指标比点击率、点赞率能反映出推荐做的好不好。
通常来说,点击率跟时长阅读数量的涨跌是一致的,万一有冲突,要以北极星指标为准。举个例子,把推荐系统的多样性做好,探索对用户的兴趣,使得用户使用时长增长。但是点击率下去了,这完全OK,这样的策略应该上线,北极星指标比点击率更重要。
还有一个北极星指标是发布,包括发布渗透率和人均发布量,我们希望推荐系统能激励作者发布,这样我们的内容是变大,优质内容池是我们的核心竞争力。
激励发布通常是由冷启动来负责,后面我会专门讲东西的,到时候再解释发布渗透率和人均发布量。
实验流程
刚才讨论了如何评价推荐系统。算法工程师的工作就是对模型、特征、策略、系统做改进,提升各种指标,推进系统能否最终上线,要拿实验结果来说话。
实验流程是先做离线实验,表现好的话上线做小流量AB测试,表现好的话加大流量,最终目的是全流量上线。
第一步是离线实验,用收集的历史数据做训练和测试,离线实验不需要把算法部署到产品中,没有跟用户实际交互,因此离线实验很容易做,不需要占用线上流量,也不会对系统和用户产生负面影响,有很多评价离线实验的指标,后面课程会讲。
离线实验的结果有参考价值,能大致反映出算法的好坏,但是离线实验并没有线上实验可靠,想最终判断算法的好坏,还是需要做线上实验。
前面提到的北极星指标都是线上指标,只能通过线上实验获得,做离线实验无法得到这些指标。具体做法是开小流量AB测试,把用户随机分为实验组和对照组,实验组用新策略,对照组用旧策略。对比两者的业务指标,判断新策略是否会显著优于旧策略。如果新策略显著优于旧策略,可以加大流量,最终推广。
这节课以小红书为例,介绍推荐系统的一些基本概念,后面的课程会用到这些概念。
下节内容是推荐系统的链路,仍然是一个很广泛的概述,不会讲具体的推荐算法,