协同过滤

article/2025/10/30 9:25:52

协同过滤

什么是协同过滤

协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和信息系 统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行 推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用 户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜 好程度预测。
协同过滤是迄今为止最成功的推荐系统技术,被应用在很多成功的推荐系统中。 电子商务推荐系统可根据其他用户的评论信息,采用协同过滤技术给目标用户推 荐商品。

协同过滤算法

协同过滤算法主要分为基于启发式基于模型式两种。
其中,基于启发的协同过滤算法,又可以分为基于用户的协同过滤算法 (User-Based)基于项目的协同过滤算法(Item-Based)
 启发式协同过滤算法主要包含 3 个步骤:
1)收集用户偏好信息
2)寻找相似的商品或者用户
3)产生推荐

一、基于用户的协同过滤算法

基于用户的协同过滤算法主要分为两步:
(1)找到与目标用户兴趣相似的用户集合
(2)找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户

1.相似度的计算方法

皮尔逊相关系数:
在这里插入图片描述
其中,i 表示项,例如商品;Iu 表示用户 u 评价的项集;Iv 表示用户 v 评价的项 集;ru,i 表示用户 u 对项 i 的评分;rv,i 表示用户 v 对项 i 的评分;表示用户 u 的平均评分;表示用户 v 的平均评分。
余弦相似度
在这里插入图片描述

2.计算用户 u 对未评分商品的预测分值

首先根据上一步中 的相似度计算,寻找用户 u 的邻居集 N∈U,其中 N 表示邻居集,U 表示用户集。 然后,结合用户评分数据集,预测用户 u 对项 i 的评分,计算公式如下所示:
在这里插入图片描述
s(u,u’)表示用户 u 和用户 u’的相似度。

3.通过例子理解

假设有如下电子商务评分数据集,预测用户 C 对商品 4 的评分。
在这里插入图片描述
表中?表示评分未知。根据基于用户的协同过滤算法步骤,计算用户 C 对商品 4 的评分,其步骤如下所示。
(1)寻找用户 C 的邻居 从数据集中可以发现,只有用户 A 和用户 D 对商品 4 评过分,因此候选邻居只 有 2 个,分别为用户 A 和用户 D。用户 A 的平均评分为 4,用户 C 的平均评分为 3.667,用户 D 的平均评分为3

在这里插入图片描述
根据皮尔逊相关系数公式: 红色区域计算 C 用户与 A 用户,用户 C 和用户 A 的相似度为:

在这里插入图片描述
蓝色区域计算 C 用户与 D 用户的相似度为:
在这里插入图片描述
(2)预测用户 C 对商品 4 的评分 根据上述评分预测公式,计算用户 C 对商品 4 的评分,如下所示:
在这里插入图片描述

二、基于项目的协同过滤

基于物品的协同过滤算法主要分为两步:
(1)计算物品之间的相似度,通过共现矩阵实现
(2)根据物品的相似度和用户的历史行为给用户生成推荐列表

1.相似度计算方法

在这里插入图片描述分母|N(i)]|是喜欢物品 i 的用户数,|N(i)∩N(j)|是同时喜欢物品 i 和 j 的用户
计算物品相似度首先建立用户-物品倒排表,根据矩阵计算每两个物品之间的相似度 wij。W[i][j]记录了同时喜欢物品i和物品j的用户数。
在这里插入图片描述
得到物品之间的相似度后,可以根据如下公式计算用户 u 对于物品 j 的兴趣
在这里插入图片描述
N(u)是用户喜欢的物品的集合,S(j,K)是和物品 j 最相似的 K 个物品的集合, wji 是物品 j 和 i 的相似度,rui 是用户 u 对物品 i 的兴趣。 i 的相似度,rui 是用户 u 对物品 i 的兴趣。(对于隐反馈数据集, 如果用户 u 对物品 i 有过行为,即可令 rui=1。)该公式的含义是,和用户历史 上感兴趣的物品越相似的物品,越有可能在用户的推荐列表中获得比较高的排名。
该公式的实现代码如下所示:

