2019.6.25补充:学推荐策略建议读《推荐系统实践》(项亮,人民邮电出版社),这本书可以解答有关推荐策略的大部分困惑,本篇内容只是初学时很浅显的一篇读书笔记~


推荐策略的两个关键问题分别是“召回”和“排序”。“召回(match)”指从全量信息集合中触发尽可能多正确的结果,并将结果返回给“排序”,它可能包含来源于渠道,比如协同过滤、主题模型、内容召回和热点召回等渠道,能够从内容库中选出多样性的偏好内容。而“排序(rank)“则是指对多个召回渠道的内容进行统一打分排序,选出最优的少量结果。

下面来重点说说“召回(match)”。

1

“召回”指从全量信息集合中触发尽可能多正确的结果。在搜索系统中,用户对这个“正确的结果”有预期,比如搜索“北京大学”时想看到的就是北大相关的网站、新闻等。但在推荐系统中,用户并没有一个明确的检索词(Query)输入,用户自身的需求就不太明确,推荐系统需要做的,就是根据用户画像、内容画像等各种信息为用户推荐他可能感兴趣的内容,达到延长用户停留时间的作用。另外,由于没有明确的Query,推荐系统中的召回面对的是全量信息池,需要从整个信息集合中挑选出尽可能多的相关结果,剔除相关性较弱的结果,降低排序阶段的工作量。

2

怎样的召回策略是好的?我们主要看两个评价指标,即召回率和准确率。

  • 召回率(Recall)=系统检索到的相关内容 / 系统所有相关的内容总数
  • 准确率(Precision)=系统检索到的相关内容 / 系统所有检索到的内容总数

以搜索为例,当用户搜索“北京大学”时,想看到的是北大相关的网站、新闻等,而系统返回了以下三个网页:

a. 北京大学保安考上研究生

b. 北京互联网工作招聘

c. 大学生活是什么样的

可以看到,只有a是用户真正想看到的,其他两个和用户搜索词无关,而事实上数据库里还有这种网页:

d. 北大开学季

e. 未名湖的景色

d、e这两个网页没被搜索到,但它们和“北京大学”的相关度其实是超过b、c的,也就是应该被搜索(被召回)到但实际并没有显示在结果里的,所以,这个系统的:

l 召回率 = a / (a + d + e)=0.33

l 准确率 = a /(a + b + c)=0.33

这是搜索情境下的召回率和准确率,而“推荐”其实就是没有检索词输入时的搜索,例如,用户并没有输入“北京大学”这样的关键词,但其实他是北京大学的学生,对自己学校相关的新闻很感兴趣,推荐系统的召回就是要根据用户画像、内容画像等各种信息,为用户提供他感兴趣的相关内容,所以也存在召回率和准确率的问题。召回率和准确率有时存在相互制衡的情况,好的召回策略应该在保证高准确率的情况下也保证高召回率。

3

召回策略有很多种,其中比较重要的有两种:基于内容匹配的召回和基于协同过滤的召回。

· 基于内容匹配的召回

内容匹配即将用户画像与内容画像进行匹配,又分为基于内容标签的匹配基于知识的匹配。例如,A用户的用户画像中有一条标签是“杨幂的粉丝”,那么在他看了《绣春刀2》这部杨幂主演的电影后,可以为他推荐杨幂主演的其他电影或电视剧,这就是“基于内容标签的匹配”;而“基于知识的匹配”则更进一步,需要系统存储一条“知识”——《绣春刀2》是《绣春刀1》的续集,这样就可以为看过《绣春刀2》的用户推荐《绣春刀1》。

基于内容匹配的召回率较高,但准确率较低,比较适用于冷启动的语义环境。

· 基于协同过滤的召回

如果仅使用上述较简单的召回策略,推荐内容会较为单一,目前业界最常用的基于协同过滤的召回,它又分为基于用户、基于项目和基于模型的协同过滤。

其中,基于用户(User-based)的协同推荐是最基础的,即发现与用户相似的其他用户,用用户的浏览记录做相互推荐。例如,通过浏览记录发现用户一与用户二的偏好类似,就将用户一点击的内容推送给用户二。

基于项目(Item-based)的协同过滤中的“项目”可以视场景定为信息流产品中的“内容”或者电商平台中的“商品”,其计算项目之间的相似性,再根据用户的历史偏好信息将类似的物品推荐给该用户。

基于模型的协同过滤推荐(Model-based)就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测推荐。

总体来说,基于协同过滤的召回即建立用户和内容间的行为矩阵,依据“相似性”进行分发。这种方式准确率较高,但存在一定程度的冷启动问题。

在实际运用中,采用单一召回策略的推荐结果实际会非常粗糙,通用的解决方法是将规则打散,将上述几种召回方式中提炼到的各种细小特征赋予权重,分别打分,并计算总分值,预测CTR。例如,根据内容匹配召回策略,用户A和内容甲的标签匹配度为0.6,同时,根据协同过滤召回策略,应该将内容甲推荐给用户A的可能性为0.7,那么就为0.6和0.7这两个数值分别赋予权重(这个权重可能会根据算法的具体情况来确定),得出总分,用它来预测用户可能点击的概率,从而决定是否返回该结果。

参考文献:

1. 闫泽华,《内容算法》,中信出版集团.

2. IBM官网资料探索推荐引擎内部的秘密,第 1 部分: 推荐引擎初探