基于Spark实现推荐算法-2:基于用户的协同过滤(理论篇)

本文详细介绍了基于用户的协同过滤(User-Based CF)推荐算法,包括数据表示、最近邻查询、评分预测及推荐结果产生的过程,并以Spark为工具进行了理论阐述。
摘要由CSDN通过智能技术生成

基于用户的协同过滤

基于用户的协同过滤,即User-Based CF (User-Based Collaborative Filtering),是基于一个这样的假设“跟你爱好相同的人喜欢的物品,你很可能也喜欢”,所以User-Based CF主要的任务就是找出用户的最近邻居,从而根据最近邻居的喜好做出未知项的评分预测。
User-Based CF算法可以分为4个步骤:数据表示、最近邻查询、评分预测、推荐结果产生。

1.数据表示

User-Based CF使用的用户—项目数据可以表示为二维矩阵。以用户对项目的评分数据为例,评分数据可以用如下方法表示,

  • 用户评分数据表
Item/User User 1 User k User n
Item 1 R1,1
Item j Rj,k
Item m Rm,n

其中每一行代表物品所获得的评分。以Item j为例,Rj,k代表用户k给物品j的评分,但并不是所有用户都会对Item j进行评分,所以Rj,k可能存在也可能不存在。这里设用户数为n,物品数目为m,可以将数据转换为评分值组成的二维矩阵R,则R是维度为(m×n)的评分矩阵。

2.最近邻查询

所谓“最近邻居”是指与当前用户最相似的其他若干用户,为了防止单个用户评分对推荐结果影响过大,导致偏差,通常取N(N为大于1的整数)个相似用户的数据。没有度量就没有比较,所以需要某种方法度量用户间的相似程度,这里相似程度简称为相似度。
相似度的计算方法较多,以余弦相似度计算为例说明。余弦相似度(Cosine-based Similarity)是用两个向量间夹角的余弦值来衡量相似性。若要计算用户间的相似度,也就是要计算上一步中矩阵R的列向量间的相似度,取User X和User Y的向量分别为如下公式所示,

x⃗ =(R1,x,,Rm,x) x ⃗ = ( R 1 , x , … , R m , x )

y⃗ =(
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值