UserCF算法

UserCF (User-based Collaborative Filtering)算法使用朴素的“人以群分”的思想。
基本思路是先找到相似用户,再找到他们喜欢的物品。
例如,如果用户A和用户B是相似的,现在给用户A推荐物品,就可以把用户B关注的但用户A没关注的物品推荐给用户A。
推荐原理

UserCF算法步骤

步骤1:找到与待推荐用户兴趣相似的用户集合
步骤2:从这些相似用户喜欢的物品中选出目标用户没有关注的物品,并将它们推荐给目标用户

用户相似度

基于用户行为相似度,计算兴趣相似度。具体来说,用户行为是指喜欢某些物品。
将不同用户喜欢的物品列表看做是不同的集合,通过集合求相似的方法,得出用户行为相似度。
用户相似度

Jaccard相似系数

Jaccard相似系数可以比较有限集合(A与B)之间的相似性和差异性。
Jaccard系数等于A与B交集的大小除以A与B并集的大小,取值范围在0到1之间。
越接近1表示越相似,越接近0表示越不相似。
1代表两个集合完全相似,0代表两个集合完全没有交集。
Jaccard相似算法

余弦相似度

余弦相似度计算公式为:Cos(A,B) = (A和B交集大小) / 根号下(A集合大小 * B集合大小),取值范围在0到1之间。
越接近1表示越相似,越接近0表示越不相似。
1代表两个集合完全相似,0代表两个集合完全没有交集。
余弦相似度

UserCF推荐算法

得到用户之间兴趣相似度后,接下来要对某个用户进行推荐。
UserCF算法会为用户推荐与他兴趣最相似的K个用户的感兴趣物品,并且会对推荐物品进行排序。
UserCF推荐算法

UserCF推荐算法案例

用户物品评分表

设置有ABCD 4个用户,abcde 5个物品,每个用户对每个物品都有一个评分,该评分代表用户对物品喜爱程度。
用户物品评分表

用户C与每个用户相似度

结合用户评分表,可以用余弦相似度,求出用户C与每个用户相似度。

C与A相似度 = N(C)与N(A)的交集数量 / 根号下(N(C)元素数量 * N(A)元素数量)
其中N(C)中包含b和e,N(A)中包含a,b,d,因此在分子中N(C)与N(A)的交集是b,对应数量是1;分母中两个集合元素数量相乘,等于根号6。
用户相似度案例

用户C的物品推荐

根据用户C与每个用户相似度,为用户C推荐物品

根据用户A、B、C 3个用户的情况,为用户C推荐,K=3。
C没有关注过的物品为a、c、d,公式中u=C,i={a,c,d}
为a、c、d 3个物品进行排序,就是计算出P(C,a)、P(C,c)、P(C,d),然后再排序。
用户推荐案例

总结

UserCF算法是一种基于用户行为相似度的协同过滤算法。

通过计算用户之间的兴趣相似度,找到与目标用户兴趣相似的用户集合,并推荐这些用户喜欢的,但目标用户没有关注的物品。

Jaccard相似系数和余弦相似度是常用的用户相似度计算方法。

UserCF算法可以为用户提供个性化的推荐结果。