运营必须了解的内容分发策略(二):推荐算法解析
编辑导语:在上一篇中,我们讲到了运营必须了解的内容分发策略——打压与推优;本文详细介绍了推荐算法解析,比如我们平常在刷抖音时,你会发现他给你的推送都是你感兴趣的;本文对此做出详细分析,我们一起来看一下。
推荐算法可谓目前社区产品内容分发的标配,尤其是有抖音珠玉在前,精准的推荐效果和巨大的商业成功甚至让许多模仿者对个性化推荐近乎迷信。
作为运营,我们虽然不需要参与算法的设计与coding,但若能对其背后的工作逻辑有一个基本的理解,更有助于我们完成策略干预与算法优化等工作,在与产品、研发同学沟通时也不至于因知识盲区而闹出笑话。
一、推荐算法的工作流程
推荐算法在工作时有四个步骤:获取数据、召回、排序、结果展示。
1. 获取数据
数据是推荐的依据,是算法决定将什么样的内容推给谁的根本,主要包括用户数据与内容数据。用户数据有基本画像(如年龄、性别、地理位置等)和行为数据(如播放、点赞、评论、分享等);内容数据有基础数据(如标签tag、发布者权重等)和热度数据(播放、点转评等)。
2. 召回
数据库存有海量的内容,考虑到计算负荷与实时性的要求,算法不可能在用户每刷新一次时,都对数据库中所有的内容计算分值排序一次;所以通常会通过特定的规则召回指定数量的内容,视社区内容体量而定,这个数量通常为几百到几千。
3. 排序
算法从数据库中召回的内容良莠不齐,而产品的目的则是将好的内容优先展示给给用户,故而需要对召回的内容做统一的打分排序。
4. 结果展示
将排序的结果映射到前端的槽位展示,即是用户所看见的内容信息。
二、推荐算法的类别
目前主流的推荐算法,主要有流行度推荐(热度推荐)、基于内容推荐、协同过滤这三种逻辑;辅以人群推荐、标签推荐、运营干预等更简单的灵活策略。
算法的本质是“猜你最想看什么”,其中热度推荐负责找出当下最热门的内容;协同过滤与基于内容推荐负责找出你可能感兴趣的类型。
社区在应用算法时通常会将上述几种逻辑分别加权然后混合计算,在技术受限或不需要个性化的社区场景也有单独使用热度推荐的情况,如B站的【热门】tab,皮皮虾的排行榜等。
后文将对几种推荐逻辑分别进行解析。
三、热度推荐
热度推荐即是根据内容的产生时间、播放、点赞、评论、分享等交互数据计算出时下最流行的内容,其数学原理相对简单,举个例子:
如图即为某个社区产品帖子的热度计算公式,不必对公式恐惧,其原理很简单,其中:
1)views:浏览量,对浏览量做了一次取对数,主要是为了防止某些浏览量较大的内容异军突起,待在榜单迟迟不动。
2)recommendScore:点赞数,作为文章热门程度的考虑因素。
3)articleComments:评论数,为了降低刷评论的影响,对其作了一次取对数操作。
4)(age/2 + update/2 + 1) ^ i:分母是对时间因子的考虑,宏观上来看,就是文章热度和创建时间成反比;细节上体现为指数函数,可以通过对 i 变量的调控来改变时间因子在对热度的影响。
6)age:内容发布时间
7)update:内容最后更新时间
8)i:重力因子,取值的大小会直接决定热门排序
对于同一内容,上面的计算公式均可化简为:
可以看出,热度和创建时间成反比,那么这个反比的值最终就由重力因子i 来影响。
如果想要突出新热内容、过滤时间过久的热门内容,需要增大重力因子,若是如同周热门和月热门则需要按时间要求依次逐渐降小i 值。
对于不同的变量i取值,热度随时间的衰减趋势如图所示:
举个实例,在我所运营社区的话题页面推荐流中,通常按照i=1来计算热度,以此保证内容每天的新鲜度;但当我在做一个每周热门榜单的项目时,则将i调整为0.5,降低时间衰减的影响,以此保证内容质量。
四、基于内容推荐
基于内容推荐,即通过算法识别内容的元数据,在用户浏览或点赞过内容A时,为你推荐相似的内容B。
其原理是识别内容标题、简介、字幕、标签等信息,提取出特征关键词,根据关键词计算内容相似度,以此作为推荐根据;比如基于词向量的推荐算法。
基于内容推荐最常见的应用场景莫过于电商,在淘宝中我们经常会遇到这种情况:当你点击、搜索过某种商品后,算法会将大量的同类商品塞到你的推荐流甚至其它平台的广告上,在早期推荐策略比较蠢的时候甚至经常推荐已经买过的商品。
五、协同过滤
不同与基于内容推荐的通过识别内容元数据与语义分析来计算内容相似度的方法,协同过滤更偏向于发动“群众的智慧”,通过用户群体对不同内容的打分来计算内容的相关性,或猜测用户可能喜欢什么;前者为基于内容的协同过滤,后者为基于用户的协同过滤。
1. 基于内容的协同过滤
根据所有用户对内容的打分,发现内容与内容的相似度,然后再根据用户的历史偏好信息将类似的内容推荐给该用户。
所谓的打分包括播放、点赞、点踩等等交互行为,可以是喜欢也可以是不喜欢。
举例说明:
如表所示,甲乙丙为历史偏好信息相近的用户,ABC为不同内容。
其中甲喜欢内容A、内容B、内容C,乙喜欢内容A与内容C,目标用户丙喜欢内容A;由历史偏好可认为内容A与内容C相似,喜欢A的用户读会喜欢C,以此为依据将内容C推荐给用户丙。
2. 基于用户的协同过滤
根据目标用户的历史消费行为,找到与目标用户消费行为相似的近似用户,再以近似用户的喜好为依据向目标用户推荐内容;简而言之就是“和你相似的人也喜欢这个”。
举例说明:
如表所示,甲喜欢内容ACD,乙喜欢内容B,目标用户丙喜欢AC;由此可认为用户甲与用户丙的消费喜好是相似的,以此为依据将内容D推荐给用户丙。
六、运营如何理解推荐算法
个性化推荐算法是非常复杂的,本文也仅停留在概念理解的层面,但其实可以发现,推荐算法许多工作逻辑同我们运营在做内容分发时的思路是一致的;比如热度推荐对应推优,基于内容推荐对应专题内容聚合、协同过滤对应精准营销等等。
算法确实取代了一部分运营的工作,甚至做的比人好得多,但也有其局限性;比如热度推荐并不能真正理解内容、把控内容导向;协同过滤会使得用户的推荐流越来越垂直,甚至有被算法控制的感觉。
在真正的人工智能时代到来以前,运营策略干预仍然会在内容分发中扮演重要角色,与推荐算法互补共存。
本文由 @酸梅汤 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 unsplash,基于 CC0 协议
看到啦!非常有用!刚入职的运营小白最近正在因为搞不懂算法问题而头秃…请问可不可以出一期运营必备的技术知识呀~
非常感谢,这个公式可以举个栗子吗,时间要如何表示
发布时间可以乘除???那个时间成反比有点不明白也
求教,热度推荐公式的系数是怎么得到的呀? 0.0
非常棒! 热度推荐的公式构造,严谨点来说,对数那里是不是得写成 log(1+x)
非常受用,感谢,第三部分什么时候更呀
感谢感谢
内容最后发布时间:是指发布人对内容的编辑的时间,还是指其它用户对该内容的点赞、评论等操作时间?
内容最后发布时间单位是天吗?
看需求,如果是bbs类论坛、贴吧虎扑这种,对回帖的需求比较高,就用回复时间;正常的内容、社交社区的时间线帖子类内容用编辑时间做最后发布时间。时间单位是秒。