基于用户协同过滤(User-CF)的推荐算法

基于用户协同过滤(User-CF)的推荐算法

User-CF的推荐实例

在学校生活的时候,新生开学都会问同专业的师兄师姐“我要买什么书?”、“我要怎么安排作息?”等相似的问题,此时师兄师姐就会依着他们的专业和偏好做一些推荐,这就是现实中个性化推荐具体个例。这里面有一个有趣的地方,一般师弟师妹们不会去问不同专业的师兄师姐这些问题,也不会去问刚毕业的学长,这是为什么?因为对他们而言,上一届的同专业学长们的知识结构跟他们最为相近,兴趣偏好也比较相似,所以他们推荐的结果比较靠谱。

那么,在一个个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法成为基于用户的协同过滤算法(User-CF)。

详细过程
  1. 相似度计算:找到和目标用户兴趣相似的用户集合
  2. 构建推荐矩阵:找到这个集合中用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
1.相似度计算

相似度计算目标是找到目标用户与其他已知偏好的用户的相似度。这里,协同过滤(CF)主要利用用户行为的相似度。给定用户u和用户v,令N(u)表示用户曾经有过正反馈的物品集合,令N(v)为用户v曾经有过正反馈的物品集合。

这里相似度计算有几个细节,如果用户属性是用布尔值(0,1)来表示的话,例如:

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

其中0表示不喜欢,1表示喜欢。那么可以通过Jaccard公式简单计算u和v的相似度,其公式定义是A与B交集的大小与A与B并集的大小的比值,范围在[0,1],值越接近1,A与B越相似。特别地,当A、B集合都为空时,J(A,B)定义为1,计算公式如下:

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

上述结果代入公式计算后得:

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

当然这有个缺陷,Jaccard公式无法表示u,v对每个属性的具体偏好大小。这时候可以用余弦相似度进行求解。

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

改变下表格中的数值,表示具体偏好:

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

代入余弦相似度公式计算得

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

相似地,也有Tanimoto 系数(Tanimoto Coefficient)和欧几里德距离(Euclidean Distance),当用欧几里德距离表示相似度,一般采用以下公式进行转换,距离越小,相似度越大。

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

Tanimoto 系数也称为 Jaccard 系数,是 Cosine 相似度的扩展,也多用于计算文档数据的相似度:

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

2.构建推荐矩阵

经过上述的相似度计算,现在找到和目标用户兴趣相似的用户集合,现在有个用户u,需要为他推荐水果种类,计算了用户u与其他用户的相似度,构建推荐矩阵如下:

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

得到上面对于用户u的推荐矩阵后,User-CF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。如下的公式度量了User-CF算法中用户u对物品i的感兴趣程度:

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

其中, S(u, K)包含和用户u兴趣最接近的K个用户, N(i)是对物品i有过行为的用户集合, w_uv是用户u和用户v的兴趣相似度, r_vi代表用户v对物品i的兴趣度。假设K=2时,那么实际上矩阵按相似度排序如下:

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

那么此时用户u对桃的兴趣度计算:

机器学习:详解基于用户协同过滤(User-CF)的推荐算法

如果对用户u只推荐一种水果,那么此时按照UserCF算法的最终计算推荐结果应为菠萝

适用范围

User-CF算法的假设是一个用户和其他用户的兴趣偏好类似,那么他们喜欢的东西都应该是差不多,即人以群分的概念。

该算法适用于用户较少、用户个性化兴趣不太显著的场合,推荐过程中用户新的行为不一定会导致推荐结果的变化,如果用户过多,那么计算用户相似矩阵的代价太大。且该算法无法解决新用户进来的冷启动问题,但新物品进来能够较快地进行推荐。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值