协同过滤推荐算法是最经典,常用的推荐算法。
所谓协同过滤基本思想就是根据用户之前的喜好以及其他兴趣相近的用户的选择来给用户推荐物品,一般是仅仅基于用户的行为数据或者用户的任何附加信息,目前应用比较广泛的协同过滤算法是基于领域的方法,而这种方法主要由两种算法,一是基于用户的协同过滤算法,二是基于物品的协同过滤算法,不管是基于用户还是基于物品,算法中非常重要的步骤之一就是计算用户和用户或者物品之间的相似性,我们下面来看一下常用的相似性度量方法
常用相似性方法由杰卡德相似系数,余弦相似度,皮尔逊相关系数。
基于用户的协同过滤(UserCF)
UserCF思想比较简单,当一个用户A需要个性化推荐的时候,我们可以先找到和他有相似兴趣的其他用户,然后把哪些用户喜欢的,而用户A没有听说过的物品推荐给A。

UserCF算法主要包括两个步骤,第一要找到和目标用户兴趣相似的集合,第二要找到这个集合中的用户喜欢的,并且目标用户没有听说过的物品推荐给目标用户。
第一个步骤中,我们要根据相似性度量的方法找到与目标用户兴趣相似的用户,而第二个步骤中,我们要基于相似用户喜欢的物品来对目标进行推荐,这个要依赖于目标用户对相似用户喜欢的物品的一个喜好程度。
基于物品的协同过滤(ItemCF)
ItemCF基本思想是预先根据所有用户的历史偏好数据计算物品之间的相似性,然后把与用户喜欢的物品相类似的物品推荐给用户,比如物品a和c非常相似,因为喜欢a的用户同时也喜欢c,而用户A喜欢a,所以把c推荐给用户A,ItemCF算法并不利用物品的内容属性计算物品之间的相似度,主要通过分析用户的行为记录计算物品之间的相似度,该算法认为,物品a和物品c具有很大的相似度是因为喜欢物品a的用户大都喜欢物品c。

基于物品的协同过滤算法主要分为两步:
1.计算物品之间的相似度
2.根据物品的相似度和用户的历史行为给用户生成推荐列表(购买了该商品的用户也经常购买的其他商品)
算法评估
这里采用俩种方法对UserCF和ItemCF结果做评估,一是召回率,二是准确率。召回率主要是考察模型推荐的全面性,也就是说用户真实喜欢的物品中,模型预测出了多少。准确率主要考察模型的准确性,意思是模型推荐给用户的商品中,用户真实看了多少。
除了上述两种评估方法,我们还可以用覆盖率和新颖度来对模型性能进行度量。覆盖率我们之前在推荐算法介绍的文章中提到过,它反映的是推荐算法挖掘长尾物品的能力,覆盖率越高,说明模型挖掘长尾的能力越强。新颖度是根据推荐列表中物品的平均流行度度量推荐结果的新颖度,如果推荐出的物品都很热门,说明推荐的新颖度较低,由于物品的流行度分布呈长尾分布,所以为了流行度的平均值更加稳定,在计算平均流行度时对每个物品的流行度取对数。
协同过滤算法存在的问题
协同过滤算法主要存在的问题是泛化能力弱,即协同过滤算法无法将两个物品相似的信息推荐到其他物品的相似性上,导致的问题是热门物品具有很强的头部效应,容易跟大量物品产生相似,而尾部物品由于特征向量稀疏,导致很少被推荐。为了解决这个问题,同时增强模型的泛化能力,矩阵分解技术被提出,该方法在协同过滤共现矩阵的基础上,使用更加稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征,在一定程度上弥补协同过滤模型处理稀疏矩阵能力不足的问题。
网友评论