协同过滤(Collaborative Filtering)

article/2025/10/30 9:31:41

协同过滤,顾名思义就是协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。

协同过滤是推荐系统的重要模型之一,推荐系统是用来向用户推荐物品的。协同过滤分为两种:

1.基于用户的协同过滤。

2. 基于物品的协同过滤。

无论是基于用户还是基于物品都是为了找到用户可能喜欢的物品把它给过滤出来,推荐给用户。

1.基于用户的协同过滤

思想:找到和目标用户相似的用户,推荐该相似用户使用过但该用户没见过的物品。

主要有两个步骤:

1.计算每个用户和目标用户的相似度,并选出n个最相似的(n为一个超参数)

2.根据相似用户对某一物品的评价计算出目标用户对这个物品的评价,设定一个阈值判断是否推荐。

示例:

图1.评分矩阵

这是一个不同用户对于不同物品的评分矩阵,现在要决定是否对Alice推荐物品5,也就是要计算出Alice对物品5的评分。

首先,计算每个用户与Alice的相似度,计算相似度主要有以下几种方式。

1.余弦相似度公式,衡量了用户向量i和用户向量j之间的向量夹角的大小,显然夹角越小,余弦相似度越大,用户相似度越大。

 本例中,i和j向量表示两个用户对物品的评分矩阵,||i||和||j||表示向量i和j的长度。

2.皮尔逊相关系数,相比余弦相似度公式皮尔逊相关系数通过使用用户平均分对各独立评分进行修正,减小了用户评分偏置的影响。

 其中,Ri,p代表用户i对物品p的评分。R_i代表用户i对所有物品的平均评分,p代表所有物品的集合。

然后根据相似度就能找到与目标用户最相似的n个用户了,之后我们就要计算用户对某个物品的具体评分了。

通常使用加权平均的方法

其中权重Wu,s是用户u和用户s的相似度,Rs,p是用户s对物品p的评分。

至此,计算完目标用户对物品的评分之后就可以根据阈值选择是否向目标用户推荐了,整个协同过滤算法也结束了。

以上介绍的是基于用户的协同过滤,他的缺点有:

1.维护用户的相似度矩阵的成本较高,因为在互联网中用户的数量是远远多于物品的数量的,而且用户的数量增长的飞快,这会使相似度矩阵的空间复杂度以n^2的速度快速增长,这是在线存储系统难以承受的扩展速度。

2.在正反馈获取较难的场景(酒店预订,大件商品的购买等)适用效果不好。例如说一个平台售卖大件商品那么这个商品的历史购买用户一定是较少的,因此找到相似的用户就十分困难。

2.基于物品的协同过滤

思想:找到和历史上用户感兴趣的物品相似的物品进行推荐。

也有两个步骤:

1.计算各个物品之间的相似度,计算方式和用户相似度类似。

2.对于一个用户找出其历史上做出过正反馈的物品(也就是其评价过并且表示喜欢的物品),看正反馈的物品和未作出评价物品之间的相似度并且计算出其评价得分并进行排序,选择得分最大的n个物品进行推荐。

如果在计算最终得分时,未作出评价的物品和正反馈物品中的多个都有相似度那么其最终得分应该是这些物品的累加。

 3.总结

协同过滤模型是一个非常直观,可解释性很强的模型,但是其不具备较强泛化能力,它无法将两个物品相似这一信息推广到其它物品相似性的计算上。这会导致热门的物品具有很强的头部效应,容易和大量物品产生相似,而尾部的物品很少和其他物品产生相似导致很少被推荐。

例如说这是一个物品之间的相似度矩阵,我们可以看出A,B,C之间的相似度为0,与A,B,C最相似的物品为D,在基于物品的协同过滤中物品D将会被推荐给所有对A,B,C,有过正反馈的用户。

但其实物品D被推荐,只是因为他是一件热门商品,而A,B,C之间因为缺少相似性计算的直接数据,导致他们之间很难产生相似度,因而被忽略,这是协同过滤的一种天然缺陷。

为了解决这一问题,矩阵分解被提出了。

 


http://chatgpt.dhexx.cn/article/47iEKNrf.shtml

相关文章

数字签名的简单理解

数字签名的简单化理解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、…

spoon工具的一些小细节问题

version7.1 1.输出乱码问题 (1)转换中的字段选择可对字段的编码做选择(此方法输出到excel可用) (2)数据库输出设置编码——>编辑——>选项,然后添加characterEncoding参数,值…