导航:首页 > 净水问答 > 基于改进信任度的协同过滤推荐算法

基于改进信任度的协同过滤推荐算法

发布时间:2024-01-14 06:59:22

㈠ 协同过滤算法

用户行为数据在网站上最简单的存在形式就是日志,比如用户在电子商务网站中的网页浏览、购买、点击、评分和评论等活动。 用户行为在个性化推荐系统中一般分两种——显性反馈行为(explicit feedback)和隐性反馈 行为(implicit feedback)。显性反馈行为包括用户明确表示对物品喜好的行为。网站中收集显性反馈的主要方式就是评分和喜欢/不喜欢。隐性反馈行为指的是那些不能明确反应用户喜好 的行为。最具代表性的隐性反馈行为就是页面浏览行为。 按照反馈的明确性分,用户行为数据可以分为显性反馈和隐性反馈,但按照反馈的方向分, 又可以分为正反馈和负反馈。正反馈指用户的行为倾向于指用户喜欢该物品,而负反馈指用户的 行为倾向于指用户不喜欢该物品。在显性反馈中,很容易区分一个用户行为是正反馈还是负反馈, 而在隐性反馈行为中,就相对比较难以确定。

在利用用户行为数据设计推荐算法之前,研究人员首先需要对用户行为数据进行分析,了解 数据中蕴含的一般规律,这样才能对算法的设计起到指导作用。

(1) 用户活跃度和物品流行度

(2) 用户活跃度和物品流行度的关系

一般认为,新用户倾向于浏览热门的物品,因为他 们对网站还不熟悉,只能点击首页的热门物品,而老用户会逐渐开始浏览冷门的物品。如果用横坐标表示用户活跃度,纵坐标表示具有某个活跃度的所有用户评过分的物品的平均流行度。图中曲线呈明显下 降的趋势,这表明用户越活跃,越倾向于浏览冷门的物品。

仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法。学术界对协同过滤算法进行了深入研究,提出了很多方法,比如基于邻域的方法(neighborhood-based)、隐语义模型 (latent factor model)、基于图的随机游走算法(random walk on graph)等。在这些方法中, 最著名的、在业界得到最广泛应用的算法是基于邻域的方法,而基于邻域的方法主要包含下面两种算法。

基于用户的协同过滤算法 :这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品

基于物品的协同过滤算法: 这种算法给用户推荐和他之前喜欢的物品相似的物品

基于邻域的算法是推荐系统中最基本的算法,该算法不仅在学术界得到了深入研究,而且在 业界得到了广泛应用。基于邻域的算法分为两大类,一类是基于用户的协同过滤算法,另一类是 基于物品的协同过滤算法。现在我们所说的协同过滤,基本上就就是指基于用户或者是基于物品的协同过滤算法,因此,我们可以说基于邻域的算法即是我们常说的协同过滤算法

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

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

Ø 从上面的描述中可以看到,基于用户的协同过滤算法主要包括两个步骤。 第一步:找到和目标用户兴趣相似的用户集合。 第二步: 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。

这里,步骤1的关键是计算两个用户的兴趣相似度,协同过滤算法主要利用行为的相似度计算兴趣的相似度。给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v) 为用户v曾经有过正反馈的物品集合。那么我们可以通过以下方法计算用户的相似度:

基于余弦相似度

(2) 基于物品的协同过滤算法(itemCF)
与UserCF同理
(3) UserCF和itemCF的比

