作者:林子
链接:https://blog.csdn.net/Leoch007/article/details/80578463
欢迎转载,记得注明出处
推荐系统
推荐系统作为数据挖掘领域的一个重要应用,主要是为了解决信息过载和用户无明确需要的问题。其基本任务是联系用户和商品,一方面能帮助用户发现他可能感兴趣的商品或信息,另一方面也能将商品或者信息展示给对其感兴趣的用户面前。
目前,推荐系统已经应用在了多个邻域中,成为我们生活的一部分:
- 音乐、电影的推荐
- 电子商务中商品推荐
- 个性化阅读(新闻消息)
- 社交网络好友推荐、朋友圈推荐
- 基于位置的服务推荐
而常见的推荐算法主要可以分为三大类:
- 基于内容的推荐算法 Content based
- 基于协同过滤的推荐算法 Collaborative Filtering based
- 基于隐向量的推荐算法 Latent Factor based
而以下要实现的三种推荐算法都可认为是属于协同过滤的范畴。
IBCF
算法解析
IBCF(Item Based Collaborative Filtering)基于商品的协同过滤,是较为常见也较为常用的CF协同过滤算法,其能够有效地利用用户-商品评分的信息,却也会面临数据稀疏性问题和冷启动问题。
IBCF的主要思想是1)找到商品和商品之间的相似性、关联性,2)给用户推荐与其喜欢的商品最为相似的商品。具体地,前者商品之间相似性的计算常见的主要有以下三种:
- 余弦相似度: sim(i,j)=i⃗ ⋅j⃗ ∥i∥2∗∥j∥2 s i m ( i , j ) = i → ⋅ j → ‖ i ‖ 2 ∗ ‖ j ‖ 2
- 皮尔逊相关系数: sim(i,j)=∑u∈U(Ru,i−Ri¯)(Ru,j−Rj¯)∑u∈U(Ru,i−Ri¯)2√∑u∈U(Ru,j−Rj¯√)2√ s i m ( i , j ) = ∑ u ∈ U ( R u , i − R i ¯ ) ( R u , j − R j ¯ ) ∑ u ∈ U ( R u , i − R i ¯ ) 2 ∑ u ∈ U ( R u , j − R j ¯ ) 2
- 余弦适应性相似度: sim(i,j)=∑u∈U(Ru,i−Ru¯)(Ru,j−Ru¯)∑u∈U(Ru,i−Ru¯)2√∑u∈U(Ru,j−Ru¯√)2√ s i m ( i , j ) = ∑ u ∈ U ( R u , i − R u ¯ ) ( R u , j − R u ¯ ) ∑ u ∈ U ( R u , i − R u ¯ ) 2 ∑ u ∈ U ( R u , j − R u ¯ ) 2
对比可知,余弦相似度计算时对于用户未同时评分的商品较难处理,赋予任何值都显得不太合理,而余弦适应性相似度和皮尔逊相关系数就解决了这个问题,它们只考虑被同一用户同时评分了的i、j商品,区别在于,余弦适应性相似度通过减去用户评分的均值消去用户评分的偏好,而皮尔逊相关系数减去了商品分数的均值消去了商品本身的分值大小。
IBCF接着便要给用户推荐与其喜欢商品最为相似的商品,切确地说,对于用户未评分过的商品,我们要在0-5分的评分值中预测出用户会给这些商品打多少分。主要基于下面这个计算法则:
rxi=∑j∈N(i)sij⋅rxj∑j∈N(i)sij r x i = ∑ j ∈ N ( i ) s i j ⋅ r x j ∑ j ∈ N ( i ) s i j其中, rxi r x i 代表用户x给商品i的评分,而