基于用户的协同过滤,UserCF算法

基于用户的协同过滤,UserCF算法大家好,今天我们要讨论的主题是,基于用户的协同过滤,UserCF算法。希望这篇文章,能帮助大家,理解协同过滤、相似度计算、推荐算法的工作原理等知

大家好,欢迎来到IT知识分享网。

大家好,今天我们要讨论的主题是,基于用户的协同过滤,UserCF算法。

希望这篇文章,能帮助大家,理解协同过滤、相似度计算、推荐算法的工作原理等知识点。

基于用户的协同过滤算法

基于用户的协同过滤,UserCF算法

UserCF的全称是User-Based Collaborative Filter,使用了朴素的“人以群分”的思想。

基于用户的协同过滤,UserCF算法

该算法的原理是先“找到相似同户”,再“找到他们喜欢的物品”。例如,用户A和用户B是相似的,我们现在要给用户A推荐一些他之前没有关注的商品。那么这时就可以将B关注了,但A没有关注的物品,也就是可乐,推荐给A。

简单来说,基于用户的协同过滤,就是给用户推荐“和他兴趣相似的其他用户”喜欢的物品。

下面来看一个具体的案例。设有A、B、C三个用户,葡萄、草莓、西瓜、橘子四种水果。如果某个用户喜欢某个水果,就将用户向水果连一条实线箭头。如果要给某个用户推荐某个水果,就从水果向用户引一条虚线箭头。

基于用户的协同过滤,UserCF算法

这里会发现,用户A和用户C同时喜欢草莓和西瓜,可以认为A和C的喜好是相似的。另外,由于用户A单独喜欢葡萄和橘子,而如果C又没有吃过这两种水果,那么就可以将葡萄和橘子推荐给用户C。

从上面这个例子中可以看出,UserCF算法主要包含了两个重要的步骤:

第1个步骤是,要找到与待推荐用户兴趣相似的用户集合。例如,想为用户C推荐,就要想办法找出和C相似的其他用户。

第2个步骤是,选出这些相似用户喜欢的,并且目标用户没有关注的物品,将它们推荐给目标用户。例如,找出A和C相似后,再找到A关注且C没关注的水果,葡萄和橘子,将它推荐给C。

用户相似度的计算

在第1个步骤中,我们需要计算两个用户的兴趣相似度。对于协同过滤算法中的相似度计算,主要会基于用户的行为相似度,计算兴趣的相似度。

具体来说,用户的行为是喜欢某些物品,将不同用户喜欢的物品列表看做是不同的集合。然后通过集合求相似的方法,计算用户行为的相似度。

基于用户的协同过滤,UserCF算法

例如,C1和C2代表两个用户喜欢的物品。集合C1包含了圆形、三角形、五边形,集合C2包含了圆形、方形和五边形,我们要计算集合C1和C2的相似度,就是C1和C2两个用户行为的相似度。

集合之间的相似度计算方法

集合和集合之间的相似度计算方法,有很多种,比如有Jaccard相似系数、余弦相似度等等计算法方法。下面我们分别介绍这两种计算方法。

基于用户的协同过滤,UserCF算法

Jaccard相似系数可以用来比较有限集合之间的相似性与差异性。设已知两个集合A、B,Jaccard 系数等于A与B交集的大小和A与B并集的大小的比值。

它的取值范围在0到1之间,越接近1则表示越相似,越接近0则越不相似。其中1代表了两个集合完全重合,0代表了两个集合之间没有交集。

基于用户的协同过滤,UserCF算法

例如,有C1和C2两个集合。我们要计算集合C1和C2的相似度。C1包含圆形、三角形、五边形,C2包含圆形、正方形、五边形。

观察C1和C2的交集是2,对应圆形和五边形。并集是4,对应圆形、五边形、方形和三角形,因此Jaccard相似系数就是2除以(2+1+1)=0.5。

基于用户的协同过滤,UserCF算法

第2种计算集合相似度的方法会基于余弦相似度计算。两个集合间的Cos相似度的计算如下,CosA-B等于A和B交集的大小除以,根号下,A集合大小乘B集合大小。它的取值范围同样在0到1之间。

例如,如果使用余弦相似度计算C1和C2的相似度,结果为2除以根号下3乘3,等于0.667。

