协同过滤也称为社会过滤,自从1992年该技术的思想首次被提出以来,便引来大量的学者对协同过滤推荐技术的广泛研究,协同过滤技术已经成为最成功的推荐技术之一。
(一)协同过滤推荐技术概述
协同过滤推荐因其高效、可操作性高和个性化强等优点,正在逐渐成为最受欢迎的推荐技术。其核心思想是从用户的已有数据中分析用户的关注点,并以此关注点为标准,寻找用户的同类用户,然后从这些同类用户的评价信息中,预估当前用户对目标项目可能给出的评分。比如:同一个宿舍的同学都爱看电影,有一个同学认为某个电影非常好,那么紧接着宿舍内的其他成员也会观看该影片,甚至看更多的相似影片。这就是协同过滤的中心思想。具有相同属性、相同爱好的用户,他们对一个事物更容易产生相似的观点。
在应用中,协同过滤推荐是通过汇总同类用户的评分对未评分项进行评分预测来实现的。评分的高低代表了用户的感兴趣程度。推荐系统的评分数据的获取可以分为两种方式:显示获取和隐式获取。其中,显示评分数据是通过用户使用了某一项目后给项目的打分。这种数据往往比较直接,但是往往比较缺乏,我们目前没有什么好的办法必须让所有用户都评分,而且用户的评分有些可能是虚假的,会带来致命影响。隐式评分数据不需要用户主动参与评分,而是推荐系统汇总用户的历史访问数据,分析用户的使用习惯,计算当前用户对当前项目可能的评分,这样统计出的用户兴趣往往比较准确,而这样获取的评分数据相对比较可靠,但是前期需要对数据进行整理、分析、统计,会占用一定的资源。
(二)协同过滤算法分类
随着信息技术和个性化推荐技术的发展,协同过滤不断融入了新的技术和思想,从而出现了更细化的分类方法,目前基本上国内外都比较认可的划分方法是将协同过滤算法划分为基于内存的推荐、基于模型的推荐和混合协同过滤推荐三类,下面分别介绍。
1.基于内存推荐方法
基于内存的推荐方法是最常用的算法,通常内存中的用户信息分为两种:用户信息和项目信息。据此可将算法分为基于用户的协同过滤算法和基于项目的协同过滤算法。这二者的共同点都是根据内存中用户的历史访问记录来推荐的。其中,用户信息主要是浏览记录,而项目信息主要是用户购买过的物品信息或是下载过的文档信息。
(1)基于用户的协同过滤
基于用户的协同过滤算法是根据邻居用户的偏好信息产生对目标用户的推荐。该类型算法的中心思想就是我们说的“物以类聚、人以群分”,先使用统计思想建立具有相似兴趣的用户小组,然后根据小组内部其他用户的兴趣来预测当前用户的喜好。实质上,就是在兴趣相似的用户小组内部互相推荐感兴趣的资源。以看电影为例说明:如果A喜欢《蝙蝠侠》《星际穿越》等电影,另外一个用户B也喜欢这些电影,而且B还喜欢《钢铁侠》,则很有可能A也喜欢《钢铁侠》这部电影。这种算法简单高效、精确度高,应用非常广泛。
基于用户的协同过滤的基本原理是将访问行为相似的用户划分到一个用户小组,在小组中统计各个用户感兴趣的内容然后互相推荐。该过程体现到计算过程中,就是根据邻居用户的评分来预测本用户对目标物品的评分。
(2)基于项目的协同过滤推荐算法
通过分析可以知道,基于用户的协同过滤虽然优点很多,但其并不是完美的,当用户的评分矩阵过于稀疏的时候,系统的准确度会明显下降。基于项目的协同过滤正是在这样的背景下提出的,弥补了基于用户算法的不足。该算法主要立足于项目特征的稳定性,通常项目的特征不会随时间的推移而改变,而用户的兴趣爱好则不然。
基于项目的协同过滤算法主要针对用户已经评价的项目进行研究,寻找目标项目的相似项目,建立项目的最近邻集合,并以最近邻集合中的评分信息为基础,预测目标项目的评分。该算法不仅改善了基于用户协同过滤的缺点,甚至在某种程度上来讲,采用计算商品之间的相似度做出的推荐准确性更高。
2.基于模型的协同过滤(www.xing528.com)
该类算法核心思想是广泛使用各种机器学习技术,如贝叶斯网络、聚类技术、潜在语义检索和神经网络等,与传统的协同过滤算法相结合,并将建模技术运用到推荐算法中,训练一个推荐模型,当用户到达时,根据实时信息分析用户兴趣并形成推荐。该算法能够解决数据稀疏问题。
该算法的关键在于是否能够建立起优秀的模型,模型的好处在于占用内存小,推荐效果好,比起其他挖掘原始数据集中的数据的算法来说,实时性和可扩展性都要好很多,并且能够缓解数据稀疏性问题。但是缺点就是模型的建立需要一定的时间,建立成功后往往要滞后于数据的特点。因此必须定期对模型进行更新。而且模型在建立时的算法比较复杂,空间复杂度和时间复杂度都较高,一般都被安排在线下实施。
目前,数据挖掘技术和人工智能技术被广泛应用,许多个性化推荐的研究者将其结合到协同过滤中来改进算法的性能和推荐质量。常见的模型有聚类模型、因子模型和贝叶斯网络模型。
(1)聚类模型
与协同过滤的分类类似,通常把聚类也分成用户聚类模型和项目聚类模型。用户聚类模型采用“先聚类,再协同”的原则,即将兴趣相似的用户聚成一类,尽量做到同类中的用户兴趣相同,而不同类中的用户兴趣尽可能不同,而且每个类都有一个类中心,并以该中心为参照点,寻找相似的目标用户。最终做到将每一个目标用户都放入相似度最高的类中。将目标用户放入类中后,剩下的问题就是在一个很小的范围内解决了,在该类中计算与目标用户最相近的N个用户,定义为目标用户的最近邻。用户聚类模型的优点是缩小了查找的范围,降低了空间复杂度和时间复杂度。使得算法运行更加高效。
类似的,项目聚类的原则也是“先聚类,再协同”,即将特征相似的项目聚成一类,尽量做到同类中的项目特征相同,而不同类中的项目特征尽可能不同,而且每个类都有一个类中心,然后计算目标项目与类中心的相似度,最后将目标用户放入相似度最高的类中。将目标项目放入类中后,剩下的问题就是在该类中计算与目标项目最相近的N个项目,定义为目标项目的最近邻。
(2)因子模型
因子模型方法是一种矩阵分解技术,常被用于机器学习领域,又叫作奇异值分解法(SVD)。奇异值分解可以方便地把一个矩阵(包含我们感兴趣的数据)分解得更加简单和有意义。目前,有相当多的应用与奇异值有关,比如数据压缩、搜索引擎等。奇异值分解是一个能够有效地提取矩阵特征的方法,而且对任何矩阵都有效,无论是方阵还是普通矩阵。这也正是它的价值所在,因为在实际的应用中,大多数的矩阵并不是方阵。例如图书馆有X个用户,每个用户对Y本图书进行了评价,那么这X个用户的评分矩阵就是一个XXY的矩阵,描述这样的矩阵就要用到奇异值分解。将矩阵通过一系列计算后,可以把矩阵的奇异值按从大到小的顺序放置到另外一个矩阵中,而且这个矩阵的有效奇异值主要集中在前10%的数据中,甚至有些特殊情况有效奇异值会集中在前1%的数据中,因此在计算中可以忽略后面90%的数据,而只用前10%的数据来描述矩阵。
奇异值的这种特点与推荐系统结合,可以实现对评分矩阵的降维,舍弃稀疏的数据,有效降低数据的维度,从而缓解数据稀疏问题。
(3)贝叶斯网络模型
贝叶斯网络是一项重要的数据挖掘技术,它以图论和概率分析为基础,是近几年来人工智能和机器学习的重要内容。建立贝叶斯网络的目的主要是进行概率推理,在该领域问题的解决中,具有绝对优势,同时也是处理不确定知识表达最有效的理论模型。贝叶斯网络是一种概率网络,利用图形化的方式进行决策分析。它是基于概率分析、图论的一种不确定性因素表示和推理的模型,是一种将因果关系和概率知识相结合的信息表示框架。它又是包含一个条件概率表的有向无环图,在网络拓扑结构图中,节点表示变量(或事件),节点之间的弧(从原因事件指向结果事件)代表父节点和子节点的直接因果关系,并通过二维条件概率表(CPT)形式注解,每个关系都有强度,通常用概率来表示,这样就可以通过该图抽象现实中的很多问题,例如设备部件的状态、测试值、观测现象等。
3.基于混合的协同过滤
混合的协同过滤算法是指根据需要采取某种技术手段,以一种推荐算法为基础,融合多种算法思想,进而提出一种新的推荐算法,比如在基于内存推荐算法中引入基于内容的推荐方法。提出混合的协同过滤推荐算法的出发点是为了充分利用各种推荐技术的优势,解决单一算法中出现的问题,比如将协同过滤和聚类结合,可以有效地提高推荐效率,将关联规则与协同过滤结合,可以提高推荐的准确率,而且通过混合能够很好地解决冷启动等问题,笔者中就是融合了基于用户的协同过滤和基于聚类的两种算法思想来解决算法中固有的问题。这里需要注意的是,并不是所有的技术都可以随意的融合,融合的基本原则是融合后能够充分的避免各自的缺陷。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。