深度学习

推荐系统UserCF和ItemCF

2017-12-15  本文已影响998人  一个三要不起

一、UserCF

UserCF(User Collaboration Filter),又称 基于用户的协同过滤算法。

协同过滤:就是指众多的用户可以齐心协力,通过不断地和网站互动,使 自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。

而基于用户是指通过分析用户对商品的行为(如浏览、收藏、加入购物车、购买……)计算出哪些用户是兴趣相似的,然后把兴趣相似的用户所关注的商品相互推荐。

举个例子:

用户/商品 商品1 商品2 商品3 商品4
用户A
用户B
用户C 推荐

由上表可以看出用户A和用户C比较相似,所以把用户A感兴趣的商品4推荐给用户C。

步骤一般分为两步:

  1. 计算物品之间的相似度
  2. 根据物品的相似度和用户的历史行为给用户生成推荐列表

再举个详细点的例子:

假设我们这么一些数据(用户(字母) 商品(数字)_行为,):

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

上一篇下一篇

猜你喜欢

热点阅读