用户兴趣相似度的计算案例

下面来看用户兴趣相似度的计算案例。设有4个用户,用大写的A、B、C、D表示,5个物品用小写的a、b、c、d、e表示。

基于用户的协同过滤,UserCF算法

每个用户对每件物品都有一个评分,这个评分代表了用户对物品的喜好程度,因此会得到一个4乘5的用户、物品评分表。

例如,在表格中,用户A对物品a的评分是3.0,对物品c的评分是横线,这说明用户A关注过物品a,但没有关注过物品c。

基于用户的协同过滤,UserCF算法

设有两个用户,用户u和用户v。令N(u)和N(v)分别表示用户u和v曾经有过正向反馈的物品集合,这两个集合包含了用户u和用户v喜欢的物品。

例如,根据刚刚的表格,N(A)包含了a、b、d,N(B)包含了a、c、e。我们可以基于Jaccard相似或者余弦相似度,计算集合A和B的相似度WAB。

结合用户物品的评分表,可以求出每个用户之间的相似度。这里以用户C来举例说明,使用余弦相似度,计算C和A、B、D的相似度WCA、WCB和WCD。

基于用户的协同过滤,UserCF算法

在计算C和A的相似度WCA时,它等于N(C)与N(A)的交集数量,除以根号下,N(C)的元素数量乘N(A)的元素数量。

其中N(C)中包含了b和e,N(A)中包含了a、b、d。因此在结果的分子中,N(C)和N(A)的交集是b,对应数量是1。

结果的分母是,根号下,两个集合的元素数量相乘,等于根号2乘3等于根号6。所以WCA就等于根号6分之1。

另外C和B与C和D的相似度WCB和WCD,按照同样的方法,可以得到计算结果是根号6分1和根号6分之2。从这个计算结果中可以看出,D用户与C用户的相似度最大,为根号6分之2。

UserCF,推荐算法

得到用户之间的兴趣相似度后,我们要继续研究如何对某个用户进行推荐。

UserCF算法会为用户推荐和他兴趣最相似的K个用户的感兴趣物品。并且会对推荐的物品做一个排序。

基于用户的协同过滤,UserCF算法

设p(u, i)度量了某个用户u对某个物品i的感兴趣程度。后面要计算出全部待推荐用户和待推荐物品的感兴趣程度p。

在计算p(u, i)的公式中,S(u,K)代表了和用户u兴趣最接近的K个用户的集合,N(i)是对物品i有过行为的用户集合。

v是这两个集合的交集中的用户,v代表了和u最接近且对i有过行为的用户。wuv是用户u和用户v的相似度,rvi是用户v对物品i的兴趣程度,是一个实数。

将wuv和rvi相乘,就代表了,基于用户v对物品i打分,将全部的用户v对i的打分累加到一起,就得到了,用户u对物品i的感兴趣程度。接下来,我们要根据这个公式,计算某个用户C的推荐物品列表。

基于用户的协同过滤,UserCF算法

下面我们根据用户、物品的评分表,计算出用户C的推荐方法。因为这里一共只有4个用户,因此令大K等于3,也就是直接根据另外3个用户A、B、D的情况,为用户C进行推荐。

基于用户的协同过滤,UserCF算法

首先,找到C还没有关注过的物品,也就是表格中标记为横线的,物品a、c、d。因此公式中的u就是C,i是a、c、d,我们要计算这三个物品的推荐顺序,也就是P(C,a)、P(C,c)和P(C,d)的大小关系。

基于用户的协同过滤,UserCF算法

首先计算用户C对物品a的兴趣程度P(C,a)。其中用户A和B对该物品有过评价,分别是3.0和4.0。用户C与用户A的相似度是WCA,与用户B的相似度是WCB。这两个值在之前已经计算出来了,都是根号6分之1。

所以P(C,a)等于WCA乘3加WCB乘4,等于7除以根号6,等于2.858。同理,可以计算出P(C,c)和P(C,d)。最后将这三个值从大到小排序,顺序为d、a、c,该物品顺序就是对用户C的推荐顺序。

那么到这里,基于用户的协同过滤,UserCF算法就讲完了,感谢大家的观看,我们下节课再会。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/55650.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信