推荐系统基础之协同过滤算法

本文介绍了协同过滤算法的基础知识,包括UserCF和ItemCF两种策略。通过衡量用户或物品间的相似性(如杰卡德相似系数、余弦相似度和皮尔逊相关系数),预测用户对未评价物品的评分,从而实现推荐。在实践中,UserCF适用于用户数量较少,而ItemCF适用于物品数量较少的情况。但由于协同过滤算法忽视了用户属性和物品属性,所以在实际推荐系统中应用有限。
摘要由CSDN通过智能技术生成

1 什么是协同过滤算法

协同过滤算法是指根据用户过去的喜好或兴趣相近的用户的选择来进行推荐。根据用户过去的喜好来推荐,简单来说就是,如果用户过去购买过物品A,而物品B与物品A有着相似的特点(注意这里的特点与物品本身的属性无关,指的是不同用户对物品A和物品B的行为是相似的,例如各个用户对物品A和物品B的评分相似),那么我们就把物品B推荐给该用户,这就是基于物品的协同过滤算法(ItemCF)。根据兴趣相近的用户的选择来推荐,就是指如果用户A和用户B对于各个物品的行为(例如评分或浏览时长等)是相似的,而用户A喜欢物品C,我们就把物品C推荐给用户B,这就是基于用户的协同过滤算法(UserCF)。

2 如何衡量相似性

于是,问题就来了,我们要怎么判断两个用户或两个物品相似呢?我们可以通过三种方法来衡量相似性。

2.1 杰卡德(Jaccard)相似系数

杰卡德相似系数计算两用户u和v共同购买或喜爱的物品数量占他们二者总共购买或喜爱的物品数量的比值。其计算公式如下:
在这里插入图片描述
但是杰卡德相似系数只能判断用户是否会购买或喜爱某个物品,而无法给出用户对该物品的具体评分。

2.2 余弦相似度

余弦相似度是一种数学中常用的方法,用于计算两个向量之间的夹角,若夹角较小,那么该夹角的余弦就大,就说明两个向量越相似。其计算公式如下:
在这里插入图片描述
这里的u和v指的是用户u和用户v关于所有物品的评分向量。

2.3 皮尔逊相关系数

余弦相似度只考虑了用户的评分,但是不同用户的评分原则是不一样的,有些用户喜欢打高分,而另一些用户可能会比较挑剔,打分都偏低,这就导致光看用户的评分并不能判断该用户对某物品的喜爱程度。于是,皮尔逊相关系数采用用户评分的平均值来进行修正,根据用户评分与平均值的差值来计算相似度,其计算公式如下:
在这里插入图片描述
皮尔逊相关系数与余弦相似度的计算方法类似,都是计算两向量夹角的余弦值,不同的是皮尔逊相关系数计算的是两用户评分与平均值的差值向量的夹角余弦。

接下来,我们分别采用UserCF和ItemCF算法,根据以下用户-物品评分表,来预测user1对item7的评分,根据预测的评分判断是否要将item7推荐给user1。

User\Item item1 item2 item3 item4 item5 item6 item7
user1 4 5 1 4 2 3 None
user2 2 2 4 3 5 5 3
user3 5 5 2 4 1 2 1
user4 3 4 5 1 3 2 2
user5 1 2 5 5 4 5 2
user6 4 5 3 1 3 1 3
user7 2 3 1 5 5 3 5

3 基于用户的协同过滤算法(UserCF)

UserCF算法主要有两个步骤:

  • 计算目标用户user1与其他用户之间的相似度,取相似度高的前K个用户作为评分预测的依据
  • 根据这K个用户对item7的评分来预测user1对item7的评分

要预测user1对item7的评分,我们首先刨掉各用户的item7的评分数据,计算其他用户对除item7以外物品的评分与user1对除item7以外物品的评分的相似度。

usercf_data = data.drop('item7', axis=1)
usercf_data

在这里插入图片描述
然后计算其他用户与user1的相似度,这里采用皮尔逊相关系数。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值