最初也最经典的推荐算法:协同过滤(2003年亚马逊提出)
UserCF 基于用户的协同过滤
-
其中√表示喜欢,×表示不喜欢,⚪表示不知道 ?表示推荐结果
-
如果将上面的用户-商品表用矩阵表示,1代表喜欢,-1表示不喜欢,0表示不知道
- 注:矩阵列表示商品,行表示用户
- 我们从表中去理解,商品A用户X表示喜欢,那么同样喜欢商品A的用户还有A和C,然后看商品B,跟用户X一样同喜欢商品B的只有用户C,那么四个商品中两个兴趣都重合,那么商品C用户C是不喜欢的,那么我们推测用户X可能也不喜欢
- 用矩阵去计算用户之间的相似度
- 在1中我们可以逐个分析,但是在大数据场景,显然不现实那么我们将矩阵每行作为用户向量,来计算用户之间的相似度,主要度量方法有余弦相似度,皮尔逊相关系数等方法度量相似度
- 同理可得itemCF:基于物品的协同过滤
上述基于用户的协同过滤表与矩阵同样适用于分析基于物品的协同过滤,只不过是以行为用户向量,改成以列为物品向量去计算相似度。
- userCF与itemCF的应用场景:
- userCF是根据用户来推荐那么就需要数据中含有较强的社交特性,适用场景比如新闻类的推荐,新闻本身兴趣点是广泛的,而且比较及时,与带有热点,更能推荐给兴趣相同的朋友
- itemCF更适用于兴趣变化较为稳定的应用,比如亚马逊的电商场景,可能用户某段时间对某种商品感兴趣那么我们基于物品进行推荐,又比如视频推荐,当用户喜欢的视频类型稳定之后,就可以根据类型进行推荐。
- 协同过滤的缺点:
- 由于热门的物品具有很强的头部效应,容易与大量物品产生相似性,反之尾部的物品由于特征向量稀疏,很少与其他商品产生相似性,那么热门物品就很容易被推荐,尾部物品很少被推荐
- 总结:推荐结果的头部效应较为明显,处理稀疏向量的能力弱