推荐系统中的协同过滤

推荐系统中的协同过滤

协同过滤(Collaborative Filtering)是推荐系统中经典且广泛应用的技术之一。其核心思想是通过分析用户的行为数据,识别具有相似偏好的用户群体,从而预测用户未来的偏好。与基于物品显性特征的推荐不同,协同过滤主要依赖于用户行为之间的相似性,因此对数据本身有较高的依赖性。

协同过滤包括两种主要类型:基于用户的协同过滤基于物品的协同过滤。此外,还有一些扩展方法,如矩阵分解和混合协同过滤。

基于用户的协同过滤(User-based Collaborative Filtering)

在基于用户的协同过滤中,推荐系统根据用户之间的相似性进行推荐。如果用户A和用户B在历史记录上有类似的兴趣,那么用户B喜欢的物品很可能也会适合用户A。

算法步骤

  1. 寻找相似用户集合:通过计算用户之间的兴趣相似度,找到与目标用户兴趣最相似的用户集合。常用的相似度计算方法包括余弦相似度和皮尔逊相关系数。

  2. 推荐物品:在相似用户集合中,识别这些用户喜欢但目标用户尚未互动的物品,并将这些物品推荐给目标用户。

示例与计算过程

假设有如下的用户与电影评分数据,我们将使用 余弦相似度 来计算用户之间的相似性,并基于相似性进行推荐。

用户电影A评分电影B评分电影C评分电影D评分
用户15432
用户25523
用户34351
用户45442

我们将以 用户1 为目标用户,计算用户1与其他用户之间的相似度,并推荐其他用户喜欢但用户1未评分过的电影。

余弦相似度计算过程

余弦相似度公式
余弦相似度 = ∑ i = 1 n r u i ⋅ r v i ∑ i = 1 n r u i 2 ⋅ ∑ i = 1 n r v i 2 \text{余弦相似度} = \frac{\sum_{i=1}^{n} r_{ui} \cdot r_{vi}}{\sqrt{\sum_{i=1}^{n} r_{ui}^2} \cdot \sqrt{\sum_{i=1}^{n} r_{vi}^2}} 余弦相似度=i=1nrui2 i=1nrvi2 i=1nruirvi
其中, r u i r_{ui} rui r v i r_{vi} rvi分别表示用户 u u u和用户 v v v对物品 i i i的评分。

计算用户1和其他用户的相似度
  1. 用户1 和 用户2 的相似度
  • 用户评分乘积和: 5 × 5 + 4 × 5 + 3 × 2 + 2 × 3 = 25 + 20 + 6 + 6 = 57 5 \times 5 + 4 \times 5 + 3 \times 2 + 2 \times 3 = 25 + 20 + 6 + 6 = 57 5×5+4×5+3×2+2×3=25+20+6+6=57
  • 用户1评分平方和: 5 2 + 4 2 + 3 2 + 2 2 = 25 + 16 + 9 + 4 = 54 5^2 + 4^2 + 3^2 + 2^2 = 25 + 16 + 9 + 4 = 54 52+42+32+22=25+16+9+4=54
  • 用户2评分平方和: 5 2 + 5 2 + 2 2 + 3 2 = 25 + 25 + 4 + 9 = 63 5^2 + 5^2 + 2^2 + 3^2 = 25 + 25 + 4 + 9 = 63 52+52+22+32=25+25+4+9=63

余弦相似度 ( 用户 1 , 用户 2 ) = 57 54 ⋅ 63 = 57 7.35 ⋅ 7.94 ≈ 0.97 \text{余弦相似度}(用户1, 用户2) = \frac{57}{\sqrt{54} \cdot \sqrt{63}} = \frac{57}{7.35 \cdot 7.94} \approx 0.97 余弦相似度(用户1,用户2)=54 63 57=7.357.94570.97

  1. 用户1 和 用户3 的相似度
  • 用户评分乘积和: 5 × 4 + 4 × 3 + 3 × 5 + 2 × 1 = 20 + 12 + 15 + 2 = 49 5 \times 4 + 4 \times 3 + 3 \times 5 + 2 \times 1 = 20 + 12 + 15 + 2 = 49 5×4+4×3+3×5+2×1=20+12+15+2=49
  • 用户3评分平方和: 4 2 + 3 2 + 5 2 + 1 2 = 16 + 9 + 25 + 1 = 51 4^2 + 3^2 + 5^2 + 1^2 = 16 + 9 + 25 + 1 = 51 42+32+52+12=16+9+25+1=51