def Recommendation(train, user_id, W, K):
rank = dict()
ru = train[user_id]
for i,pi in ru.items():
for j, wj in sorted(W[i].items(), key=itemgetter(1), reverse=True)[0:K]:
if j in ru:
continue
rank[j] += pi * wj
return rank

2.通过例子理解:

现有用户的访问的记录如下图所示:
在这里插入图片描述
他的共现矩阵为:
在这里插入图片描述
通过公式计算相似度:
在这里插入图片描述
以此类推得到相似度的共现矩阵
在这里插入图片描述
此时若有新用户 E,访问的 a,b,d 三个物品,那么可以看做向量 P:
在这里插入图片描述
在这里插入图片描述

T为物品的共现矩阵,P为新用户对已有产品的向量,得到的 P`为新用户对每个产品的兴趣度。
此时得到了对于用户 E,c 和 e 两个物品的兴趣度是相同的。
理解公式 i∈N(u)∩S(j,K)
对于用户 E,已经访问了 a,b,d,那么,N(u)={a,b,d};还有两个未访问物品 c,e, 那么 j={c,e}; 当 j=c 时,对于和物品 j 最相似的 K 个物品的集合为{a,d,e},那么 S(j,K)={a,d,e}; 得出N(u)∩S(j,K)={a,d},如下图所示:
在这里插入图片描述
再来看矩阵相乘中的 c 行,乘以 P,实际上就是上述 N(u)∩S(j,K)={a,d}的相似度求和
在这里插入图片描述
同理,当 j=e 时,对于和物品 j 最相似的 K 个物品的集合为{b,c,d},那么 S(j,K)={b,c,d};得出 N(u)∩S(j,K)={b,d};如下图所示:
在这里插入图片描述
再来看矩阵相乘中的 e 行,乘以 P,实际上就是上述 N(u)∩S(j,K)={b,d}的相似度求和。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/gQ20X1uc.shtml

相关文章

协同过滤(Collaborative Filtering)

协同过滤,顾名思义就是协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。 协同过滤是推荐系统的重要模型之一,推荐系统是用来向用户推荐物品的。协同过滤分为两种: 1.基于用…

数字签名的简单理解

数字签名的简单化理解TOC 数字签名的简单化理解! 对于数字签名,网上有很多大神解释的很详细了,我在这里解释的方法更加通俗易懂,更适用于入门级理解,已经尽可能的浅显,希望可以对大家有用! 评…

浅谈程序的数字签名

理论基础 数字签名它是基于非对称密钥加密技术与数字摘要算法技术的应用,它是一个包含电子文件信息以及发送者身份,并能够鉴别发送者身份以及发送信息是否被篡改的一段数字串。 一段数字签名数字串,它包含电子文件经过Hash编码后产生的数字…

数字签名及应用

内容介绍 常用加密方式数字签名颁发数字证书机构CA 常用加密方式 对称加密 对称加密也称为密钥加密或单向加密,就是使用同一套密钥来进行加密和解密。 常用算法:DES、3DES、AES 优点:算法公开、简单,加密解密容易,加密…

数字签名的过程详解

数字签名的过程详解 1. 数字证书的概念2. 数字签名的过程3. 加密的过程4. 数字签名两大特性5. 用到的部分名词解释 1. 数字证书的概念 数字证书又叫“数字身份证”、“网络身份证”,是由证书认证中心CA发放并经认证中心数字签名,包含公开密钥拥有者以及…

数字签名是什么?

今天,我读到一篇好文章。 它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。 我对这些问题的理解,一直是模模糊糊…

数字签名技术及加密算法

最近由于需要使用数字签名,于是了解一下各种算法的利弊及实现 数字签名流程图: ---------BASE64----------- 常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。 BASE加密后产生的字节…

数字签名系列一:签名简介与RSA签名算法

数字签名系列一 写在前面数字签名作用数字签名发展史带属性的数字签名RSA数字签名方案 写在前面 学了一年的数字签名方案,一直都在一个点进行专研,虽然还是有所收获,总感觉还差点感觉,上了一年研究生,还没有对数字签名…

密码学---数字签名和认证协议---数字签名标准

数字签名标准 DSS的基本方式RSA签名过程DSS签名过程 数字签名算法DSA全局公钥用户私钥x用户公钥y用户为待签消息选取的秘密数k签名过程验证过程 数字签名标准(Digital Signature Standard,DSS)是美国公布的联邦信息处理标准,采用SHA和一种新的签名技术的…

数字签名与签名验证过程

1.1 生成数字签名 1 利用RSA算法生成公钥、私钥。私钥由密钥持有者自主保存,公钥可对外发布。 2 准备好待签名的文档。 3 利用哈希算法(HASH),生成待签名文档的摘要。(文档摘要) 4 利用签名者的私钥&am…

什么是数字签名?其安全性从何而来?

一、数字签名简介 数字签名是基于公钥密码体制(非对称密钥密码体制)的。 1.1.基本特征 数字签名必须保证以下三点: 报文鉴别——接收者能够核实发送者对报文的签名;报文的完整性——接收者不能伪造对报文的签名或更改报文内容。…

数字签名的工作原理

数字签名是公钥基础结构的基础部分。当我们说PKI时,一般想到的是数字证书,证书颁发机构(CA),银行使用的Key,以及SSL通信等等。 数字证书,一般都是成对存在的,包含证书的公钥,和证书…

网络安全之数据加密和数字签名技术

一、计算机网络面临的安全性威胁和解决办法 1、计算机网络上的通信面临以下两大类威胁:被动攻击和主动攻击,如下图所示: 2、解决办法,由上图可知: 对于主动攻击,可以采取适当措施加以检测。 对于被动攻击…

一文了解数字签名、数字证书、自签证书

参考 关于自签SSL证书的一些小知识汇总 对于ssl中的pem文件和key 文件的理解 openssl 生成证书 ca.pem client.pem server.pem SSL:证书文件 数字证书原理 数字签名是什么? 数字签名和数字证书的原理解读(图文) 数字签名和数字证书有哪些区别与联…

数字签名算法实现

一、实验目的   掌握利用Hash算法对要传送信息提取消息摘要的方法,理解数字签名的作用及数字签名算法的工作原理,了解多种非对称加密算法都可以用来设计数字签名算法。综合运用前面实验掌握的知识和技术,利用C语言或Java语言设计并实现数字…

数字签名——

数字签名和公钥加密的区别 公钥加密: Alice采用Bob的公钥对消息加密,传给Bob,Bob用自己的私钥解密 数字签名: Alice采用自己的私钥对消息m签名,Alice将消息m和签名发送给Bob收到m和签名后,Bob用Alice的公钥来验证签名的有效性 数…

安全技术 数字签名

(一)介绍 数字签名是一种将相当于现实世界中的盖章、签字的功能在计算机世界中进行实现的技术。使用数字签名可以识别篡改和伪装,还可以防止否认。 通过消息认证码,我们可以识别消息是否被篡改或者发送者身份是否被伪装&#xf…

数字签名技术简介

数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名是非对称密钥加密技术与数字摘要技术的应用数字签名机制作为保障网络信息安全的…

数字签名技术

目录 一、数字签名 二、数字签名技术 2.1、基于哈希算法的数字签名与验证 2.2、基于非对称密钥加密体制的数字签名与验证 三、数字签名的作用 一、数字签名 数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串&…

kettle spoon双击打开无反应

环境 windows 10、kettle 8.2、JDK 1.8 、CPU:I7-8565U、内存:16GB kettle的启动文件spoon双击之后(也试过以管理员身份运行)无反应 一、注册表修复 这个问题在网上各种搜索,查到的资料都是修改spoon里的Xms、Xmx、…