推荐系统UserCF和ItemCF
一、UserCF
UserCF(User Collaboration Filter),又称 基于用户的协同过滤算法。
协同过滤:就是指众多的用户可以齐心协力,通过不断地和网站互动,使 自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。
而基于用户是指通过分析用户对商品的行为(如浏览、收藏、加入购物车、购买……)计算出哪些用户是兴趣相似的,然后把兴趣相似的用户所关注的商品相互推荐。
举个例子:
用户/商品 | 商品1 | 商品2 | 商品3 | 商品4 |
---|---|---|---|---|
用户A | √ | √ | √ | |
用户B | √ | |||
用户C | √ | √ | 推荐 |
由上表可以看出用户A和用户C比较相似,所以把用户A感兴趣的商品4推荐给用户C。
步骤一般分为两步:
- 计算物品之间的相似度
- 根据物品的相似度和用户的历史行为给用户生成推荐列表
再举个详细点的例子:
假设我们这么一些数据(用户(字母) 商品(数字)_行为,):
A 1_浏览
A 3_加入购物车
A 4_收藏
B 2_收藏
B 5_收藏
C 1_加入购物车
C 6_购买
D 1_购买
D 5_加入购物车
E 3_加入购物车
E 4_浏览
F 2_加入购物车
F 3_收藏
F 6_浏览
我们可以给不同的行为赋予不同的评分(假设浏览1分、收藏3分、加入购物车5分、购买10分),得到以下数据:
A 1_1
A 3_5
A 4_3
B 2_3
B 5_3
C 1_5
C 6_10
D 1_10
D 5_5
E 3_5
E 4_1
F 2_5
F 3_3
F 6_1
这样看着比较累,而且也不方便计算,可以把它转换为矩阵形式,称之为评分矩阵:
用户/商品 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
A | 1 | 5 | 3 | |||
B | 3 | 3 | ||||
C | 5 | 10 | ||||
D | 10 | 5 | ||||
E | 5 | 1 | ||||
F | 5 | 3 | 1 |
计算相似度
计算相似度的方式有很多,如余弦相似度、切比雪夫距离、欧里几得距离、曼哈顿距离、杰卡德距离、皮尔森系数……计算相似度的方式不同计算出来的相似度也不同。
这里只介绍余弦相似度,其他的请自行百度。
假设有二维向量a,b如下图所示
则他们的余弦相似度为
推广到多维向量a(a1,a2,a3,a4……),b(b1,b2,b3,b4……)
有了公式就能计算出用户相似度了:
这些用户之间的相似度可以转换为一个矩阵,称之为相似度矩阵
A | B | C | D | E | F | |
---|---|---|---|---|---|---|
A | 1 | 0 | 0.08 | 0.15 | 0.93 | 0.43 |
B | 0 | 1 | 0 | 0.32 | 0 | 0.6 |
C | 0.08 | 0 | 1 | 0.4 | 0 | 0.15 |
D | 0.15 | 0.32 | 0.4 | 1 | 0 | 0 |
E | 0.93 | 0 | 0 | 0 | 1 | 0.5 |
F | 0.43 | 0.6 | 0.15 | 0 | 0.5 | 1 |
推荐列表 = 相似度矩阵 X 评分矩阵
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
A | 2.9 | 2.2 | 11.0 | 3.9 | 0.8 | 1.2 |
B | 3.2 | 6.0 | 1.8 | 0 | 4.6 | 0.6 |
C | 9.1 | 0.8 | 0.9 | 0.2 | 2.0 | 10.2 |
D | 11.2 | 1.0 | 0.8 | 0.5 | 6.0 | 4.0 |
E | 0.9 | 2.5 | 11.2 | 3.8 | 0 | 0.5 |
F | 1.2 | 6.8 | 7.7 | 1.8 | 1.8 | 2.5 |
由于用户已经对推荐列表中的一些商品有过行为,所以还要把这些商品给滤除掉
得到最终的推荐列表,其数值代表的意义是用户对商品的感兴趣程度:
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
A | 2.2 | 0.8 | 1.2 | |||
B | 3.2 | 1.8 | 0 | 0.6 | ||
C | 0.8 | 0.9 | 0.2 | 2.0 | ||
D | 1.0 | 0.8 | 0.5 | 4.0 | ||
E | 0.9 | 2.5 | 0 | 0.5 | ||
F | 1.2 | 1.8 | 1.8 |
二、ItemCF
ItemCF(Item Collaboration Filter),又称 基于商品(物品)的协同过滤算法。
其原理与UserCF类似,是基于用户对商品的偏好找到相似的商品,然后推荐相似的商品品给他。
计算过程也非常相似,区别在于计算时把UserCF的评分矩阵转置,再计算商品与商品之间的相似度得到商品之间的相似度矩阵。
最后的推荐列表 = 商品之间的相似度矩阵 X 评分矩阵转置
UserCF与ItemCF的对比
对于电子商务,用户数量一般大大超过商品数量,此时Item CF的计算复杂度较低。
比如在购书网站上,当你看一本书的时候,推荐引擎会给你推荐相关的书籍,这个推荐的重要性进进超过了网站首页对该用户的综合推荐。可以看到,在这种情况下,Item CF 的推荐成为了引导用户浏览的重要手段。基于物品的协同过滤算法,是目前电子商务采用最广泛的推荐算法。
在非社交网络的网站中,内容内在的联系是很重要的推荐原则,它比基于相似用户的推荐原则更加有效。在社交网络站点中,User CF 是一个更好错的选择,User CF 加上社会网络信息,可以增加用户对推荐解释的信服程度。
推荐多样性和精度,各有千秋。
参考:
Spark基于用户的协同过滤算法https://www.toutiao.com/a6498952374487368205/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=15393016323&utm_medium=toutiao_android
推荐系统_itemCF和userCF
http://blog.csdn.net/u011263983/article/details/51498458