在理解了内容和用户的基础特征之后,我们将进一步探讨推荐算法是如何匹配用户和内容的。概括而言,这一过程所做的就是“物以类聚,人以群分”。
一、物以类聚:基于内容属性的相似性推荐
有了完善的物品画像,我们就可以基于其固有属性来计算物品与物品之间的相似度,从而推荐与用户历史消费相似的新物品。以内容推荐为例,其用于相似度计算的常见因素有:作者层面的相似性(基于订阅或偏好关系),内容层面的相似性(如关键词、话题、类目、聚类、标签等)。
基于内容属性的推荐方式,常见于音乐(如潘多拉)、电影和书籍(如豆瓣)的推荐场景中。以图书推荐场景为例,在豆瓣图书上,有三本书分别有如下标签:
从标签层面不难看出,《推荐系统实践》与《推荐系统》在标签集合层面拥有更多的相同标签,具有更高的相似度。那么,当用户A选择了《推荐系统实践》之后,系统应当优先给他推荐的是《推荐系统》,而非《大数据时代》。
如果想要进一步细化,那么可以借助TF–IDF方式给不同的标签设定权重。其基本思想是:出现频率越高的标签区分度越低,反之亦然。比如“计算机”是一个高频出现的标签,那么这个标签的区分度就没有那么高,权重较低;而“推荐系统”是一个低频出现的标签,则该标签就更具有显著性和区分度,权重较高。
基于内容属性推荐的好处在于,只依赖物品本身的特征而不依赖用户的行为,让新的物品、冷僻的物品都能得到展示的机会。其存在的问题在于,推荐质量的优劣完全依赖于特征构建的完备性,但特征构建本身是一项系统的工程,存在一定成本。在上面的例子中,如果标签词粒度不够细,不能够全面描述书的内容(比如每本书的标签词只有三个),就很难计算出置信的相似度,达不到足够好的推荐效果。
此外,基于内容属性推荐没有考虑用户对物品的态度,用户的品位和调性很难得到诠释和表达。比如,市面上关于内容分发的书籍很多,仅从标签词上很难分辨出高下。为了在推荐中更好地引入受众反馈因素,提出了基于用户行为的“协同过滤”概念。
二、人以群分:基于用户行为的协同过滤
举一个生活中的场景:初次为人父母,“无证上岗”的新手爸妈们内心是激动而又惶恐的。“打听”成了他们育儿的重要法宝之一。“你家宝宝用的是什么沐浴液啊?”“你们有没有上什么早教班啊?”……我在的多个亲子群里,无时无刻不在发生这样的讨论。这样的讨论也构成大家进行后续消费决策的主要因素之一。
这种基于人和人之间的相互推荐固然是弱社交关系分发的一种形态,但促成大家进行价值信息交换和购买转化的,其实是人和人之间的相似点,即为人父母、拥有相似的价值观和消费观。
把用户的消费行为作为特征,以此进行用户相似性或物品相似性的计算,进行信息匹配,是协同过滤(Collaborative Filtering)的基础。
协同推荐可以分为三个子类:基于物品(Item-based)的协同、基于用户(User-based)的协同和基于模型(Model-based)的协同。
基于用户的协同就契合了上面的例子,其基础思路分为两步:第一步,找到那些与你在某一方面口味相似的人群(比如你们都是新手爸妈,倾向于同一种教育理念);第二步,将这一人群喜欢的新东西推荐给你。
下图中,用户A和用户C都阅读了内容A和内容C,用户B阅读了内容B。基于阅读行为来看用户相似度,用户A和用户C更为相似。那么,当用户C阅读了新内容D之后,这一内容就应当推荐给用户A。
基于物品的协同,其推荐的基础思路是:先确定你喜欢什么物品,再找到与之相似的物品推荐给你。只是物品与物品间的相似度不是从内容属性的角度衡量的,而是从用户反馈的角度衡量的。
比如下图中,内容A和内容C都被用户B、C阅读,从阅读行为的角度看,两篇内容更相似。那么,当用户A阅读了内容A时,系统就选择与内容A相似的内容C,将其推荐给用户A。
以书籍为例,在协同推荐的场景下,一本书的特征(标签)不再是作者、题材、领域这些静态固有属性,而是哪些用户购买了、哪些用户在购买后给了高分或低分这样的行为动作。
依赖不同的协同算法,同样的数据集合可能会得到不同的结果。下表中,展示了不同书籍的用户购买情况。对于用户E而言,其购买了《推荐系统实践》和《大数据时代》两本书。那下一步,我们应该给他推荐哪本书呢?
在基于物品的协同下,应该给他推荐《推荐系统》。这是因为《推荐系统》与用户E已经购买的两本书的购买用户重叠度更高。
在基于用户的协同下,应该给他推荐《集体智慧编程》。这是因为用户E的消费历史跟用户A、B、D重叠更高、更相似,而A、B、D三位用户都购买了《集体智慧编程》。
基于用户的协同算法在1992年就已经被提出,而基于物品的协同算法直到2001年才被亚马逊提出。大家一度认为基于物品的协同要优于基于用户的协同,这是因为大型电商网站的用户数量往往远大于商品数量,且商品的更新频率相对较低,基于物品的协同能够以离线运算的方式获得更好的推荐效果。但对新闻推荐系统、社交性推荐系统等而言,其物品是海量和频繁更新的,故而基于用户的协同也有着相应的用武之地。
协同类推荐的典型应用场景,如豆瓣在书籍介绍下展示的“喜欢读×××的人也喜欢……”。基于模型的协同,是用用户的喜好信息来训练算法模型,实时预测用户可能的点击率。比如,在Netflix的系统中就将受限玻尔兹曼机(Restricted Boltzmann machines,RBM)神经网络应用于协同过滤。将深度学习应用于基于模型的协同,也成了业界广泛使用的方式。
协同推荐是目前应用最为广泛的推荐机制,其基于用户行为的特点使我们不需要对物品或信息进行完整的标签化分析和建模,从而实现了领域无关,可以很好地发现用户的潜在兴趣偏好。
作者:小武