算法简介

顾名思义,基于物品属性的召回方法的基本思想是根据某一物品属性,召回与之匹配的相关物品。例如在 UGC 图文内容推荐场景中,我们可以根据物料的类型、标签、话题等属性快速找到相关物料;在电商推荐场景中,我们可以根据物品的类目、品牌、价格等信息快速召回相关物品。

在实际应用中,需要事先通过离线计算将具备相同属性的物品放入同一个集合中,集合内部按照后验消费指标(例如 CTR,停留时长)降序排列。例如下表所示:

物品属性 物品集合
标签1 物品1, 物品2, 物品3, 物品4
店铺A 物品5, 物品6, 物品7, 物品8
优质物品 物品9, 物品10, 物品11, 物品12
热门物品 物品13, 物品14, 物品15, 物品16

所有带有“标签 1”的物品组成集合 $T_{tag=\text{标签}1}$,店铺A中的所有物品组成集合 $T_{shop=\text{店铺}A}$,所有优质物品组成集合 $T_{quality}$,所有热门物品组成集合 $T_{hot}$。这种类似 key-value 的数据结构在推荐系统中非常常见,我们称之为倒排索引

当线上有用户请求过来时,我们可以根据用户画像获取当前用户喜欢的标签,关注的作者等信息,然后根据这些信息来查找倒排索引中的相关集合,将对应的物品集合作为召回结果返回。

基于物品属性的倒排索引召回方法虽然没有基于深度学习或图卷积的复杂算法效果好,但是这种算法也有很多优点:

  1. 可解释性强
  2. 需要的计算资源少
  3. 对数据量也没有较高的要求
  4. 灵活性好,能方便地配合其他业务团队完成一些临时性、运营性的需求

因此在实际的工业级推荐系统中这种召回方法也非常常用。

基于这种方法,我们可以快速地完成一些简单的召回需求,例如:

  • 用户偏好召回:根据用户画像信息,利用用户偏好标签检索相关标签物品
  • 地理位置召回:根据用户地理位置信息,检索附近的用户发布的优质内容
  • 同城召回:根据用户所在城市,检索该与该城市相关的优质内容
  • 关注作者召回:根据用户关注的作者,检索作者发布的内容
  • 爆款物品召回:检索热门物品,热门物品可以根据热度、时间等维度来定义
  • 优质物品召回:检索优质物品,优质物品可以根据质量、时间等维度来定义

参考资料

  1. https://github.com/wangshusen/RecommenderSystem
  2. 石塔西《互联网大厂推荐算法实战》