首先我们提出一个问题,为什么新闻网站一般使用UserCF,而图书、电商网站一般使用ItemCF呢? 首先回顾一下UserCF算法和ItemCF算法的推荐原理。UserCF给用户推荐那些和他有共同兴 趣爱好的用户喜欢的物品,而ItemCF给用户推荐那些和他之前喜欢的物品类似的物品。从这个算 法的原理可以看到,UserCF的推荐结果着重于反映和用户兴趣相似的小群体的热点,而ItemCF 的推荐结果着重于维系用户的历史兴趣。换句话说,UserCF的推荐更社会化,反映了用户所在的小型兴趣群体中物品的热门程度,而ItemCF的推荐更加个性化,反映了用户自己的兴趣传承。 在新闻网站中,用户的兴趣不是特别细化,绝大多数用户都喜欢看热门的新闻。个性化新闻推荐更加强调抓住 新闻热点,热门程度和时效性是个性化新闻推荐的重点,而个性化相对于这两点略显次要。因 此,UserCF可以给用户推荐和他有相似爱好的一群其他用户今天都在看的新闻,这样在抓住热 点和时效性的同时,保证了一定程度的个性化。同时,在新闻网站中,物品的更新速度远远快于新用户的加入速度,而且 对于新用户,完全可以给他推荐最热门的新闻,因此UserCF显然是利大于弊。

但是,在图书、电子商务和电影网站,比如亚马逊、豆瓣、Netflix中,ItemCF则能极大地发 挥优势。首先,在这些网站中,用户的兴趣是比较固定和持久的。一个技术人员可能都是在购买 技术方面的书,而且他们对书的热门程度并不是那么敏感,事实上越是资深的技术人员,他们看 的书就越可能不热门。此外,这些系统中的用户大都不太需要流行度来辅助他们判断一个物品的 好坏,而是可以通过自己熟悉领域的知识自己判断物品的质量。因此,这些网站中个性化推荐的 任务是帮助用户发现和他研究领域相关的物品。因此,ItemCF算法成为了这些网站的首选算法。 此外,这些网站的物品更新速度不会特别快,一天一次更新物品相似度矩阵对它们来说不会造成 太大的损失,是可以接受的。同时,从技术上考虑,UserCF需要维护一个用户相似度的矩阵,而ItemCF需要维护一个物品 相似度矩阵。从存储的角度说,如果用户很多,那么维护用户兴趣相似度矩阵需要很大的空间, 同理,如果物品很多,那么维护物品相似度矩阵代价较大

下表是对二者的一个全面的表较:

㈡ 基于协同过滤的推荐算法

协同过滤推荐算法是最经典的推荐算法,它的算法思想为 物以类聚,人以群分 ,基本的协同过滤算法基于以下的假设:

实现协同过滤的步骤:
1). 找到相似的Top-N个人或者物品 :计算两两的相似度并进行排序
2). 根据相似的人或物品产生推荐结果 :利用Top-N生成初始推荐结果,然后过滤掉用户已经有过记录或者明确表示不喜欢的物品

那么,如何计算相似度呢?

根据数据类型的不同,相似度的计算方式也不同,数据类型有:

一般的,相似度计算有 杰卡德相似度、余弦相似度、皮尔逊相关系数

在协同过滤推荐算法中,我们更多的是利用用户对物品的评分数据集,预测用户对没有评分过的物品的评分结果。

用户-物品的评分矩阵,根据评分矩阵的稀疏程度会有不同的解决方案。

目的:预测用户1对于物品E的评分

步骤分析:

实现过程

用户之间的两两相似度:

物品之间的两两相似度:

㈢ 利用 SVD 实现协同过滤推荐算法

奇异值分解(Singular Value Decomposition,以下简称SVD)
是在机器学习领域广泛应用的算法,它不光可以用于 降维算法中的特征分解 ,还可以用于 推荐系统 ,以及自然语言处理等领域。

优点: 简化数据,去除噪声,提高算法的结果。
缺点: 数据的转换可能难以理解。

应用领域: 推荐引擎(协同过滤、相似度计算)、图像压缩等。

SVD定义: 如果我们求出了矩阵A的n个特征值λ1≤λ2≤...≤λn,以及这n个特征值所对应的特征向量{w1,w2,...wn},如果这n个特征向量线性无关,那么矩阵A就可以用下式的特征分解表示:A=WΣW−1,其中W是这n个特征向量所张成的n×n维矩阵,而Σ为这n个特征值为主对角线的n×n维矩阵。一般我们会把W的这n个特征向量标准化,即满足||wi||2=1, 或者wiTwi=1,此时W的n个特征向量为标准正交基,满WTW=I,即WT=W−1, 也就是说W为酉矩阵。要进行特征分解,矩阵A必须为方阵。那么如果A不是方阵,则用到SVD。

