




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 毕 业 论 文 个性化电影推荐系统的设计及实现 协同过滤算法分析Design and Implementation of Personalized Movie Recommender System Collaborative Filtering Analysis姓 名: 学 号:学院:软件学院系:软件工程专 业:软件工程年 级:指导教师: 年 月摘要随着网络技术的应用和普及、电子商务的迅猛发展,越来越多的信息充斥在网络之上。如何在众多的资源中找到适合自己需求的信息,成为众多学者、专家和网络用户关心的核心问题之一。推荐系统根据用户访问项目的历史记录以及项目之间的相关信息可以构建用户的兴趣模型,对繁杂的信息进行过滤,并向用户推荐其可能感兴趣的项目。推荐系统已经成为目前解决信息过载最有效的工具之一。协同过滤技术是推荐系统最为核心的技术之一,也是目前应用最为广泛和成功的技术。协同过滤算法可以分为基于全局的算法和基于模型的算法两种,其中基于全局的算法主要依赖最近邻算法,又可以分为基于用户的全局算法和基于项目的全局算法。 基于模型的方法则有贝叶斯网络方法、奇异值分解的方法等。本文以推荐系统的协同过滤算法为研究目标,基于MovieLens数据集,通过对算法MAE值的计算,比较了基于全局的协同过滤算法中不同相似度算法的准确性,以及特征向量维度和迭代次数的对奇异值分解方法的协同过滤算法的影响。关键词:个性化推荐;协同过滤;MAE值Abstract As the increasing popularity of the network technology and the rapid development of e-commerce, more and more information is flooding in the network. How to find information adapted to their needs in huge resources has become the core issue of concern of many scholars, experts and Internet users. Recommender system builds the users interest model based on the history of user accesses and related information, filters the complex information, provides recommendations users may be interested in. Recommender system has become one of the most effective tool to solve information overload.Collaborative filtering is one of the most core technology in recommendation system, and currently the most widely used and successful technique in this field as well. Collaborative filtering algorithms can be classified as the neighbourhood based algorithm and the model-based algorithm. The neighbourhood based filtering relied on the global nearest neighbour algorithm can be divided into user-based filtering and item-based filtering. Model-based methods have Bayesian network method, singular value decomposition methods, etc.In this paper, the collaborative filtering algorithm in recommendation system is our mainly research objectives. We use MovieLens data set, calculate the MAE value of algorithms, compare the accuracy of different collaborative filtering algorithms for similarity, and analyse the influence of the feature vector dimension and the number of initial steps on the singular value decomposition on collaborative filtering algorithms. Key words: Personalized Recommendation; Collaborative Filtering; MAE目录第l章 绪论11.1 研究背景与意义11.2 问题现状1第2章 个性化推荐系统42.1 个性化推荐系统概述42.2 个性化推荐系统结构42.3 个性化推荐系统技术5第3章 协同过滤算法综述83.1 协同过滤算法步骤83.2 协同过滤算法分类83.2.1 基于全局的协同过滤算法93.2.2 基于模型的协同过滤算法103.3 协同过滤算法的优势123.4 存在问题12第4章 推荐模块及算法分析144.1 推荐模块144.2 Taste工具简介174.3 算法分析194.3.1 基于全局的协同过滤算法194.3.2 基于模型的协同过滤算法254.4 实验与结果294.4.1 实验数据294.4.2 评价标准294.4.3 实验过程与结果分析33第5章 结论395.1 总结395.2 展望39致谢43参考文献41ContentsChapter 1 Introduction11.1 Background and Purpose11.2 History1Chapter 2 Personalized Recommender System42.1 Outline42.2 Architecture42.3 Techiques5Chapter 3 Summary of Collaborative Filtering Algorithms83.1 Procedure of Algorithms83.2 Classification83.2.1 Neighborhood-based Collaborative Filtering93.2.1 Model-based Collaborative Filtering103.3 Advantages123.4 Problems12Chapter 4 Recommender Module and Algorithm Analysis144.1 Recommender Module144.2 Introduction of Taste174.3 Algorithm Analysis194.3.1 Neighborhood-based Collaborative Filtering194.3.2 Model-based Collaborative Filtering254.4 Experiments and Results294.4.1 Experimental Data294.4.2 Evaluation Criterias294.4.3 Experimental Procedures and Results Analysis33Chapter 5 Conclusion395.1 Summary395.2 Prospect39Acknowledge43References4143个性化电影推荐系统的设计及实现协同过滤算法分析第l章 绪论1.1 研究背景与意义随着信息高速公路的发展和普及,信息量以指数规律迅猛地增长和扩展,因而形成了“信息过载”1。对于普通的用户来说,信息过载己经成为日益严重的问题。信息过载是由于互联网提供的信息的复杂性和广泛性,并且限于浏览者的知识水平与认识能力,造成浏览者无法正确理解和使用信息。解决这些问题关键在于将互联网从被动接受浏览者的请求转化为主动感知浏览者的信息需求,实现互联网系统对浏览者的主动信息服务。新一代的信息服务将是个性化主动信息服务,如何从海量的数据和信息中高效地获取有用知识,如何从迅速爆炸的信息中及时地获取最新信息,如何提高信息检索与推送的智能水平,以及如何满足各种用户不同的个性化需求等,都是新的信息服务系统面临的挑战性课题。推荐系统就是在这种背景下,应运而生。它可以为浏览者提供个性化的信息推荐服务。这同传统的“一对多”式的搜索引擎信息服务完全不同,返回的结果质量更高、用户参与程度更低,大大降低了用户寻找信息的成本。协同过滤是目前各种推荐系统中应用最为广泛和成功的技术。它解决问题的思路是:既然机器自动内容分析不完全、不精确,那么可以用人类自身的评价过滤掉那些杂乱、低质量的信息。协同过滤通过相似性计算找到相似用户群,根据兴趣相似用户的评价,产生对某些事物的预测评价。同传统的基于内容的过滤相比,协同过滤可以发现用户本身没有发现的新的兴趣;由于共享了他人的评价和经验,因此推荐质量较高。1.2 问题现状协同过滤推荐技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。协同过滤推荐技术也存在自身的不足,主要表现在用户评分数据比较少的时候推荐质量比较低。因此多种数据多种技术的有效集成得到研究者的重视。Balabanovi等人提出通过基于内容的过滤和协同过滤的复合型推荐系统提高推荐质量。文中提出基于Web使用挖掘和Web内容挖掘的推荐系统。近几年电子商务的快速发展推动了推荐系统的发展,其商业应用不断的扩大,诸如互联网上最大的书店Amazoncorn,Web上最大的CD商店CDNowcorn,全球最大的C2C网站淘宝网等等。由微软研究院开发的协同过滤工具己被集成在微软的Commerce Server产品中,并被许多站点使用。协同过滤技术作为在线购物网站的一部分越来越流行,国际上著名的个性化推荐系统也很多,一些典型推荐系统的开发情况如表1-1所示。表1-1典型推荐系统及开发人员和时间2系统名称开发设计人员与时间应用领域TapestryGoldberg 1992邮件过滤GrouplensResnick 1994网络新闻推荐RingoShardanand 1995音乐推荐PSUNSorenson 1995网络新闻过滤InfoFinderKruwilch 1996信息推荐LifeStyle FinderKrulwich 1997购物向导、旅游推荐Personal WebWatcherMladenic 1998网页和网站的推荐MovielensGood 1999电影推荐ACR NewMobasher 2000网络新闻过滤WebSellCunningham 2001购物推荐AmazonAmazon 2003电子商务领域,书籍推荐Ringo是由麻省理工学院的研究人员设计的一个音乐推荐系统。这个系统会要求用户首先对音乐家作出评比,再依据评比的结果计算用户的相似度,然后将用户分群,最后再由同一族群的用户互相推荐音乐3。GroupLens是由Minnesota大学开发的自动协同过滤推荐系统,用于新闻组信息推荐。GroupLens系统通过用户的评分信息自动搜索用户的最近邻,然后根据最近邻居的评分信息产生最终的推荐结果4。MovieLens也是由Minnesota大学开发的研究型自动协同过滤推荐系统,用于推荐电影。与GroupLens不同,MovieLens系统是一个基于Web的荐系统,系统通过浏览器的方式收集用户评分数据和展示推荐结果。第2章 个性化推荐系统2.1 个性化推荐系统概述个性化推荐系统正式的定义是Resnick&Varian在1997年给出的:“它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程5”,现在这个定义己被广泛引用。目前,个性化推荐系统己广泛运用到各行业中,推荐对象包括书籍、音像、网页、文章、新闻等。推荐系统作为一种信息过滤的重要手段,其最典型的应用是在B2C电子商务领域,商家根据不同用户的兴趣、爱好推荐给顾客可能感兴趣或满意的商品,从而与用户建立长期稳定的关系,提供用户忠诚度,防止用户流失。推荐系统是一种为了减少使用者在搜寻信息过程中所附加的额外成本而提出的信息过滤机制。Resnick认为一般信息过滤系统也泛称为推荐系统,它不仅可以依据使用者的偏好、兴趣、行为或需求,推荐出使用者可能有所需求的潜在信息、服务或产品,还可以将推荐系统与企业电子商务的营运架构整合,将为企业带来许多潜在的利益。2.2 个性化推荐系统结构个性化推荐系统主要由以下三个模块组成:输入模块、推荐模块、输出模块3。输入模块主要负责对用户信息的收集和更新。输入来源按时间来划分可以分为用户当前的行为输入和用户访问过程中的历史行为输入,也可以分为个人输入和群体输入两部分。用户个人输入主要指推荐系统的目标用户为了得到系统准确的推荐结果而对一些项目进行评价,这些评价表达了用户自己的偏好。群体输入主要指以群体形式出现的评价数据。推荐方法模块是整个电子商务个性化推荐系统的核心部分,它直接决定着推荐系统的性能优劣。目前电子商务推荐系统中常用的推荐方法有:于主题分类查找方法的分类浏览、基于内容的检索、统计分析、关联规则、协同过滤。输出模块负责将推荐结果输出给用户。电子商务推荐系统的输出形式主要包括:相关产品输出、个体文本评价输出、个体评分输出、平均数值评分输出、电子邮件输出、编辑推荐输出等。2.3 个性化推荐系统技术根据实现途径不同,推荐技术还可以分为信息检索、基于规则的推荐、基于内容的推荐、协同过滤推荐6。(1)信息检索信息检索在推荐系统的应用点主要包括分类浏览和关键字查询。商品分类浏览方法是基于主题分类的信息查找方法,其优点在于既方便网站进行商品信息管理,也符合人们认知事物的习惯。但是随着科学技术的不断发展,交叉学科越来越多,导致相当多的商品难以给出其明确分类,使得用户逐层浏览的结果是有可能找不到原以为应该属于该分类的商品。其次,商品分类浏览比较耗时,用户必须首先明确自身所需商品的分类,然后逐层查找。关键词查询的优点是查全率较高,查询速度快,且查询不限于特定领域,用户使用方便。但是关键词查询查准率较差,用户通常需要进行二次乃至多次查找才能得到自己真正所需内容。关键字查询的个性化程度较低,任何用户只要给出相同的关键词,系统都会返回相同的查询结果,因此不能实现新异发现7。(2)基于规则的推荐关联规则作为数据挖掘领域的重要技术,已在零售领域应用多年,通过用户交易数据产生关联规则,再结合用户当前购买行为作出推荐,主要用于实现交叉销售。最典型的关联规则应用是购物篮分析,即通过研究用户购物篮中商品之间的关系,发现同时被频繁购买的商品,从而帮助电子商务网站在用户下订单和付款时向其推荐相关商品。关联规则还有助于网站调整商品在页面上的陈列位置。关联规则的缺点在于它是根据被购商品之间的关系来建立商品项之间的关联,因此个性化程度不高,且在数据集高维、稀疏的情况下会导致弱规则。Sarwar等人8的实验证明关联规则的推荐效果不如协同过滤。此外,关联规则属于基于规则的推荐系统范畴,基于规则的系统的缺点是规则质量很难保证且不能动态更新,随着规则的数量增多系统将变得越来越难以管理9。(3)基于内容的推荐基于内容的过滤又称为认知过滤。基于内容的过滤根据信息的内容和用户模板之间的相关性向用户推荐信息,它们利用资源与用户兴趣的相似性来过滤信息。基于内容的过滤可以应用于过滤广告,过滤垃圾邮件,过滤反动、色情网页等等。基于内容的过滤主要有下面的局限:首先,要求信息流要么是机器可以分析的形式(如文本),要么是手工标注了属性,如声音、图像、视频可能不能自动分析出相关的属性信息,然而由于信息量巨大的关系,采用手工标注属性是不实际的或不可能的。其次,不容易发现新的信息,系统经常把用户以前看过的信息又推荐给用户。最后,不能根据质量、风格或观点等进行过滤。如两篇文章碰巧使用了同样的关键字,系统将不能区分哪篇是优质的文章,哪篇是劣质的文章。(4)协同过滤推荐协同过滤技术是推荐系统技术中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居对商品评价的加权平均值来预测他对特定项(商品)的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤做出推荐的出发点是其他用户对于项目的评价与项目的本身内容无关。这与认知过滤建立在项目内容基础上的推荐方法恰恰相反。它是补充认知过滤系统的一种技术,正成为一种减小信息负载的常用方法。协同过滤己经在电子商务推荐上取得了很大的发展,是到目前为止最为成功的一种推荐方法,己被用于许多站点。对以上几种个性化推荐技术的比较如表2-1所示。表2-1个性化推荐技术比较7信息检索关联规则认知过滤协同过滤自动化程度低高高高持久性程度低低高高个性化程度低低高高推荐模式被动推荐主动推荐主动推荐主动推荐用户是否参与是否是是能够新异推荐否是否是主要缺点查准率较差规则质量难以保证有限的内容分析数据稀疏性典型系统GoogleE-VZproWebMateMovieLens自动化程度范围从完全自动推荐到完全手工推荐,自动化程度取决于客户为了得到推荐系统的推荐是否需要显式输入信息以及输入信息的多少等6。持久性程度程度范围从完全暂时性推荐到永久性推荐,暂时性推荐基于客户的单一会话,永久性推荐则基于客户先前的多个会话6。个性化程度用来反映推荐结果符合用户兴趣爱好的程度10。从表2-1可以看到,协同过滤和基于内容的过滤是最好的两种推荐技术,关联规则次之,最差的是信息检索。在缺乏足够的用户评分数据及商品项描述信息情况下,关联规则将是一个很好的辅助推荐途径。信息检索则应成为推荐系统网站提供的最基本个性化服务技术。第3章 协同过滤算法综述3.1 协同过滤算法步骤协同过滤在推荐系统中的主要实现步骤一般分为三步:构建用户档案、最近邻搜索和产生推荐11,如图3-1所示。首先,构建用户档案,即收集用户的评分、评价行为等,并进行数据清理、转换,最终形成用户对各种项目的评价矩阵。用户评分数据可以用一个mn阶矩阵R(m, n)表示,m行代表m个用户,n列代表n个项,第i行第j列的元素代表用户i对项j的评分,一般为l-5的整数,不同数据集范围不同。分数越高,用户对该项目的认可度越高。其次,计算目标用户与数据库内各个用户的相似度,寻找相似度最高的作为最近邻居集。最后,根据目标用户的历史信息,以及他的最近邻居的历史信息,得到目标用户对目标项的预测兴趣度,即预测评价值,产生Top-N推荐项列表。图3-1:协同过滤推荐流程43.2 协同过滤算法分类协同过滤算法可以分为基于全局的算法和基于模型的算法两种,其中基于全局的算法主要依赖最近邻算法,又可以分为基于用户的全局算法和基于项目的全局算法1。基于用户的全局算法适用于用户数目变化不大,而项目的数量远多于用户的情况,比如文章等,基于项目的全局算法适合用户数量非常多,而项目的数量相对用户的数目较少的情况比如电影、音乐等。而基于模型的方法则有贝叶斯网络方法、奇异值分解的方法、关联规则方法、聚类的方法等。3.2.1 基于全局的协同过滤算法基于全局的算法是通过在数据库中的所有用户中搜寻最近邻居,形成最近邻居集,通过最近邻居集内用户对某一条项目的评价值,形成目标用户对这一条项目的评价。由于基于全局的算法出现最甲并且简单易懂,所以在现有的协同过滤系统中应用非常广泛,如Grouplens就足应用此算法,进行新闻、电影等的过滤。因此,有时一些研究中所指的协同过滤,指的就是基于全局的协同过滤算法。这实际上是一种狭义的界定。广义的界定应该还包括以此为基础,后来出现的各种基于模型的算法。(1) 基于用户的全局算法基于用户的协同过滤,其核心概念是假设人与人之间的行为具有某种程度的相似性,兴趣相近的用户可能会对同样的东西感兴趣,购买行为类似的顾客会购买相类似的产品,相似用户(邻居用户)的购买项目可以作为对当前用户(目标用户)进行项目推荐的基础。“最近邻居算法”是到目前为止最为成功的自动推荐技术,被许多系统采用。这种技术使用统计方法挑选出与目标用户最相似的若干用户,称为“邻居”,然后根据这些邻居的意见推测用户对目标商品感兴趣程度。关于如何估算用户之间的相似性用户间相似度的方法有多种,如Pearson相关系数等,将在第4章结合实验过程具体阐述。有了相似度的标准,下面就该确定目标用户的个邻居了。在选取相似用户群的过程中,有两种方法:采用最近邻个数固定的方法和相似度阈值的方法。其中最近邻个数固定的方法最为常用。相似度阈值的方法由于限定了只有相似度超过阈值才可以对目标客户的推荐产牛作用,因此,推荐的精度较高,但却以牺牲可向用户产生推荐的个数为代价。实际情况采取哪种情况,应根据具体情况而定。(2)基于项目的全局算法基于项目的协同过滤,其主要假设是项目与项目间具有某种程度的关联,即顾客在购买时,其所购买的产品通常具有关联性,用户可能偏爱与其已购买的东西相类似的商品,可以根据用户对各种东西的评价来判断商品之问的相似程度,然后推荐与用户兴趣度最接近的那些商品,如顾客在购买电子游戏机时,通常会购买电池及游戏卡匣。基于用户的协同过滤算法不同, 基于项的协同过滤算法首先关注的是项目之间的联系。算法查看所有目标客户已经评价的项目集合,计算这些项目与正考虑推荐的项目i之间的相似程度,并从中挑选出最相似的k个项目,其对应的相似程度为。然后计算目标客户对这些相似项目的评分的加权平均值,即得到所需的预测值。算法的实现可以分为相似度计算和预测两个阶段。第一步相似度的计算完全类似于基于用户之间关系的最近邻居算法,不同之处在于最近邻居算法计算矩阵的行之间的相似度,而基于项目之间关系的算法计算列与列之间的相似度。具体地,如果现在要计算项目i与项目j之间的相似度,首先要做的是找出所有同时评估这两个项目的用户,得到关于这两个项目的两个列向量,然后选择相关系统或余弦值计算两个向量之间的相似度。分别计算出目标客户所有已经评价的项目与要预测的项目i 之间的相似度后,过滤出前k 个值最大的项目N,然后计算这些值的和,每个值以相似度为权。3.2.2 基于模型的协同过滤算法由于基于全局的算法是在整个数据库中进行搜索,而数据库中的用户越来越多、项目也越来越多的时候,协同过滤系统的可扩展性就变越来越差。一个解决的办法就是基于模型的方法。基于模型的方法还可使数据集变得密集,增加推荐的数量。基于模型的方法是利用数据库的历史信息,构建可以用来产生新的预测和偏好信息的模型。(1)基于贝叶斯网络的方法贝叶斯网络是基于概率分析、图论的一种不确定性知识的表达和推理模型。从直观上讲,在贝叶斯网络中,用每一个节点表示一个变量,即一个事件;各变量之间的弧表示事件发生的直接因果关系。贝叶斯网络的建模目的是对所包含的定性知识和定量知识进行结构上的描述,并为下一步推理提供依据。从原始数据中构造贝叶斯网络模型,实际上就是对原始数据进行数据挖掘:即先找出最符合原始数据的定性的网络图关系,然后根据网络图中的因果关系,计算节点间的条件概率。推荐系统中应用的贝叶斯网络技术利用训练集创建相应的模型,其中模型用决策树表示,节点和边表示客户信息。模型的建立可以离线进行,即脱离系统的网络运行环境,时间一般需要数小时或数天,而由此得到的模型可以非常小,对模型的使用非常快。但随着客户的不断增多以及客户兴趣爱好的变化,即数据集的变化,贝叶斯网络的学习过程也要重新进行,因此这种方法适合客户的兴趣爱好变化比较慢的场合12。 (2) 基于奇异值分解的方法奇异值分解是一种矩阵分解技术,它利用代数特征提取的方法,揭示矩阵的内部结构。奇异值分解在图像压缩、最小二乘法等方面有着广泛的应用。目前,奇异值分解在信息检索方面的应用主要是隐含语义检索。奇异值分解用于协同过滤的思想是用户对项目评分是基于他们对这些项目的隐含性的喜好基础之上的,而项目之间也存在一些共有的特征。用户喜欢某一项目是因为他们对这些特征的评分较高,所以通过将用户的评分用线性代数方法分解为一些特征,可以根据用户对这些特征的喜好程度来预测用户对他所有没有评过分的项目的喜好1314。通过奇异值分解,可以将文档在高维向量窄问模型中的表示,投影到低维的潜在语义空间中,有效地缩小了问题的规模。然而矩阵的奇异值分解对数据的变化比较敏感,同时缺乏先验信息的植入等而显得过分机械,从而使它的应用受到一定的限制。SVD分解过程中,保留的维数很重要,如果维数太小,则不能得到评分矩阵中的重要结构,如果维数太大,则失去了降维的意义,所以要通过试验来预先确定要保留的维数2。奇异值分解的方法在某些场合下能提高推荐系统的可扩展性,应用于协同过滤时对于稀疏的评分矩阵效果比较好,但是如果原始的评分矩阵过分稀疏,推荐效果反而不如基于用户的协同过滤算法。矩阵的奇异值分解计算量通常比较大,但是可以离线进行。奇异值分解方法的实现和测试将在第4章的实验过程中具体阐述。3.3 协同过滤算法的优势迄今为止在个性化推荐系统中,协同过滤技术是应用最成功的技术。协同过滤的最大优点是不需要分析对象的特征属性,对推荐对象没有特殊要求,能处理非结构化的复杂对象。在艺术品的推荐领域,协同过滤推荐技术在对一些难以用文本信息描述的物品的推荐问题上,比如带有艺术特征的东西如电影、绘画、音乐等领域,效果非常好。而传统的基于内容过滤的技术由于无法对艺术品所特有的无法言语表达的特征进行描述,往往无法作出有效的推荐。在电子商务推荐领域,一方面因为网络上产品日益丰富,对产品特征的描述、检索等受到目前自然语义理解发展的限制,协同过滤技术存操作上显得更为简单;另一方面协同过滤技术可以推荐与以往不同的新项目,这在网络营销上面显得尤为重要。协同过滤的主要优势有:能够过滤难以进行机器自动内容分析的信息。像艺术品、音乐等;共享其他人的经验,避免了内容分析的不完全和不精确,并且能够基于一些复杂的,难以表述的概念(如信息质量、品味)进行过滤;能够有效的使用其他相似用户的反馈信息,减少用户的反馈量,加快个性化学习的速度;有推荐新信息的能力15。3.4 存在问题尽管协同过滤在电子商务推荐系统中的应用获得了较大的成功,但基于协同过滤的推荐系统的发展仍然面临挑战,如何提高协同过滤算法的效力,尽量减少推荐系统运行的负担,保证高质量的推荐,是协同过滤技术实现需要考虑重要因素。通过对协同过滤技术以及推荐系统的研究,发现协同过滤技术的实现中存在的问题主要有:(1)精确性问题即提高对用户的推荐质量的挑战,用户需要一个可以让他们感到信任的推荐系统来给他们提供项目的推荐。(2)数据稀疏性问题16协同过滤技术的实现需要使用用户一项目评分矩阵,但通常在电子商务网站中,用户购买或评分的商品相对于总商品数量仅占有限的百分比,为总数量的1以下,这导致了用户一项目评分数据矩阵的极度稀疏。在这种数据量大而评分又稀疏的情况下,一方面难以成功的定位邻居用户集,另一方面进行相似性计算的耗费也会很大,最后产生的推荐是不理想的。同时,由于数据非常稀疏,在形成目标用户的最近邻居用户集时,往往会造成信息的丢失,从而导致推荐效果的降低。(3)冷启动问题分为新项目问题和新用户问题。如果一个新项目没有人去评价它,则这个项目肯定得不到推荐,推荐系统就失去了作用,这在运用协同推荐技术的系统中最为突出。同样,如果一个新用户从未对系统中的项目进行评价,则系统无法获知他的兴趣点也就无法对他进行推荐。(4)扩展性问题现有大部分协同过滤算法的计算量随着用户和项目的增加而大大增加,推荐系统的计算量呈指数上升,算法会遇到严重的扩展性瓶颈问题,该问题会直接影响着推荐系统向用户提供的实时推荐。对于上百万之巨的数目,通常的算法将遭遇到严重的扩展性问题,但由于大多数算法可以离线进行运算,随着计算机计算能力的不断提高,可扩展性问题相对于前面几个问题来说不是特别严重。第4章 推荐模块及算法分析4.1 推荐模块推荐系统通过用户接口接收推荐请求,在推荐模型选择引擎的帮助下选择需要的推荐模块产生推荐。保证最符合用户个性兴趣需求的电影处在前列。推荐系统可以从用户的评分中不断学习,及时修正推荐电影,保证在下一次推荐时电影更符合用户需求,从而提高推荐的准确性。图4-1:推荐引擎架构图17推荐引擎的结构如图4-1所示,其中各部分的功能分别为:(1)用户接口:接受用户对电影的评分信息,接受用户的推荐请求,返回推荐引擎产生的推荐结果。(2)推荐引擎:接受推荐请求,运行推荐策略,产生推荐结果。(3)推荐核心模块:为推荐引擎选择需要的推荐策略,提供模型连接以及更新推荐系统数据库,是推荐系统的核心部分。(4)推荐系统数据库:存储推荐模型中需要的基础数据。推荐引擎工作流程如图4-2所示。图4-2:推荐流程图推荐模块的数据模型中存在以下实体:Movie:表示电影,包含电影的基本信息:编号、名称、发布时间、类型等等。User:表示用户,包含用户的基本信息:编号、姓名、邮件等等。Movie Reference:表示某个用户对某个电影的喜好程度,包含用户编号、电影编号、用户的评分以及评分的时间。Movie Similarity:表示两个电影的相似度(这里的相似度是双向的),包括两个电影编号、电影的相似度。两个电影的相似度可以通过电影的基本信息计算得到18。我们对推荐模块的DataModel的设计就基于图4-3所示的数据模型。图4-3:电影和用户信息数据模型4.2 Taste工具简介Apache Mahout 是 Apache Software Foundation旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过滤、进化编程等等,并且,在 Mahout 的最近版本中还加入了对 Apache Hadoop 的支持,使这些算法可以更高效的运行在云计算环境中。Taste 是 Apache Mahout 提供的一个协同过滤算法的高效实现,它是一个基于 Java 实现的可扩展的,高效的推荐引擎。Taste 既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的推荐算法。同时,Taste 不仅仅只适用于 Java 应用程序,它可以作为内部服务器的一个组件以 HTTP 和 Web Service 的形式向外界提供推荐的逻辑。Taste 的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求19。Taste主要结构如图4-4所示。图4-4:Taste主要组件图20Taste由以下五个主要的组件组成20:DataModel:DataModel 是用户喜好信息的抽象接口,它的具体实现支持从任意类型的数据源抽取用户喜好信息。Taste 默认提供 JDBCDataModel 和 FileDataModel,分别支持从数据库和文件中读取用户的喜好信息。UserSimilarity 和 ItemSimilarity:UserSimilarity 用于定义两个用户间的相似度,它是基于协同过滤的推荐引擎的核心部分,可以用来计算用户的“邻居”,这里我们将与当前用户口味相似的用户称为他的邻居。ItemSimilarity类似的,计算内容之间的相似度。UserNeighborhood:用于基于用户相似度的推荐方法中,推荐的内容是基于找到与当前用户喜好相似的“邻居用户”的方式产生的。UserNeighborhood 定义了确定邻居用户的方法,具体实现一般是基于 UserSimilarity 计算得到的。Recommender:Recommender 是推荐引擎的抽象接口,Taste 中的核心组件。程序中,为它提供一个 DataModel,它可以计算出对不同用户的推荐内容。实际应用中,主要使用它的实现类GenericUserBasedRecommender 或者 GenericItemBasedRecommender,分别实现基于用户相似度的推荐引擎或者基于内容的推荐引擎。4.3 算法分析4.3.1 基于全局的协同过滤算法相似度作为协同过滤的推荐引擎的核心部分,在各种协同过滤算法的研究中是十分重要的一部分。Taste里提供了几种方法来计算用户或项之间的相关性,关系如图4-5所示。这里我们将对这几种算法进行分析,并通过实验和MAE值的计算,比较算法的准确性。图4-5:相关性计算方法类图UserSimilarity和ItemSimilarity为两个定义了两个用户或项之间相似性的接口,实现返回的相似性在-1.0到1.0之间,其中1.0表示完全相似。AbstractSimilarity是一个抽象类,对该相似性包中大部分实现的功能进行了封装,提供了对已建立的DataModel的基本处理方法,包括对用户评分的读取、转换为均值为0的集合、求平方和、相似性的计算及转换为-1.0到1.0的值等。abstract double computeResult(int n, double sumXY, double sumX2,double sumY2, double sumXYdiff2); 是该类中的抽象方法,子类EuclideanDistanceSimilarity和PearsonCorrelationSimilarity通过对该方法的实现,提供了不同相似度的计算方法。(1)Euclidean距离相似度欧氏距离是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。n维欧氏空间是一个点集,它的每个点可以表示为(),其中是实数,称为的第i个坐标,两个点x和y()之间的距离d(x,y)定义为公式(5)。 (5)欧式距离在这里用来表示用户或项之间的相似程度,我们将根据用户评分计算出的相似距离处理为(0,1之间的数值,即取 (6)主要实现代码如下所示。Overridedouble computeResult(int n, double sumXY, double sumX2, double sumY2, double sumXYdiff2) if (n = 0) return Double.NaN; double denominator = Math.sqrt(sumX2) + Math.sqrt(sumY2); if (denominator = 0.0) return Double.NaN; /数量上标准化 sumXYdiff2 /= denominator; / 除以n以避免自动为用户提供重复的相似度 return 1.0 / (1.0 + (Math.sqrt(sumXYdiff2) / (double) n); (2)Pearson相关系数Person相关系数表示的用户a和用户b之间的相关性的计算公式如下: (1)其中代表用户i对项目j所作的评分,分别是用户a和用户b所有打过分的项目的平均得分。该系数的中心平均值为0,可以看作两个用户评分向量之间的夹角余弦。主要实现代码如下所示。 Overridedouble computeResult(int n, double sumXY, double sumX2, double sumY2, double sumXYdiff2) if (n = 0) return Double.NaN; double xTerm = Math.sqrt(sumX2); double yTerm = Math.sqrt(sumY2); double denominator = xTerm * yTerm; if (denominator = 0.0) /如果一个或两个部分的值完全一样,这样的测量方式并不能解释它们之间的相似度 return Double.NaN; return sumXY / denominator; (3)Spearman相关系数Spearman相关系数和Person相关系数类似,但该系数比较的是用户评分的相对排序,而不是评分本身值的大小。每个用户的评分被分类后,根据评分值被赋予一个排序,比如,评分为1的项目被排为最不被选择的项目。主要实现代码如下所示。/ 根据用户对项目的评分,为项目分配排序float nextRank = 1.0f; for (int i = 0; i xLength; i+) if (yPrefs.hasPrefWithItemID(xPrefs.getItemID(i) xPrefs.setValue(i, nextRank); nextRank += 1.0f; nextRank = 1.0f; for (int i = 0; i yLength; i+) if (xPrefs.hasPrefWithItemID(yPrefs.getItemID(i) yPrefs.setValue(i, nextRank); nextRank += 1.0f; while (true) /比较排序值并计算相似度 int compare = xIndex yIndex ? 1 : 0; if (compare = 0) double diff = xPrefs.getValue(xPrefIndex) - yPrefs.getValue (yPrefIndex); sumXYRankDiff2 += diff * diff; count+; if (compare = xLength) break; xIndex = xPrefs.getItemID(xPrefIndex); if (compare = 0) if (+yPrefIndex = yLength) break; yIndex = yPrefs.getItemID(yPrefIndex); if (count = 1) return Double.NaN; return 1.0 - (6.0 * sumXYRankDiff2 / (count * (count*count - 1); (4)Tanimoto相关系数21我们将关于用户a和用户b的记录看作是两个向量,可用向量之间夹角的余弦值来表示用户的相似度,如公式(2)所示。 (2)由于向量与向量之间的夹角在0,之间,相似度-1表示完全相反,0表示相互独立,1表示完全相同,之间的数值则表示中等的相似性或不相关。余弦相关性的方法还可以扩展到二进制属性的情况。Tanimoto相关系数如公式(3)所示。 (3)这是为二进制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 让纸鹦鹉站起来课件
- 建设工程信息管理试题及答案
- 2025年度设施农业蔬菜大棚建设与承包运营合同
- 2025年进出口商品报关与国内销售渠道拓展合同
- 2025版时尚家居软装定制服务合同协议书
- 2025年跨境电商项目承包合同范本示例
- 2025版城市综合体项目施工总承包合同gf
- 2025版语音外呼服务提供商合作协议
- 2025房地产代理补充协议3:国际教育园区项目代理
- 2025调料品牌代理合作协议书
- 常用急救药品课件
- 幼儿园食品安全培训内容资料
- 人教部编版语文八年级上册第一单元分层作业设计12
- 美发服务礼仪培训课件
- 人教版小学一至六年级英语单词汇总表
- 《生理性止血》课件
- 2019人教版高中英语必修三单词表带音标
- 一例臀部巨大脓肿切开引流患者的个案护理汇报课件
- 液化石油气机械修理工施工质量管控详细措施培训
- 中建挂篮悬臂浇筑箱梁施工方案
- JCT2199-2013 泡沫混凝土用泡沫剂
评论
0/150
提交评论