`
yugouai
  • 浏览: 494895 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

协同过滤

 
阅读更多

1.协同过滤

    协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐, 而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。

 

    协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你。当然其中有一个核心的问题:

  • 如何确定一个用户是不是和你有相似的品位?
  • 如何将邻居们的喜好组织成一个排序的目录?

2.协同过滤的核心

首先,要实现协同过滤,需要一下几个步骤:

  • 收集用户偏好
  • 找到相似的用户或物品
  • 计算推荐

(1)收集用户偏好

    分为显式与隐式两种,显式:用户填写评分,投票,转发等等,通过用户显式的行为获取到的数据。隐式:用户浏览网站,购买,关注等等。显示与隐式的区别在于用户时候直接评分。

(2)找到相似的用户与物品

     当已经对用户行为进行分析得到用户喜好后,我们可以根据用户喜好计算相似用户和物品,然后基于相似用户或者物品进行推荐,这就是最典型的 CF 的两个分支:基于用户的 CF 和基于物品的 CF。这两种方法都需要计算相似度。

     1)相似度计算

    关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近相似度越大。在推荐的场景中,在用户 - 物品偏好的二维矩阵中,我们可以将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,或者将所有用户对某个物品的偏好作为一个向量来计算物品 之间的相似度。通常有以下几种最基本的计算方法:

  • 欧几里得距离(Euclidean Distance):

   
  其意义就是两个元素在欧氏空间中的集合距离,因为其直观易懂且可解释性强,被广泛用于标识两个标量元素的相异度。例如,计算X={2,1,102}和Y={1,3,2}的相似度(相异度)。将上面两个示例数据代入公式,可得两者的欧氏距离为:
   

  •   曼哈顿距离:

  • 闵可夫斯基距离:


     欧氏距离和曼哈顿距离可以看做是闵可夫斯基距离在p=2和p=1下的特例。另外这三种距离都可以加权,这个很容易理解,不再赘述。

    下面要说一下标量的规格化问题。上面这样计算相异度的方式有一点问题,就是取值范围大的属性对距离的影响高于取值范围小的属性。 例如上述例子中第三个属性的取值跨度远大于前两个,这样不利于真实反映真实的相异度,为了解决这个问题,一般要对属性值进行规格化。所谓规格化就是将各个 属性值按比例映射到相同的取值区间,这样是为了平衡各个属性对距离的影响。通常将各个属性均映射到[0,1]区间,映射公式为:

    其中max(ai)和min(ai)表示所有元素项中第i个属性的最大值和最小值。例如,将示例中的元素规格化到[0,1]区间后,就变成了X’={1,0,1},Y’={0,1,0},重新计算欧氏距离约为1.732。

  •  皮尔逊相关系数(Pearson Correlation Coefficient)
    皮尔逊相关系数一般用于计算两个定距变量间联系的紧密程度,它的取值在 [-1,+1] 之间。


    2)相似邻居计算

  • 固定数量的邻居:K-neighborhoods 或者 Fix-size neighborhoods
     不论邻居的“远近”,只取最近的 K 个,作为其邻居。如图 1 中的 A,假设要计算点 1 的 5- 邻居,那么根据点之间的距离,我们取最近的 5 个点,分别是点 2,点 3,点 4,点 7 和点 5。但很明显我们可以看出,这种方法对于孤立点的计算效果不好,因为要取固定个数的邻居,当它附近没有足够多比较相似的点,就被迫取一些不太相似的点作为 邻居,这样就影响了邻居相似的程度,比如图 1 中,点 1 和点 5 其实并不是很相似。
  • 基于相似度门槛的邻居:Threshold-based neighborhoods

    与计算固定数量的邻居的原则不同,基于相似度门槛的邻居计算是对邻居的远近进行最大值的限制,落在以当前点为中心,距离为 K 的区域中的所有点都作为当前点的邻居,这种方法计算得到的邻居个数不确定,但相似度不会出现较大的误差。如图 1 中的 B,从点 1 出发,计算相似度在 K 内的邻居,得到点 2,点 3,点 4 和点 7,这种方法计算出的邻居的相似度程度比前一种优,尤其是对孤立点的处理。

    图 1.相似邻居计算示意图

 

(3)计算推荐

      基于协同过滤的推荐算法可以分为基于用户的 CF 和基于物品的 CF

  • 基于用户的 CF
图2.基于用户的CF原理
    基于用户的 CF 的基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。计算上,就是将一个用户对所有物品的偏好作为一个向量 来计算用户之间的相似度,找到 K 邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。图 2 给出了一个例子,对于用户 A,根据用户的历史偏好,这里只计算得到一个邻居 - 用户 C,然后将用户 C 喜欢的物品 D 推荐给用户 A。
 
  • 基于物品的 CF
图2.基于物品(Item)的CF原理


 

    基于物品的 CF 的原理和基于用户的 CF 类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。从计算 的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的 物品,计算得到一个排序的物品列表作为推荐。图 3 给出了一个例子,对于物品 A,根据所有用户的历史偏好,喜欢物品 A 的用户都喜欢物品 C,得出物品 A 和物品 C 比较相似,而用户 C 喜欢物品 A,那么可以推断出用户 C 可能也喜欢物品 C。

 

(4)应用场合

  • User CF
    User CF 加上社会网络信息,可以增加用户对推荐解释的信服程度
  • Item CF

    非社交网络的网站中,内容内在的联系是很重要的推荐,此时使用Item CF能有更好的效果
 

  • 大小: 1.5 KB
  • 大小: 1.6 KB
  • 大小: 1.1 KB
  • 大小: 1.4 KB
  • 大小: 1 KB
  • 大小: 3.6 KB
  • 大小: 7.9 KB
  • 大小: 10.5 KB
  • 大小: 10.5 KB
分享到:
评论

相关推荐

    基于协同过滤算法商品推荐系统论文-java-文档-基于协同过滤算法商品推荐系统文档

    ### 基于协同过滤算法的商品推荐系统设计与实现 #### 一、绪论 - **选题动因**:随着互联网技术的发展和电子商务平台的兴起,如何在海量的商品信息中帮助用户找到他们真正感兴趣的商品成为了商家面临的一个重大...

    基于协同过滤算法的电影推荐系统

    电影推荐系统中运用的推荐算法是基于协同过滤算法(Collaborative Filtering Recommendation)。协同过滤是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,...

    java协同过滤推荐算法

    Java协同过滤推荐算法是一种在Java环境下实现的个性化推荐系统的核心技术。它主要应用于大数据环境中的信息过滤,通过分析用户的历史行为和偏好,预测用户可能对哪些未知项目感兴趣,从而为用户提供个性化的推荐服务...

    python基于协同过滤推荐算法的电影推荐系统源码.zip

    python django javascript bootstrap jquery 协同过滤 推荐算法 机器学习 影片显示、影片分类显示、热门影片排序显示、收藏影片排序显示、时间排序显示、评分排序显示、算法推荐、影片搜索、影片信息管理 python基于...

    基于项目评分预测的协同过滤推荐算法

    ### 基于项目评分预测的协同过滤推荐算法 #### 概述 本文介绍了一种在用户评分数据极端稀疏的情况下提高推荐系统性能的方法——基于项目评分预测的协同过滤推荐算法。随着电子商务的发展,用户数量和商品种类迅速...

    基于MovieLens-1M数据集实现的协同过滤算法demo.zip

    协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系...

    基于用户的协同过滤算法数据集及代码实现

    协同过滤是一种广泛应用于推荐系统中的机器学习方法,它基于用户的历史行为来预测他们可能对未评价物品的兴趣。在这个数据集中,我们重点探讨基于用户的协同过滤算法,这是一种利用用户之间的相似性来做出推荐的方法...

    MovieLens-100k协同过滤推荐算法数据集

    《MovieLens-100k数据集:协同过滤推荐算法的基石》 在现代的推荐系统领域,MovieLens-100k数据集是研究者和开发者常用的资源,它为协同过滤推荐算法提供了丰富的实证基础。这个数据集源于MovieLens网站,一个由...

    基于协同过滤的音乐推荐系统的外文文献

    基于协同过滤的音乐推荐系统的外文文献 本文档研究了基于协同过滤的音乐推荐系统,讨论了 Spark 架构下的 Collaborative Filtering 算法在音乐推荐系统中的应用。以下是从该文献中提取的相关知识点: 1.音乐推荐...

    基于协同过滤算法的微信小程序智能助手.pdf

    协同过滤算法主要分为两类:基于用户的协同过滤(User-Based Collaborative Filtering, UBCF)和基于物品的协同过滤(Item-Based Collaborative Filtering, IBCF)。在基于用户的协同过滤中,算法通过寻找相似用户,...

    使用Java原生jdk实现的协同过滤推荐系统

    协同过滤推荐系统是一种广泛应用于个性化推荐的技术,它主要基于用户的行为和喜好来预测他们可能对哪些物品感兴趣。在这个“使用Java原生jdk实现的协同过滤推荐系统”中,我们将深入探讨该系统的实现细节以及相关...

    基于协同过滤算法实现的图书推荐系统.zip

    协同过滤(Collaborative Filtering,简称CF)是一种广泛应用于推荐系统中的算法,它通过分析用户的历史行为,找出具有相似兴趣的用户,然后根据这些相似用户的喜好来为目标用户推荐商品或服务。在这个案例中,我们...

    springboot基于协同过滤算法商品推荐系统(源码+部署文档+演示视频)

    基于协同过滤算法的商品推荐系统是一种常见的推荐系统,它利用用户行为数据来预测用户可能喜欢的商品。协同过滤算法主要基于两个原则:用户-用户协同过滤和物品-物品协同过滤。 在Spring Boot中构建基于协同过滤...

    Java毕业设计基于用户的协同过滤算法实现的商品推荐系统源码+数据库(高分项目).zip

    Java毕业设计基于用户的协同过滤算法实现的商品推荐系统源码+数据库(高分项目).zip该项目是个人高分毕业设计项目源码,已获导师指导认可通过,都经过严格调试,确保可以运行!放心下载使用。 Java毕业设计基于用户...

    基于协同过滤算法的个性化推荐技术的研究

    ### 基于协同过滤算法的个性化推荐技术的研究 #### 一、研究背景与意义 在互联网信息爆炸的时代背景下,用户面临着海量的信息选择难题。如何从海量数据中筛选出最符合用户兴趣的内容成为了一个亟待解决的问题。...

    基于物品的协同过滤推荐系统实现

    《基于物品的协同过滤推荐系统实现》 协同过滤推荐系统是一种广泛应用在个性化推荐中的算法,其核心思想是利用用户的历史行为数据,找出具有相似兴趣或偏好的用户或物品,然后根据这些相似性进行预测,为用户推荐...

Global site tag (gtag.js) - Google Analytics