推荐系统实战--movieslens数据集实现UserCF算法

本文介绍了UserCF算法在推荐系统中的应用,通过movieslens数据集展示了如何计算用户兴趣相似度并推荐物品。算法包括两步:计算用户相似度(使用余弦相似度并优化)、推荐最相似用户喜欢的物品。通过改进,考虑物品的流行度,提高推荐的准确性。
摘要由CSDN通过智能技术生成

UserCF:UserCollaborationFilter,基于用户的协同过滤

 

算法核心思想:在一个在线推荐系统中,当用户A需要个性化推荐时,可以先找到和他有相似兴趣的其它用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A,这种方法称为基于用户的协同过滤算法。

 可以看出,这个算法主要包括两步:

一、找到和目标用户兴趣相似的用户集合——计算两个用户的兴趣相似度

二、找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户——找出物品推荐

 

下面分别来看如何实现这两步:

一、计算两个用户的兴趣相似度:

给定用户u和用户v,令N(u)表示用户u感兴趣的物品集合,N(v)表示用户v感兴趣的物品集合,那么可以通过Jaccard公式或者通过余弦相似度公式计算:

...Jaccard公式

 

...余弦相似度公式

 

 

举例:下图表示用户A对物品{a,b,d}有过行为,用户B对物品{a,c}有过行为

利用余弦相似度计算可得:

用户A和用户B的兴趣相似度为:

(cosθ = X * y /(||X|| * ||y||))   也就是X * y = ||X|| * ||y|| * cosθ  这个公式推导得出

同理,

 

但是,需要注意的是,这种方法的时间复杂度是O(U^2),因为我们需要计算每一对用户之间的相似度,事实上,很多用户相互之间并没有对同样的物品产生过行为,所以很多时候当分子为0的时候没有必要再去计算分母,所以这里可以优化:即首先计算出|N(u) 并 N(v)| != 0 的用户对(u,v),然后对这种情况计算分母以得到两

  • 6
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值