矩阵A的SVD为:A=UΣVT,其中U是一个m×m的矩阵,Σ是一个m×n的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值,V是一个n×n的矩阵。U和V都是酉矩阵,即满足UTU=I,VTV=I。

对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。

因此SVD 也是一种强大的降维工具 ,可以利用 SVD 来逼近矩阵并从中获得主要的特征。通过保留矩阵的 80%~90% 的能量,就可以得到重用的特征并去除噪声。

推荐系统 是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。
主要有以下几种推荐算法:
基于内容的推荐(用到自然语言处理), 协同过滤(主流) ,基于规则推荐(基于最多用户点击,最多用户浏览等),混合推荐(类似集成算法,投票决定),基于人口统计信息的推荐(根据用户基本信息)

协同过滤推荐分为三种类型。 第一种是基于用户(user-based)的协同过滤(需要在线找用户和用户之间的相似度关系),第二种是基于项目(item-based)的协同过滤(基于项目的协同过滤可以离线找物品和物品之间的相似度关系), 第三种是基于模型(model based)的协同过滤(用户和物品,主流)。

一般在推荐系统中,数据往往是使用 用户-物品 矩阵来表示的。 用户对其接触过的物品进行评分,评分表示了用户对于物品的喜爱程度,分数越高,表示用户越喜欢这个物品。而这个矩阵往往是稀疏的,空白项是用户还未接触到的物品,推荐系统的任务则是选择其中的部分物品推荐给用户。

对于这个 用户-物品 矩阵,用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。

具体基于模型的方法有:
用关联算法做协同过滤(Apriori算法、FP Tree算法)
用聚类算法做协同过滤(针对基于用户或者基于模型,Kmeans,DBSCAN)
用分类算法做协同过滤(设定评分阈值,高于推荐,低于不推荐,逻辑回归和朴素贝叶斯,解释性很强)
用回归算法做协同过滤(Ridge回归,回归树)
用矩阵分解做协同过滤(由于传统的奇异值分解SVD要求矩阵不能有缺失数据,必须是稠密的,而用户物品评分矩阵是一个典型的稀疏矩阵,主要是SVD的一些变种,比如FunkSVD,BiasSVD和SVD++。这些算法和传统SVD的最大区别是不再要求将矩阵分解为UΣVT的形式,而变是两个低秩矩阵PTQ的乘积形式。)
用神经网络做协同过滤(限制玻尔兹曼机RBM)

在 Python 的 numpy 中,linalg已经实现了SVD

㈣ 推荐算法之模型协同过滤(1)-关联规则

关联规则是数据挖掘中的典型问题之一,又被称为购物篮分析,这是因为传统的关联规则案例大多发生在超市中,例如所谓的啤酒与尿布传说。事实上,“购物篮”这个词也揭示了关联规则挖掘的一个重要特点:以交易记录为研究对象,每一个购物篮(transaction)就是一条记录。关联规则希望挖掘的规则就是:哪些商品会经常在同一个购物篮中出现,其中有没有因果关系。为了描述这种“经常性”及“因果关系”,分析者定义了几个指标,基于这些指标来筛选关联规则,从而得到那些不平凡的规律。

(1)计算支持度
支持度计数:一个项集出现在几个事务当中,它的支持度计数就是几。例如{Diaper, Beer}出现在事务 002、003和004中,所以它的支持度计数是3
支持度:支持度计数除于总的事务数。例如上例中总的事务数为4,{Diaper, Beer}的支持度计数为3,所以它的支持度是3÷4=75%,说明有75%的人同时买了Diaper和Beer。

(2)计算置信度
置信度:对于规则{Diaper}→{Beer},{Diaper, Beer}的支持度计数除于{Diaper}的支持度计数,为这个规则的置信度。例如规则{Diaper}→{Beer}的置信度为3÷3=100%。说明买了Diaper的人100%也买了Beer。

