电影评分预测:数据挖掘实验报告潜矿(南京大学计算机科学与技术系,南京210093)Movierαtingpredicαtion:AReportofDαtaMingEχperiment阳,Lei(0句卫artmentofComputer&:ienceandTa::hnology,NanjingUniversity,Nanji咱21∞93,China)Abstract:Inourdailylife,poopleisæαJstomootowéichingmovie.Butthestylesofthefavoraredifferentfrom回chother,由moonemaypreferwar,由moonemaypreferart,由mωnemaype时erlove,æd田on.Nowwegotalotofinformationofplantyofωstomersandmovi臼.Thegoalistoidentifytheratingsofωstomersfora串ecificmovie.有1isarticleisadatamining昂plication,usOOalotofalgorithms创出æ:NaiveBay白,∞11串orative,SlopeOneetc.tostudythisprob阳nandal臼we∞mparooallthee:范algotithm,inordertofindamoreaα:uratepr创ictionmethods.Keywords:datamining;ra刀mmendationsyster丁1;NaTvebay臼;∞11cborativefiltering;Movierecomm回daion摘要:在我们的日常生活中,人们已经习惯了看电影。但是,每人的偏好是不同的,有人可能喜欢战争片,有人可能史喜欢艺术片,而有的人则可能喜欢爱情片,等等.现在,我们收集了一些的客户和电影的相关信息。目的是找出客户对特定影片的评分,从而预测出客户有可能喜爱的电影并推荐给客户。本文是一个数据挖掘的应用问题,使用了如:朴素贝叶斯、协同过滤等不同算法来进行研究并且比较,从而找出一个更加精确的预测方法。关键字:数据挖掘;推荐系统;朴素贝叶斯;协同过滤;电影推荐中国法分类号:TP301文献标识码:A1.引言口常生活中,我们常常要在自己不了解,或是没布亲身体验的情况下,通过亲朋之间的口口相传、推荐信、报纸上的影评书评、或杂志上餐厅指南等的帮助,来选择自己要消费的商品。本次实验的主要任务就是要通过对训练、集的学习,来对测试集的电影评分情况进行预测,因为测试集中的电影都是用户没有看过的,所以需要使用数据挖掘技术对现有的数据进行分析,目标是找出一个更加l准确的预测方案,来预测出用户对某一部电影的评分情况。1.1捆关工作为了产生精确的预测,研究者们提出了各种不同的算法,如协同过滤推荐算法、Bay臼ian网络技术、聚类技参作者简介:ì番磊(1986-),男,江苏南京人,南京大学计算机系硕士研究生,主要研究方向为人工智能2术、关联规则技术以及SlopeOne算法等技术。Typ臼,try是最早提出来的基于协同过泌的推荐系统,目标用户市要明确指出与自己行为比较类似的其他用户.GroupLens是基于用户评分的自动化协同过滤推荐系统,用于推荐电影和新闻.Ringo推荐系统和Vidoo推荐系统通过电子邮件的方式分别推荐音乐和电影。Bay臼iæ网络技术利用训练集创建相应的模型,模型用决策树表示,节点和地表示用户信息训练得到的模型非常小,所以对模型的应用非常快.这种方法适合于用户的兴趣爱好变化比较慢的场合。聚类技术将具有栩似兴趣爱好的用户分配到栩|同司的簇中,聚类产生之后预测目标用户对该商品的评价.由于聚类过程离线进行,所以在线的J推佳荐算法产生推荐的速度比较快。关联规则技术在零售业得到了广泛的应用,关联规则挖掘可以发现不同商品在销售过程中的相关性.基于关联规则的推荐算法根据生成的关联规则模型和用户当前的购买行为向用户产生推荐。关联规则模型的生成可以离线进行,因此可以保证有效地推荐系统的实时性要求。传统的协同过滤推荐通过用户的最近邻居产生最终的推荐的相关性,然后通过用户对相关项日的评分T预贺测用户对未评分项目的评分。SlopeOne算法是由DanielLa'Tlire教授在20历年提出,算法的主要思想是通过计算一组用户对一组项目的打分的平均差值,来获得一个相对合理的预测结果,这个算法的最大优点在于算法很简单,易于实现,执行效率高,同时推荐的准确性相对很高。1.2数据集1训练、集:格式:U臼ridIita'TlidIrating,其中userid范围为1到943,ita'Tlid范因为1到1682,评价以星等(1至5)来表示2测试集格式:useridIita'Tlid,其中userid范围为1到创3,ita'Tlid范围为1到1682,没有评价2.用户{言息:格式:useridIageI9朋derIoccupationIzip∞de3.电影信息格式:movieidImovietitleIreleæedateIvid四releasedate11MDbURLIunknownIActionIAdventureIAnimationIChildren'sICom耐ICrimeIDocumentaryIDrcmaIFætasyIFilm-NoirIHorrorIMusi臼IIMystayIRomæce罔ci-FiIThrillerIWarIW回ernI4.用户的职业:a才ministrator,artist,doctor,创ucator,engin臼r,entertainmer吭,献出Jtive,healthcare,homa'Tlåer,lawyer,libr甜甜,marketing,none,other,progrcmmer,retir创,回l田丁1an,scientist,stud朋t,tæhnicia门,writer,5.电影的种类:Action,Adventure,Animation,Children、Comooy,Crime,Documentary,Drar丁1a,Fæta:秽,Film-Noir,Horror,Musi叫,Mystery,Romæ饵,Sci-Fi,Thri川er,War,WI臼tern其中数据集是由943位用户对1682部电影的评分得到的,训练集train有八万条数据,测试集t臼t有二3万条数据,另外还有用户的年龄、职业、性别以及各部影片的相关信息。2.使用朴素贝叶斯算法实验首先要使用工具WEKA,由于在WEKA只支持ARFF格式,所以首先要将原文件转换为ARFF格式,另外我要将几个文件合成一个文件,所以整个转换过程分为以下几步:1)将原文件到如SQL臼rver2005数据库,即创建了对应的儿个衰,分别为:U四r、train,t田、item表2).使用白L的链接查闹功能将相关表的字段进行链接,形成train和t制的两个新的视图3).然后将查询出的视图导出为对应的CSV文件4份)5曰).过滤掉无关的属性,电影的URL,上映问期以及用户的邮政编号6).需要对某些属性进行离散化,年龄是连续值,范回是从1-100,两以将其离散化以便处理贝叶斯分类器是基于贝叶斯定理的,即P(YIX)=P(XIY)P(Y)/P(X),贝H↑十A斯定理中可以忽略,先验概2率非问Y川)可可.以通过计3算丰U训训|川|练集中属于每个类的甘训训i叫|纺挤练,、记录所占的比例很容易地估计,对类条件概2率~.P问(X川IY川)的估计,贝叶斯分类器也就是给定类标号y,然后在估计类条件概率时假设属性之间条件独立.那么:P(YIX)=P(XIY)P(Y)/P(X)=P(Y)*(P(Xily)*...*P(XdIY))/p(x).其中d为分类属性的个数,对于分类属性Xi,根据类y中属性伯等于xi的训练实例的比例来估计条件概率P(Xi=xiIY=y),找出P(YIX)的最大值.计算未知项×属于具有最高后延概率的类,应用到此处就是求:p(R,P(r,αωωfυingj阳M阳削IRllenu)=P(Rj刷,s)其中日甘口gilEm是对于给定I员的评分,R回归是已有的用户打分,简单的说就是算出某个特定用户给一个电影打1,2,3,4,5分的后验概率,然后取具有最大概率的那个评分类作为预测结果。当然在使用分类算法之前,数据必须先经过预处理的,我们现在使用的数据集是具有如下的形式:属性名Wåa类型UseridnominalFilmidnominalAgenumencGendernominal。∞upationnominalUnknownominalActionnominalAdventurenominalAnimationnominalChildr回nominalComooynominalCrimenominalDoωmentarynominal4DramanominalFantæynominalFilm-NoirnominalHorrornominalMusicalnominalMysterynominalRoméllcenominal5元i-FinominalThrilIernominalWanominalwesternnominal表2-1接下来,我们就可以使用贝叶斯分类器对训练集进行试验了。算浊|正确率MAEMSE朴素贝叶斯表2-2朴素贝叶斯分类法假定了类的条件相互独立,即给定元细的类析、号,假定属性的值可以有条件地相互独立。这一家丁简化了L十算。因此当假定成立时,与其他所有分类法相比,朴素贝叶斯分类法是最准确的。然后,在实践中,变量之间的依赖可能存在,就直11我们这里的用户对于不同影片的话1'-分是和其他用户的评分有关的,而且影片的不同属性之间也可能存在关联。所以使用贝Il~l~~听分类器进行预测并不是最理想的方案,我们试图改进它,比如将用户年龄离散化、归一化,将电影属性字段合成,最终的效果都不是很理想,正确率几乎没有提升,MAE,MSE也没有明显下降。3.使用协同过滤算法在Weka使用的分类算法得出的结果并不能令人满意,1王|为不管是朴素贝叶斯还是贝叶斯网络,他们都是基于分类的算法,也就是说只能按照rating的5个评分等级进行分类,比如朴素贝叶斯分类器得出的结果是5个评分等级的概率,然后它再将得到最高概率的那个评分预测为最终的值,但是这样就不可能得到一个精确的评分预测,所以我们使用贝叶斯分类算法时得出的MSE就会相当的大。而下面使用的协同过滤CCoII昂orativeFiItering)技术就可以得到精确的预测,它是推荐系统中应用最为广泛的技术之一。协同过滤技术可以分为三类:基于用户(User-b部副)的协同过滤:基于项目(Itern-b部副〉的协同过滤:基于棋型(Model-b昂a:D的协同过滤。这里主要讨论了前两种算法。基于用户的协同推荐算法随着用户数量的增多,计算量成线性力1]大,其性能会越来越差。而Itern-b部副方法也有一个基本的假设:能够引起用户兴趣的项,必定与其之前评分高的J9j、相似。这个假设也是与我们日常生活中的行为相一致的。向User-b部创方法类似,Itern-bæ;创方法需要同样的三个步骤:1)得到User-itern的评分数据:2)针对项的最近邻搜索,E!iJ对项进行相似度计算,例如,要对A和B进行项相似性计算,通常分为两步:1)找出同时对A和B1丁过分的细合:2)对这些组合进行相似度计算,常用的算法包指:皮尔森相关系数、余弦相似性、调整余弦相似性和条件概率等。;3)产生预测。但相对于U田r-bas创方法,Itern-ba:时方法最大的改进是提高了协同过滤方法的扩展性及性能。53.1User-Ba:时协同过滤算法User-ba:剧协同过滤推荐根据其他用户的观点产生对目标用户的推荐列表。它基于这样一个假设:如果用户对一些项的评分比较相似,则他们对其它项的评分也比较相似。协同过滤推荐系统使用统计技术搜索目标用户的若干最近邻居,然后