协同过滤1

article/2025/10/30 9:28:18

协同过滤

协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。
协同过滤算法主要分为基于启发式和基于模型式两种。
其中,基于启发式的协同过滤算法,又可以分为基于用户的协同过滤算法(User-Based)和基于项目的协同过滤算法(Item-Based)。
启发式协同过滤算法主要包含3个步骤:
1)收集用户偏好信息;
2)寻找相似的商品或者用户;
3)产生推荐。
协同过滤的输入数据集主要是用户评论数据集或者行为数据集。这些数据集主要又分为显性数据和隐性数据两种类型。其中,显性数据主要是用户打分数据,譬如用户对商品的打分,五分制的1分,2分等。
但是,显性数据存在一定的问题,譬如用户很少参与评论,从而造成显性打分数据较为稀疏;用户可能存在欺诈嫌疑或者仅给定了部分信息;用户一旦评分,就不会去更新用户评分分值等。
而隐性数据主要是指用户点击行为、购买行为和搜索行为等,这些数据隐性地揭示了用户对商品的喜好。
隐性数据也存在一定的问题,譬如如何识别用户是为自己购买商品,还是作为礼物赠送给朋友等。
1.基于用户的协同过滤
用相似统计的方法得到具有相似爱好或者兴趣的相邻用户,所以称之为以用户为基础(User-based)的协同过滤或基于邻居的协同过滤(Neighbor-basedCollaborativeFiltering)。
1.1方法步骤:
1.收集用户信息收集可以代表用户兴趣的信息。一般的网站系统使用评分的方式或是给予评价,这种方式被称为“主动评分”。另外一种是“被动评分”,是根据用户的行为模式由系统代替用户完成评价,不需要用户直接打分或输入评价数据。电子商务网站在被动评分的数据获取上有其优势,用户购买的商品记录是相当有用的数据。
2.最近邻搜索(Nearestneighborsearch,NNS)以用户为基础(User-based)的协同过滤的出发点是与用户兴趣爱好相同的另一组用户,就是计算两个用户的相似度。例如:查找n个和A有相似兴趣用户,把他们对M的评分作为A对M的评分预测。一般会根据数据的不同选择不同的算法,目前较多使用的相似度算法有PearsonCorrelationCoefficient(皮尔逊相关系数)、Cosine-basedSimilarity(余弦相似度)、AdjustedCosineSimilarity(调整后的余弦相似度)。
基于用户(User-Based)的协同过滤算法首先要根据用户历史行为信息,寻找与新用户相似的其他用户;同时,根据这些相似用户对其他项的评价信息预测当前新用户可能喜欢的项。
给定用户评分数据矩阵R,基于用户的协同过滤算法需要定义相似度函数s:U×U→R,以计算用户之间的相似度,然后根据评分数据和相似矩阵计算推荐结果。
1.2如何选择合适的相似度计算方法
在协同过滤中,一个重要的环节就是如何选择合适的相似度计算方法,常用的两种相似度计算方法包括皮尔逊相关系数和余弦相似度等。皮尔逊相关系数的计算公式如下所示:
在这里插入图片描述其中,i表示项,例如商品;Iu表示用户u评价的项集;Iv表示用户v评价的项集;ru,i表示用户u对项i的评分;rv,i表示用户v对项i的评分;表示用户u的平均评分;表示用户v的平均评分。
另外,余弦相似度的计算公式如下所示:
在这里插入图片描述1.3计算用户u对未评分商品的预测分值
另一个重要的环节就是计算用户u对未评分商品的预测分值。首先根据上一步中的相似度计算,寻找用户u的邻居集N∈U,其中N表示邻居集,U表示用户集。然后,结合用户评分数据集,预测用户u对项i的评分,计算公式如下所示:
在这里插入图片描述预测用户u对项i的评分

其中,s(u,u’)表示用户u和用户u’的相似度。
1.4通过例子理解
假设有如下电子商务评分数据集,预测用户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 用户的相似度为:
在这里插入图片描述C用户与D 用户的相似度
(2)预测用户C对商品4的评分
根据上述评分预测公式,计算用户C对商品4的评分,如下所示:
在这里插入图片描述依此类推,可以计算出其他未知的评分。

