二、基于协同过滤的推荐算法

基于内容的推荐算法会带来一系列的问题,例如会让用户进入信息茧房,无法进行冷启动(新用户)的推荐,所以在大多数业务场景下,智能推荐都需要应用到基于协同的推荐算法(CF),并与CB融合推荐。(CF)是一类算法,指的是对哪些数据进行怎样的协同,以及协同之后怎样过滤,这些是(CF)算法的重点。

基于协同的推荐算法(CF),其背后隐含的逻辑是每个人对自己兴趣的认知是片面的、不自知的。即没见过的东西,每个人是不知道也不确定自己是否会喜欢。所以,CF依赖“群体共性”“群体智慧”挖掘那些潜在的、可能会被用户喜欢的内容并推荐给用户。CF算法也是最早、最经典的推荐算法之一,可以这么说,CF算法是推荐算法的鼻祖。我们后续很多推荐算法都是基于CF的协同过滤思想延伸而来的。

有两类基于协同过滤的推荐算法:基于用户的协同过滤算法、基于物品的协同过滤算法。

1.​ 基于用户的协同过滤算法

其思想是将与当前用户行为最相似的用户群所共同感兴趣的内容集合按照评分大小推荐给当前用户。

基于用户的协同过滤算法,“协同”的对象是近邻用户行为,计算出每个用户的近邻用户之后,把这些用户的行为根据权重累加起来,形成一个共同兴趣的合集,这个合集根据权重从高到低排序,就是推荐的结果。这里面不考虑内容相似度的问题,协同是对行为作协同,过滤是被协同出来但已被当前用户访问过的结果做过滤。如图7–4所示。

图7–4 艾克斯后台近邻用户输出示意图

基于用户的协同过滤算法的底层算法是近邻算法,即计算近邻用户的算法。通过计算当前用户访问的所有内容,将所有内容分词后向量化后放在一个词袋里面,将当前用户的词袋放在600×600维的矩阵里,并两两计算与其他用户之间词袋的余弦距离,得出词袋与词袋之间的相似度大小,也就得到了每两两用户的相似度大小。这时候就能找到任意一个用户与他的行为最接近的用户群了。有了这个近邻用户集,我们才可以做协同过滤。

2.基于物品的协同过滤算法

基于物品的协同过滤算法诞生于1998年,是由亚马逊提出的,并在2001年由其发明者发表了相应的论文。可以这么说,基于物品的协同过滤算法由亚马逊发扬光大,并且可以广泛的适用电商和社交场景。

其思想是将访问过当前用户所访问内容的用户还访问过什么推荐给当前用户。这么说来有点绕口,简单说来就是“访问过此内容的用户还访问过哪些内容”。基础思路为:先确定用户喜欢的物品,再找到与之相似的物品推荐给用户。只不过这个相似不是内容、文本语义上的相似,而是基于用户行为反馈角度衡量的。如图7–5所示。

图7–5 协同过滤算法简单示意图