余弦相似度 ( 用户 1 , 用户 3 ) = 49 54 ⋅ 51 = 49 7.35 ⋅ 7.14 ≈ 0.94 \text{余弦相似度}(用户1, 用户3) = \frac{49}{\sqrt{54} \cdot \sqrt{51}} = \frac{49}{7.35 \cdot 7.14} \approx 0.94 余弦相似度(用户1,用户3)=54 51 49=7.357.14490.94

  1. 用户1 和 用户4 的相似度
  • 用户评分乘积和: 5 × 5 + 4 × 4 + 3 × 4 + 2 × 2 = 25 + 16 + 12 + 4 = 57 5 \times 5 + 4 \times 4 + 3 \times 4 + 2 \times 2 = 25 + 16 + 12 + 4 = 57 5×5+4×4+3×4+2×2=25+16+12+4=57
  • 用户4评分平方和: 5 2 + 4 2 + 4 2 + 2 2 = 25 + 16 + 16 + 4 = 61 5^2 + 4^2 + 4^2 + 2^2 = 25 + 16 + 16 + 4 = 61 52+42+42+22=25+16+16+4=61

余弦相似度 ( 用户 1 , 用户 4 ) = 57 54 ⋅ 61 = 57 7.35 ⋅ 7.81 ≈ 0.98 \text{余弦相似度}(用户1, 用户4) = \frac{57}{\sqrt{54} \cdot \sqrt{61}} = \frac{57}{7.35 \cdot 7.81} \approx 0.98 余弦相似度(用户1,用户4)=54 61 57=7.357.81570.98

基于相似度的推荐

根据计算结果,用户1与其他用户的相似度排序如下:

  1. 用户4:相似度 = 0.98
  2. 用户2:相似度 = 0.97
  3. 用户3:相似度 = 0.94

根据这个相似度排序,我们优先考虑用户4和用户2的物品进行推荐。我们将推荐用户4和用户2喜欢但用户1未评分过的电影。

用户4喜欢的电影:电影C(评分为4)
用户2喜欢的电影:电影D(评分为3)

因此,基于用户的协同过滤推荐结果是:推荐用户1观看 电影C电影D,因为这些电影受到了与用户1相似度最高的其他用户的好评。

基于物品的协同过滤(Item-based Collaborative Filtering)

基于物品的协同过滤通过分析物品之间的相似性来进行推荐。其核心思想是,如果一个用户对某物品A表现出高度兴趣,那么系统会推荐与物品A相似的其他物品。

示例与计算过程

我们将继续使用相同的评分数据,并通过 Jaccard 相似度余弦相似度来计算电影之间的相似性。

Jaccard 相似度计算过程

在使用 Jaccard 相似度之前,我们需要将评分数据转换为布尔值形式,将评分≥3的项视为“喜欢”(1),评分<3的项视为“不喜欢”(0)。转换后的数据如下:

用户电影A电影B电影C电影D
用户11110
用户21101
用户31110
用户41110

Jaccard 相似度公式
Jaccard 相似度 = ∣ A ∩ B ∣ ∣ A ∪ B ∣ \text{Jaccard 相似度} = \frac{|A \cap B|}{|A \cup B|} Jaccard 相似度=ABAB

电影A 与其他电影的Jaccard相似度
  • 电影A 和 电影B:交集 = 4, 并集 = 4,相似度 = 4 4 = 1.0 \frac{4}{4} = 1.0 44=1.0
  • 电影A 和 电影C:交集 = 3, 并集 = 4,相似度 = 3 4 = 0.75 \frac{3}{4} = 0.75 43=0.75
  • 电影A 和 电影D:交集 = 1, 并集 = 4,相似度 = 1 4 = 0.25 \frac{1}{4} = 0.25 41=0.25

余弦相似度计算过程

根据余弦相似度公式,计算电影A与其他电影的相似度:

  • 电影A 和 电影B:相似度 = 0.99
  • 电影A 和 电影C:相似度 = 0.91
  • 电影A 和 电影D:相似度 = 0.96

结果分析

相似度类型电影A与B电影A与C电影A与D
Jaccard1.00.750.25
余弦相似度0.990.910.96

这两种方法各有优劣,Jaccard 相似度更适合离散数据,而余弦相似度更适合连续评分数据。

总结

在推荐系统中,协同过滤是通过用户的历史行为数据来预测用户偏好的重要技术。基于用户和物品的协同过滤结合矩阵分解等方法,使得推荐系统能够更加精准和个性化。

希望这篇文章对协同过滤的基本概念、示例以及计算过程做了清晰的阐述,如有任何问题或建议,欢迎讨论交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机智的小神仙儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值