基于聚类的推荐算法.docx
- 文档编号:5816290
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:24
- 大小:138.47KB
基于聚类的推荐算法.docx
《基于聚类的推荐算法.docx》由会员分享,可在线阅读,更多相关《基于聚类的推荐算法.docx(24页珍藏版)》请在冰豆网上搜索。
基于聚类的推荐算法
曲靖师范学院
本科生毕业论文
论文题目:
一种基于项目聚类的推荐算法
作者、学号:
何芸娜2010112142
学院、年级:
数学与信息科学学院2010级
学科、专业:
数学信息与计算科学
指导教师:
刘永财
完成日期:
2014年5月27日
曲靖师范学院教务处
一种基于项目聚类的推荐算法
摘要
推荐系统是帮助用户评估他没有发现的内容,从而克服信息超载的一种有效工具.对于推荐系统的研究,既有重大的社会意义,又有重大的经济价值.推荐系统早在上世纪九十年代就已经被提出并进行了广泛的研究.
在现代信息爆炸的年代,用户在网上留下的评分数据成了一个很大的数据库.本文介绍了一种基于项目聚类的协同过滤推荐算法及比较简单实用的聚类分析算法—k-means算法,利用该推荐算法合理开发并利用这些资源.主要通过k-means算法求出根据项目相似性度量,从而对项目进行聚类.
文中介绍的推荐算法,其核心目的在于解决数据稀疏性优势的基础上,使用聚类分析技术对原始信息进行处理,通过简单实用的k-means聚类算法将用户的行为模型转化为兴趣模型从而实现了更精准的推荐.
关键词:
推荐系统;聚类分析;相似性度量;k-means算法
Basedontheprojectclusteringrecommendationalgorithm
Abstract:
Recommendationsystemistohelpusersassessthecontenthedidnotfoundaneffectivetooltoovercometheinformationoverload.Recommendationsystemforthestudyofbothmajorsocialsignificance,butalsoofgreateconomicvalue.Recommendationsystemearlyinthelastcenturyninetyyearshasbeenproposedandcarriedoutextensiveresearch.
Inthemoderneraofinformationexplosion,leavingthescoreintheonlineuserdataintoalargedatabase.Thispaperdescribesaproject-basedclusteringcollaborativefilteringalgorithmisrelativelysimpleandpracticalclusteringalgorithm-k-meansalgorithm,usingtherecommendedalgorithmdevelopmentandrationaluseoftheseresources.mainlydeterminedbyk-meansalgorithmbasedonprojectsimilaritymeasure,sotheprojectcluster.
Thisarticledescribestherecommendationalgorithm,itscorepurposeistosolvethedatasparsity-basedadvantages,theuseofclusteranalysistechniquestoprocesstheoriginalinformationthroughsimpleandpracticalk-meansclusteringalgorithmtomodelthebehavioroftheuserinterestmodelthustransformedintotoachieveamoreaccuraterecommendations.
Keyword:
recommendationsystemclusteringanalysis
similaritymeasurementk-meansarithmetic
目录
1引言1
2聚类分析3
3基于项目聚类的推荐算法5
3.1ISODATA算法5
3.2k-means聚类算法6
3.3k-means聚类算法的算法步骤7
3.4k-means算法和ISODATA算法8
3.5简单推荐过程的实现9
4k-means聚类算法的实现10
4.1k-means聚类算法模型建立10
4.2k-means聚类算法的性能分析11
4.3MovieLens电影评分数据集12
4.4k-means聚类算法实验过程及结果13
总结16
参考文献17
致谢18
附录19
1引言
文献[1]“互联网信息环境中信息超载问题研究”中介绍了计算机及互联网的飞速发展而使得人类从信息贫乏时代进入了信息超载时代.在这个信息爆炸[1]的时代,无论对于作为信息消费者的用户和信息生产者的媒体与商家都受到了海量信息带来的新挑战.
一方面,普通用户很难从海量信息中发现自己感兴趣的部分;另一方面,对于媒体和商家来说,海量的信息成为网络中的“暗信息”无法产生价值,而这些“暗信息”中或许存在着大量用户感兴趣的项目[2],如何利用这些信息提供给用户良好的服务来增加用户粘性也是一个很重要的事情.文献[2]中介绍了一种基于项目聚类的推荐算法,利用k-means算法挖掘这些海量的信息.从中开发这些海量信息的隐藏价值.
作为当前解决信息超载问题的最有效工具之一,搜索引擎以一定的策略在互联网中搜集与发现信息,同时完成对信息的提取、组织和理解等处理,从而为用户提供检索服务,起到信息导航的目的[3].搜索引擎提供的信息导航服务目前已经成为互联网上非常重要的网络服务,搜索引擎也已经成为计算机工业界和学术界广泛研究的对象.但是,随着互联网技术与需求的不断发展,搜索引擎技术不可避免的显露出一些不足之处:
首先,现有的搜索引擎工具只能为用户找到已知的信息或已知关键字的信息,而不能帮助用户找到其未知但有意义或有兴趣的信息.有些潜在的携带用户偏好等信息如果无法用文字准确描述则无法通过搜索引擎得到,例如对电影的不同偏好或者对服装首饰搭配的审美特点都不容易使用明确的文字进行描述.另外,现有搜索引擎呈献给用户的是“千人一面”的分类体系和网页内容,信息结果的排列方式也是仅仅按照关键字的相关度进行排序,这往往无法满足用户的个性化需求.
文献[3]“搜索引擎及网络信息资源的分类组织”一文中介绍了几种常用的搜索引擎,从搜索引擎算法的原理到实现介绍了搜索引擎的功能,分析了搜索引擎的优点和带来的便捷之处,同时也分析了搜索功能的局限性和不足之处.
个性化推荐技术的出现从一定程度上解决了现有搜索引擎所面临的两个问题.推荐系统帮助用户评估他从未看过的产品,这些产品既包括书、电影、CD、网页等结构化信息,也可以是音乐、绘画、视频等非结构性信息.相对于搜索技术,个性化推荐系统能对用户没搜索到的信息准确描述未知领域信息进行有效的挖掘.同时,推荐系统也有助于把确切的信息传递给合适的用户,提高用户体验,这也就加强用户的对于系统的忠诚度.对于推荐系统在电子商务领域的应用,准确高效的推荐系统可以挖掘用户潜在的消费倾向,在日趋激烈的电子商务竞争中,个性化推荐系统作为一种已经被广泛应用的商业营销手段,可以大大提高用户的浏览体验,增进用户的黏着性,在这个层面上,推荐系统已经给电子商务领域带来了巨大的商机利益.
总之,对于推荐系统的研究既有重大的社会意义,又有重大的经济价值.根据学者们对于推荐系统的研究,推荐系统需要完成从数据收集到输出推荐结果的工作,这个过程中需要使用大量的模型与算法.目前比较成熟的推荐系统从整体上可以分为以下三个部分[4]:
(1)收集记录模块:
收集记录模块负责记录用户的喜好行为和评分信息等,例如用户对项目浏览、购买、点评和回答等信息.点评和打分的信息相对方便进行收集,称之为显性信息.但有的用户不愿意向系统提供这些信息,那就需要通过其它隐形反馈信息对用户行为进行分析,例如用户浏览轨迹、购买行为信息等.
(2)分析模型模块:
分析模型模块通过这些用户的行为记录分析用户的潜在爱好产品和喜欢程度.模型分析模块的功能在于建立合适模型来描述用户的喜好信息,同时对用户的行为记录进行分析.
(3)推荐算法模块:
推荐算法模块利用模型分析的结果,设计和选择合适的推荐算法,实时或者离线的从产品集合中筛选出用户感兴趣的产品进行推荐.这个模块是整个推荐系统中最重要的部分,因为它将直接影响推荐质量的好坏,也是研究者们投入精力最多的研究部分.
随着互联网的快速发展,网络中的信息呈爆炸式的增长,怎样从这些信息中提取出有用的信息成为当今数据挖掘领域一个比较热点的话题.针对这一问题,以协同过滤推荐为代表的一系列个性化推荐算法应运而生.虽然个性化推荐技术已经在互联网领域内得到广泛应用,但是仍普遍存在数据稀疏性、算法可扩展性等亟待解决的问题.利用聚类分析等方法,在一定程度上解决推荐系统的现有问题[5].
2聚类分析
在对数据的分析和描述中,类的概念扮演着重要的角色.一方面,人类善于将各种对象划分成组或类,并将特定的对象分别指派到不同的类中.而完成这种工作的聚类分析方法已经被广泛的应用于各个领域之中,帮助用户快速的找出自己想要的结果.
电影中按照不同的电影类别归在不同的类别下,信息检索与模式识别使用聚类技术处理海量数据等.另一方面,正所谓“物以类聚,人以群分”,聚类技术也可以用于对处于社会中人类自身进行分析与研究当中.在商业领域,商家通过聚类将客户划分为若干组,以便进一步分析和开展营销活动.
总之,聚类分析就是自动发现这些类或簇的技术.聚类是数据挖掘领域用来发现数据分布和隐含模式的一项重要技术,在事先不规定分组规则的情况下将数据按照其自身特性划分成为不同的群组[7].与之相类似的是数据挖掘领域的分类技术,分类技术被称为监督分类,对新的、无标记的对象赋予类标号的过程.因此,有时聚类分析又被称为无监督分类[8].
目前被广泛应用的聚类算法很多,需要根据应用所涉及的数据类型,聚类的目的以及具体应用需求选择合适的聚类算法.视角不同,针对聚类分析方法的分类方式也不同.按照类的集合是否嵌套的划分方法,可以分为层次聚类与划分聚类.虽然研究者对于聚类技术已经有相对成熟的研究,但是在某种意义下,聚类分析只是解决其它问题的起点,算法的选择在一定程度上会直接影响后续工作的结果,对于聚类结果的应用方式也会影响实际问题的解决.
目前使用最广泛的聚类算法是k-means聚类算法[9].相似的ISODATA算法是在k-均值算法的基础上,增加对聚类结果的“合并”和“分裂”两个操作,并设定算法运行控制参数的一种聚类算法.虽然这两种算法的理论基础与实现都非常简单,但是可以应用的范围却非常广泛.而k-means算法作为最广泛的聚类算法也具有它一定的简便优势.算法只使用对象之间的相似性度量,因此,算法产生以来在数据挖掘各个领域取得了广泛的应用.
聚类分析是数据挖掘中的一个很活跃的研究领域,并提出了许多聚类算法.传统的聚类算法可以被分为五类:
划分方法、层次方法、基于密度方法、基于网格方法和基于模型方法.计算聚类的距离指标的方法非常多:
按照数据的不同性质,可选用不同的距离指标.欧氏距离、欧氏距离的平方、曼哈顿距离、切比雪夫距离、卡方距离等.
k-means作为解决聚类问题的一种经典算法,它的主要优点是算法理论与实现都很简洁、快速.然而这种算法对不同的初始值可能会导致不同的聚类结果,一般需要进行多次重复聚类才能得到更加理想的聚类结果.另一个缺陷在于k-means采用了迭代方式寻找最优解,迭代过程只能保证误差的平方和的局部最优,因此易陷入局部极小值.由于这两大缺陷一定程度上限制了它的应用范围,聚类数量k需要人为指定,这也是算法存在的一个潜在的不足之处[10].
聚类分析算法原理步骤:
第一步:
逐个扫描样本,每个样本依据其与已扫描过的样本的距离,被归为以前的类,或生成一个新类.
第二步,对第一步中各类依据类间距离进行合并,按一定的标准,停止合并.
综合聚类方法的计算和算法原理的步骤,聚类方法特征有:
(1)聚类分析简单、直观.
(2)聚类分析主要应用于探索性的研究,其分析的结果可以提供多个可能的解,选择最终的解需要研究者的主观判断和后续的分析.
(3)不管实际数据中是否真正存在不同的类别,利用聚类分析都能得到分成若干类别的解.
(4)聚类分析的解完全依赖于研究者所选择的聚类变量,增加或删除一些变量对最终的解都可能产生实质性的影响.
(5)研究者在使用聚类分析时应特别注意可能影响结果的各个因素.
(6)异常值和特殊的变量对聚类有较大影响.
本文将提出了一种基于项目聚类的推荐算法.算法的核心目的在于在保留了其它已有基于聚类的推荐算法在解决数据稀疏性优势的基础上,使用聚类分析技术对原始信息进行处理,并通过k-means算法求出项目之间的相似性度量[6],把同一类对象推荐给相似的用户,完成推荐过程.
3基于项目聚类的推荐算法
基于用户的协同过滤算法普遍的认为一个用户会喜欢和他有相似兴趣爱好的用户喜欢的商品.算法基于两个基本假设,即用户在空间上的一致性与时间上的一致性:
算法假定在一个商品上有相同喜好的用户在其它商品上也有相同的喜好;用户过去喜欢的商品在今后也会喜欢.在这两个前提之下,要对用户进行推荐,首先要找到和他兴趣相似的用户.本章介绍了k-means算法和ISODATA算法,并对这两种算法进行比较,而本文主要介绍了简便的k-means算法,并从k-means算法的基本思想和算法的步骤具体介绍基于项目聚类的推荐算法的实践,并举例分析k-means算法的聚类过程.
3.1ISODATA算法
ISODATA算法的基本思想:
ISODATA是迭代自组织分析,通过设定初始参数而引入人机对话环节,并使用归并与分裂的机制,当某两类聚类中心距离小于某一阈值时,将它们合并为一类,当某类标准差大于某一阈值或其样本数目超过某一阈值时,将其分为两类.在某类样本数目少于某阈值时,需将其取消.如此,根据初始聚类中心和设定的类别数目等参数迭代,最终得到一个比较理想的分类结果.
ISODATA算法的具体步骤:
第一步:
将ji个模式样本{j,i=1,2,3,…,}读入,确定C个初始聚类中心和6个初始参数(K,θN,θc,θs,L,I).
第二步:
将N个模式样本分给最近的聚类,假如Dj=min(‖x-zj‖,i=1,2,…,),即‖x-zj‖的距离最小,则x∈Sj.
第三步:
如果Sj中的样本数Nj<
取消样本子集.
第四步:
修正聚类中心值j=1,2,….
第五步:
计算各聚类域Sj中诸聚类中心间的平均距离.
第六步:
计算全部模式样本对其相应聚类中心的总平均距离.
第七步:
判别分裂、合并及迭代运算等步骤.
第八步:
计算聚类样本距离的标准差向量.
第九步:
求每一标准差向量中的最大分量.
第十步:
在任一最大分量集{σj=1,2,…,}中,如有σj>θS(该值给定),同时又满足以下二条件中之一.
(1)即Sj中样本总数超过规定值一倍以上.
(2)Nc≤K/2.
则将Zj分裂为两个新的聚类中心,且类别数加1.如果本步完成了分裂运算,则跳回第二步,否则,继续进行下一步.
第十一步:
计算全部聚类中心的距离,i=1,2,…,j=i+1,….
第十二步:
比较σj与θc值,将小于θc的值按最小距离次序递增排列.
第十三步:
如将距离为Di1,Dj1的两个聚类中心zi1和zj1合并,被合并的两个聚类中心向量,分别以其聚类域内的样本数加权,使其为真正的平均向量.
第十四步:
如果是最后一次迭代运算,算法结束,否则跳到第一步.
3.2k-means聚类算法
基于项目聚类的协同过滤推荐算法通过用户对项目评分的相似性对项目进行聚类并生成对应的聚类中心,在此基础上计算目标项目与聚类中心的相似性,选择与目标项目相似性最高的若干个聚类作为查询空间,在这些聚类中搜索目标项目的最近邻居,从而能够在尽量少的项目空间上搜索到目标项目大部分的最近邻居,有效提高推荐系统的实时响应速度.
通过k-means算法的项目聚类算法可以将用户评分比较相似的项目分配到同一个聚类中,从而使得用户对同一个聚类中项目评分的相似性尽可能高,而对不同聚类间项目评分的相似性尽可能低.设整个项目空间用集合I={i1,i2,…,in}
表示,生成的s个聚类用集合C={c1,c2,…,cs}
则用户对每个聚类Ci(i=1,…,s)中包含的项目评分尽可能相似.并有如下性质:
(1)
(2)
生成的s个聚类对应s个聚类中心,用集合CC={cc1,cc2,…,ccs}
表示,每个聚类中心cci=(i=1,2,…,s)
表示用户对该聚类ci(i=1,2,…,s)
中项目的平均评分.聚类中心作为该聚类的代表,表示用户对该聚类中项目的典型评分.
根据生成的s个聚类中心构造对应的聚类中心评分数据矩阵(m,s),聚类中心评分数据矩阵如图1所示,m行代表m个用户,s列代表s个聚类中心,第i行第j列的元素Ri,j代表用户i对项目聚类j中项目的平均评分.
图1聚类中心评分数据矩阵
聚类中心评分数据矩阵用于计算目标项目与聚类中心的相似性,从而选择与目标项目相似性最高的前若干个聚类作为搜索空间,在此搜索空间中搜索目标项目的最近邻居.对项目进行聚类比较费时,但可以离线周期进行[11].
3.3k-means聚类算法的算法步骤
输入:
聚类数目s和用户评分数据库URDB
输出:
s个聚类
步骤[12]:
(1)从用户评分数据库URDB中检索所有n个项目,记为集合I={i1,i2,…,in};
(2)从用户评分数据库URDB中检索所有m个用户,记为集合U={u1,u2,…,um}
;
(3)任意选择s个项目,将用户评分数据库URDB对这s个项目的评分作为初始的聚类中心,记为集合CC={cc1,cc2,…,ccs}
;
(4)s个聚类c1,c2,…,cs
均初始化为空,记为集合C={c1,c2,…,cs}
;
(5)repeat
foreachitemii∈I
foreachclustercenterccj∈CC
计算项目ii
和聚类中心ccj
的相似性sim(ii,ccj)
Endfor
sim(ii,ccm)=max{sim(ii,cc1),sim(ii,cc2),…,sim(ii,ccs)};
聚类cm=cm∪Ii
endfor
foreachclusterci∈C
foreachuseruj∈U
计算用户uj对聚类ci中所有项目的平均评分Ruj,ci,生成新的聚类中心cci;
endfor
endfor
endfor
(6)until聚类c1,c2,…,cs
上一轮循环中的聚类c1old,c2old,…,csold
相同
(7)返回;
3.4k-means算法和ISODATA算法
k-means方法和ISODATA方法是两种比较基本的聚类方法了.顾名思义,k-means就是指定有k个类,然后通过初始中心迭代得到最后的k个中心.ISODATA算法是在k-均值算法的基础上,增加对聚类结果的“合并”和“分裂”的操作,ISODATA方法要复杂一点,而k-means算法更为简便和广泛的使用.
根据k-means算法和ISODATA算法的步骤和基本原理相比,总结了两种算法在算法步骤和计算方法中有以下的区别:
(1)K-均值算法通常适合于分类数目已知的聚类,而ISODATA算法则更加灵活;
(2)从算法角度看,两种算法的聚类中心都是通过样本均值的迭代运算来决定的;k-means算法的k类需要人为指定.
(3)ISODATA算法加入了一些试探步骤,并且可以结合成人机交互的结构,使其能利用中间结果所取得的经验更好地进行分类.
(4)主要是在迭代过程中可将一类一分为二,亦可能二类合二为一.
ISODATA算法与K-means相比在下列几方面有改进:
(1)考虑了类的合并与分裂,因而有了自我调整类别数的能力.合并主要发生在某一类内样本个数太少的情况,或两类聚类中心之间距离太小的情况.为此设有最小类内样本数限制θN,以及类间中心距离参数θc.若出现两类聚类中心距离小于θc的情况,可考虑将此两类合并.分裂则主要发生在某一类别的某分量出现类内方差过大的现象,因而宜分裂成两个类别,以维持合理的类内方差.给出一个对类内分量方差的限制参数θc,用以决定是否需要将某一类分裂成两类.
(2)由于算法有自我调整的能力,因而需要设置若干个控制用参数,如聚类数期望值K、每次迭代允许合并的最大聚类对数L及允许迭代次数I等.
k-means算法针对连续型数据,而ISODATA算法主要针对离散型数据,针对本文研究的电影评分的数据,这些数据是一些连续型数据,且本文只是把数据简单的分为两类,即可以指定k=2,数据也是0到10的数据构成的向量集,所以针对数据特点,k-means算法的聚类对于电影评分的分类较为简便.
3.5简单推荐过程的实现
我们以下面的推荐场景为例,为了简化问题,这里只举了四个用户甲、乙、丙、丁和三部不同类型的电影《里约大冒险》、《六福喜事》、《扫毒》,建立简单的推荐过程:
电影名称
是否评分
用户
用户喜好
《里约大冒险》
有评分
甲、乙
默认看过该影片且喜欢
未评分
丙、丁
未看过该影片
《六福喜事》
有评分
甲、丙
默认看过该影片且喜欢
未评分
乙、丁
未看过该影片
《新警察故事》
有评分
丙、丁
默认看过该影片且喜欢
未评分
甲、乙
未看过该影片
表1电影推荐场景
说明:
根据上面可知甲乙、甲丁、丙丁有相似的喜好,可以把甲看过的《里约大冒险》推荐给丙,把丙喜欢的《新警察故事》推荐给甲,把丙看过的《六福喜事》推荐给乙,这就完成了简单的推荐过程,当然实际生活中不只这么简单.
当然在实际中,用户对电影的喜好可能不仅仅局限于电影的类别,也有可能是关注导演、演员或时间等信息.同时,人们对于文学作品,音乐美术和网上购物都存在着或多或少对于类型或者类别的偏好.目前广泛使用传统计算方式的相似度指标,如果两个用户之间没有或者很少存在共同喜欢的项目,计算得到的相似度也较小.聚类分析技术可以隐性的挖掘各种项目之间存在的潜在关联,将所研究的项目划分为不同的簇.在下面的工作中,我们将详细说明如何使用聚类技术将用户的行为向量模型转化为偏好向量模型,并在降低算法复杂度的基础上同时提高推荐预测的准确度.
4k-means聚类算法的实现
设U={u1,u2,u3,…,uN}
为用户集合,I={i1,i2,…,iM}
为所有项目的集合,rui
用户u对项目i的评分,如果没有评分则设为0.这样,U集合中的每一个用户都可以使用一个M维向量表征他的行为信息.本章提出的推荐系统首先使用聚类算法对系统中的项目进行聚类,根据聚类分析的结果记录这M个项目所归属类的情况[13].K-means聚类算法的划分原则有欧氏距离划分和曼哈顿距离.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 推荐 算法