一般地,关联规则被划分为动态推荐,而协同过滤则更多地被视为静态推荐。
所谓动态推荐,就是推荐的基础是且只是当前一次(最近一次)的购买或者点击。譬如用户在网站上看了一个啤酒,系统就找到与这个啤酒相关的关联规则,然后根据这个规则向用户进行推荐。而静态推荐则是在对用户进行了一定分析的基础上,建立了这个用户在一定时期内的偏好排序,然后在这段时期内持续地按照这个排序来进行推荐。由此可见,关联规则与协同过滤的策略思路是完全不同的类型。
事实上,即便在当下很多能够拿到用户ID的场景,使用动态的关联规则推荐仍然是值得考虑的一种方法(尤其是我们经常把很多推荐方法的结果综合起来做一个混合的推荐),因为这种方法的逻辑思路跟协同过滤有着本质的不同,问题似乎仅仅在于:个人的偏好到底有多稳定,推荐到底是要迎合用户的长期偏好还是用户的当下需求。

挖掘关联规则主要有Apriori算法和FP-Growth算法。后者解决了前者由于频繁的扫描数据集造成的效率低下缺点。以下按照Apriori算法来讲解。

step 1: 扫描数据集生成满足最小支持度的频繁项集。
step 2: 计算规则的置信度,返回满足最小置信度的规则。

如下所示,当用户购买1商品时推荐2、3商品

㈤ 利用协同过滤算法为用户推荐商品的方法有哪些

协同过滤(Collaborative Filtering)的基本复概念就是制把这种推荐方式变成自动化的流程

协同过滤主要是以属性或兴趣相近的用户经验与建议作为提供个性化推荐的基础。透过协同过滤,有助于搜集具有类似偏好或属性的用户,并将其意见提供给同一集群中的用户作为参考,以满足人们通常在决策之前参考他人意见的心态。

本人认为,协同过滤技术应包括如下几方面:(1)一种比对和搜集每个用户兴趣偏好的过程;(2)它需要许多用户的信息去预测个人的兴趣偏好;(3)通过对用户之间兴趣偏好相关程度的统计去发展建议那些有相同兴趣偏好的用户。

㈥ 个性化推荐算法——协同过滤

有三种:协同过滤
用户历史行为
物品相似矩阵

㈦ 推荐算法的基于协同过滤的推荐

基于协同过滤的推荐算法理论上可以推荐世界上的任何一种东西。图片、音乐、样样可以。 协同过滤算法主要是通过对未评分项进行评分 预测来实现的。不同的协同过滤之间也有很大的不同。
基于用户的协同过滤算法: 基于一个这样的假设“跟你喜好相似的人喜欢的东西你也很有可能喜欢。”所以基于用户的协同过滤主要的任务就是找出用户的最近邻居,从而根据最近邻 居的喜好做出未知项的评分预测。这种算法主要分为3个步骤:
一,用户评分。可以分为显性评分和隐形评分两种。显性评分就是直接给项目评分(例如给网络里的用户评分),隐形评分就是通过评价或是购买的行为给项目评分 (例如在有啊购买了什么东西)。
二,寻找最近邻居。这一步就是寻找与你距离最近的用户,测算距离一般采用以下三种算法:1.皮尔森相关系数。2.余弦相似性。3调整余弦相似性。调整余弦 相似性似乎效果会好一些。
三,推荐。产生了最近邻居集合后,就根据这个集合对未知项进行评分预测。把评分最高的N个项推荐给用户。 这种算法存在性能上的瓶颈,当用户数越来越多的时候,寻找最近邻居的复杂度也会大幅度的增长。
因而这种算法无法满足及时推荐的要求。基于项的协同过滤解决了这个问题。 基于项的协同过滤算法 根基于用户的算法相似,只不过第二步改为计算项之间的相似度。由于项之间的相似度比较稳定可以在线下进行,所以解决了基于用户的协同过滤算法存在的性能瓶颈。

