在短视频章节中讲到过,人的推荐不仅有基于通讯录几维好友的推荐,还有基于用户共性行为的近邻用户推荐。这两种推荐方式在找到与自己相似用户的场景中颇为有效,但在一些场景中却不能满足业务需求。
例如在婚恋交友APP中,男生浏览到一位气质清新脱俗的女生,瞬间对了眼缘,并急不可耐地发送了消息等着回复,但该女生迟迟没有任何要回复的迹象。这时这位男生有两个选择:要么继续发消息,面临被彻底拉黑的风险;要么再碰碰运气看还有没有同样气质的女生,不能在一棵树上吊死嘛。这时我们该如何推荐呢?如果是基于用户共性行为的近邻用户推荐,那么我想此位男生会怀疑人生,因为推荐给他的用户是同样浏览了此位女生的男用户。所以,在这种场景下我们需要引入的是基于物品的协同过滤算法。
我们来回顾一下协同过滤算法,协同过滤算法可进一步分为基于近邻的模型和隐因子模型。其中,基于近邻的模型主要采用KNN的思想来完成推荐,它被分为User based CF和Item based CF。
User based CF主要考量的是user-user之间的相似性,首先根据用户对物品的历史行为来找到相似的用户,然后通过跟他相似的用户的偏好来建模目标用户的偏好。其思想是将与当前用户行为最相似的用户群所共同感兴趣的内容集合按照评分大小推荐给当前用户。基于用户的协同过滤算法,“协同”的对象是近邻用户行为,计算出每个用户的近邻用户之后,把这些用户的行为根据权重累加起来,形成一个共同兴趣的合集,这个合集根据权重从高到低排序,就是推荐的结果。在矩阵视角,就是用户对物品的评分等于相似用户对该物品评分的加权平均值。在其中,一个重要的环节是如何选择合适的相似度计算方法,常用的两种相似度计算方法包括皮尔逊相关系数和余弦相似度等。
Item based CF主要考量的是item-item之间的相似性,跟User based CF类似,只不过它是根据用户对物品的历史行为来找到相似的物品,然后通过用户所喜欢的物品来推荐相似的物品。其思想是将访问过当前用户所访问内容的用户还访问过什么推荐给当前用户。这么说来有点绕口,简单说来就是“访问过此内容的用户还访问过哪些内容”。基础思路为:先确定用户喜欢的物品,再找到与之相似的物品推荐给用户。只不过这个相似不是内容、文本语义上的相似,而是基于用户行为反馈角度衡量的。在矩阵视角,就是用户对物品的评分等于该用户对其他物品的评分按物品相似加权平均值。和User based CF协同过滤算法类似,需要先计算Item-Item之间的相似度。并且,计算相似度的方法也可以采用皮尔逊相关系数或者余弦相似度。
很显然,为了帮助上述例子的男生找到与另一位有可能会对上眼缘的女生,我们需要用到的是协同过滤算法的Item based CF,即看过这个女生的用户还看过哪些女生。这位女生气质清新脱俗,那么看过这个女生的这些用户很有可能曾经还看到过其他气质相仿的女生,那么被这个群体共同投票、共同浏览、共同发消息最多的这些女生就会被推荐出来。Item based CF聚焦的点在于当前所浏览的人,而非此用户之前的用户行为,是通过其他用户的行为帮助此用户发现了与当前所浏览的人相似的人,在数据量越大的情况下,这个效果是非常不错的,甚至可以超越个人的经验。
并且Item based CF不仅可以用于人的推荐,在商品较少、用户较多的电商场景中,如阿迪达斯官方商城,SKU数量一共也就几百,而用户量数以十万计且商品的更新频率相对较低。那么这个时候Item based CF的效果可能比User based CF会更好。
直播个性化推荐——特殊的人个性化推荐
早期的直播推荐大多是基于热度进行推荐。根据当前直播间的观看人数、送礼人数、互动人数等做一定的加权求和,得到这个直播间的热度分数,根据这个分数对直播间进行排序做推荐。(听起来是不是有点像电商的人气推荐)其实,这不是一种模型推荐,更像是一种策略和规则推荐。
这种方式自然导致了直播平台主播的头部效应,流量全部集中在头部主播,小主播难以得到有效地曝光。 如果这一情况长期存在,小主播直播热情没了,可能就不直播了。这样会对平台的整体利益造成损害。而且几乎所有用户看到的都是头部主播,用户很有可能就会有看腻的情况。
那么,直播个性化推荐主要是怎么做的呢?
从数据收集上来看,直播场景的数据信息也较为丰富,如表5–1所示。
表5–1 直播场景的数据信息
直播推荐场景下的数据特征与其他场景最大的不同是,直播的内容是“活”的不是“死”的,是实时变化的,不是一成不变的。
举个例子:一位用户喜欢看跳舞的主播,而主播跳舞可能只在某个时间段进行,即使是专门的“舞”播,也不会一直在跳舞,而当用户进入直播间主播刚好没有在跳舞时,用户很可能就会退出直播间,因此主播的实时动态信息就需要被识别出来。识别的方式有音频的语音转文字后,通过分类的方式识别文字属于跳舞、聊天还是喊麦等,也可以通过视频行为识别的方式识别出主播是否有发生肢体扭动动作等。因此我们可以看到,直播场景下的实时数据非常的重要,将实时的数据特征放入推荐系统的模型中能一定程度上提高系统的实时性和准确性。
在召回层则一般会用到基于深度学习的CTR预估模型和基于物品的协同过滤算法。
需要注意的是在CTR预估模型中,所需要的样本不仅是是否发生对某直播的点击,像浏览直播1min也可以算作一个正样本,浏览直播5S则可以算作负样本,而且每个用户每个直播并不是每天都会上线都会开播,仅用用户和主播一天的样本数据进行建模过于稀疏,所以往往会根据实际情况选择15~30天的累计数据组成训练样本进行建模,同时拉长样本时间周期的好处是尽可能地保证用户和主播行为的覆盖度。
除了预估模型之外,基于物品的协同过滤算法主要会用到的召回算法。之前已经详述过基于物品的协同过滤与基于用户的协同过滤的区别。直播场景与电商场景有些许类似,主播数量远小于用户的数量,相似度矩阵的维度小,而且主播的变更频率不高,主播的相似度相对于用户的兴趣来讲比较稳定,因此在直播场景会更多地用到基于物品的协同过滤算法而不是基于用户。