2.基于项目的协同过滤
以用户为基础的协同推荐算法随着用户数量的增多,计算的时间就会变长,所以在2001年Sarwar提出了基于项目的协同过滤推荐算法(Item-based Collaborative Filtering Algorithms)。以项目为基础的协同过滤方法有一个基本的假设“能够引起用户兴趣的项目,必定与其之前评分高的项目相似”,通过计算项目之间的相似性来代替用户之间的相似性。
2.1方法步骤:
1.收集用户信息
同以用户为基础(User-based)的协同过滤。
2.针对项目的最近邻搜索
先计算已评价项目和待预测项目的相似度,并以相似度作为权重,加权各已评价项目的分数,得到待预测项目的预测值。例如:要对项目 A 和项目 B 进行相似性计算,要先找出同时对 A 和 B 打过分的组合,对这些组合进行相似度计算,常用的算法同以用户为基础(User-based)的协同过滤。
3.产生推荐结果
以项目为基础的协同过滤不用考虑用户间的差别,所以精度比较差。但是却不需要用户的历史数据,或是进行用户识别。对于项目来讲,它们之间的相似性要稳定很多,因此可以离线完成工作量最大的相似性计算步骤,从而降低了在线计算量,提高推荐效率,尤其是在用户多于项目的情形下尤为显著。
基于项目(Item-Based)的协同过滤算法是常见的另一种算法。与User-Based协同过滤算法不一样的是,Item-Based协同过滤算法计算Item之间的相似度,从而预测用户评分。也就是说该算法可以预先计算Item之间的相似度,这样就可提高性能。Item-Based协同过滤算法是通过用户评分数据和计算的Item相似度矩阵,从而对目标Item进行预测的。
2.2相似度计算方法
和User-Based协同过滤算法类似,需要先计算Item之间的相似度。并且,计算相似度的方法也可以采用皮尔逊关系系数或者余弦相似度,这里给出一种电子商务系统常用的相似度计算方法,即基于物品的协同过滤算法,其中相似度计算公式如下所示:
在这里插入图片描述

这里,分母|N(i)|是喜欢物品i的用户数,而分子|N(i)∩N(j)|是同时喜欢物品i和j的用户,但是如果物品j很热门,就会导致Wij很大接近于1。因此避免推荐出热门的物品,我们使用下面的公式:
在这里插入图片描述

基于物品的相似度
从上面的定义可以看出,在协同过滤中两个物品产生相似度是因为他们共同被很多用户喜欢,也就是说每个用户都可以通过他们的历史兴趣列表给物品“贡献”相似度。
计算物品相似度首先建立用户-物品倒排表(即对每个用户建立一个包含他喜欢的物品的列表),然后对每个用户,将他物品列表中的物品两两在共现矩阵中加1。

在这里插入图片描述在这里插入图片描述

图例

根据矩阵计算每两个物品之间的相似度wij。
2.3用户u对于物品j的兴趣
得到物品之间的相似度后,可以根据如下公式计算用户u对于物品j的兴趣:
在这里插入图片描述

用户u对于物品j的兴趣

在这里插入图片描述

这里N(u)是用户喜欢的物品的集合,S(j,K)是和物品j最相似的K个物品的集合,wji是物品j和i的相似度,rui是用户u对物品i的兴趣。(对于隐反馈数据集,如果用户u对物品i有过行为,即可令rui=1。)该公式的含义是,和用户历史上感兴趣的物品越相似的物品,越有可能在用户的推荐列表中获得比较高的排名。
当我们看到这里的时候很可能由于自己功底不足,很难看懂公式中的i∈N(u)∩S(j,K)。
我们来看另外一种计算方式:
在这里插入图片描述

其中,Pa为新用户对已有产品的向量,T为物品的共现矩阵,得到的P`a为新用户对每个产品的兴趣度。
那么就可以理解上述公式的i∈N(u)∩S(j,K),我们在下面的例子中详细讲解。
2.4举例
现有用户的访问的记录如下图所示:
在这里插入图片描述

用户的访问
他的共现矩阵为:
在这里插入图片描述

共现矩阵
通过公式计算相似度:
在这里插入图片描述
以此类推得到相似度的共现矩阵:
在这里插入图片描述
此时若有新用户E,访问的a,b,d三个物品,那么可以看做向量P:
在这里插入图片描述
那么P`为矩阵相乘:
在这里插入图片描述
此时得到了对于用户E,c和e两个物品的兴趣度是相同的。

2.5理解公式i∈N(u)∩S(j,K)
那么现在我们来理解公式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/s9L3Ns5M.shtml

相关文章

推荐算法之协同过滤

一、协同过滤算法简介 所谓协同过滤算法,其基本思想就是根据用户之前的喜好及其他兴趣相近的用户的选择来给用户推荐物品(基于对用户历史行为数据的挖掘发现用户的喜好偏向, 并预测用户可能喜好的产品进行推荐)。 目前应用广泛的…

传统推荐模型——协同过滤

文章目录 UserCF:基于用户的协同过滤什么是CF用户相似度计算最终结果的排序 ItemCF:基于物品的协同过滤UserCF和ItemCF的适用场景CF存在的几个缺点代码实践数据集Python代码 协同过滤,Collaborative Filtering,CF,可以…

协同过滤

协同过滤 什么是协同过滤 协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和信息系 统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行 推荐不同,协同过滤分析用户兴趣,在用户群中找…

协同过滤(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…