㈧ 基于用户协同过滤(User-CF)的推荐算法

1. 数学必备知识(向量)

2. 构建矩阵模型

3. User-CF的思想和计算

在一个个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法成为基于用户的协同过滤算法(User-CF)

根据问题域中构建出来的用户-行为评分矩阵(图1-1),我们可以构建出用户的向量.首先,把每一个用户用一个向量表示,每个向量里有6个数字,分别代表该用户对6本书喜爱程度的评分.0代表用户没看过这本书.图示:

接下来,计算俩个用户的相似性,这里使用的指标叫作余弦相似度,计算公式如下:

其中,分子部分a·b表示两个向量的点积,计算方法就是两个向量对应元素先相乘再求和,比如:

用户a=[4 3 0 0 5 0]和用户b=[5 0 4 0 4 0]

a·b=4x5+3x0+0x4+0x0+5x4+0x0=40

分母部分的 代表向量a的模长, 就是a,b两个向量模长的乘积.向量模长的计算方法就是把向量

中的每个元素平方后再求和最后再开根号.

于是,第一个用户和第二个用户的相似度就可以进行如下计算:

余弦相似度的值在[0,1]闭区间内,值越大说明越相似,值越小说明越不相似.根据上面的计算公式,分别计算小白和其他5个同事的相似度,然后根据从大到小的顺序排列.可以看到小白和前俩个同事相似度高而和最后一个同事完全不相似.

比如,和小白最相似的两个同事的阅读列表编号有1,3,4,5共4本书.其中1,5这两本书小白已经看过,3,4这两本书哪本可能更适合小白的口味呢?

可以计算这两个同事对这两本书的加权评分并作为小白的可能评分,权重就是他们之间的相似度,具体计算如

下图.通过计算可以看出编号为3的书可能更适合小白的口味.

计算步骤:

1. 先确定第一个同事拥有的阅读列表的图书编号为1,3,5

2. 再确定第二个同事拥有的阅读列表的图书编号为1,3,4,5

3. 小白自己已经拥有的阅读的图书列表是1,2,5[这也是打叉的意义,自己已经有的,不需要再推荐给自己了]

4. 最后剩余的只有编号为3和编号为4的两本书了

5. 计算公式说明,0.75和0.63代表权重,也就是相似值.4,3,5代表的是该用户对这本书的评分.

1. 性能:适用于用户较少的场合,如果用户过多,计算用户相似度矩阵的代价较大

2. 领域:实效性要求高,用户个性化兴趣要求不高

3. 实时性:用户有新行为,不一定需要推荐结果立即变化

4. 冷启动:在新用户对少的物品产生行为后,不能立即对他进行个性化推荐,因为用户相似度是离线计算的 

新物品上线后一段时间,一旦有用户对物品产生行为,就可以将新物品推荐给其他用户

阅读全文

与基于改进信任度的协同过滤推荐算法相关的资料

热点内容
纯水箱上做u型管怎么做 浏览:836
净水器的废水一般是什么 浏览:669
漫步者净化器叫什么 浏览:348
污水处理大罐两边出水是怎回事 浏览:558
如何检查单项污水泵绕阻的好坏 浏览:816
直饮饮水机好还是过滤器 浏览:769
酒精蒸馏方法 浏览:896
MODERN现代净水器多少钱 浏览:895
上海三克滤芯怎么样 浏览:115
史密斯立式热水器除垢 浏览:49
污水处理厂绑钢筋多少钱一吨 浏览:636
砂芯过滤装置如何装膜 浏览:747
污水坑怎么治疗最好 浏览:887
污水处理泥巴如何沉淀好 浏览:716
什么时候回吉林用隔离吗 浏览:706
蒸氨废水硫化物不超多少 浏览:723
聚四氟乙烯超滤膜 浏览:163
污水排放怎么缴费 浏览:208
消毒液水垢 浏览:510
污水cod超1000 浏览:329