英语原文共 10 页
基于协同过滤的电影推荐系统
Ching-Seh (Mike) Wu
Dept. of Computer Science San Jose State University San Jose, CA, USA ching-seh, wu@sjsu.edu
Deepti Garg
Dept. of Computer Science San Jose State University San Jose, CA, USA deepti.garg@sjsu.edu
Unnathi Bhandary
Dept. of Computer Science San Jose State University San Jose, CA, USA unnathi.bhandary@sjsu.edu
摘要:随着业务需求的不断加快,人们越来越依赖从大量原始数据中提取有意义的信息来推动业务解决方案。数字推荐系统也是如此,这些系统正在成为诸如书籍,音乐,服装,电影,新闻文章,场所,公用事业等消费行业的标准。这些系统从用户收集信息以改进未来的建议。本文旨在通过使用Apache Mahout的两种协同过滤算法来描述电影推荐系统的实现。此外,本文还将重点分析数据,以便使用Python中的Matplotlib库深入了解电影数据集。
关键词:协同过滤,推荐系统,mahout,基于用户的推荐器,基于项目的推荐器
- 引言
推荐系统或推荐引擎是用于信息过滤的模型,其中它试图预测用户的偏好并基于这些偏好提供建议。这些系统现在已经变得越来越流行,并且如今在诸如电影,音乐,书籍,视频,服装,餐馆,食品,地方和其他公用事业的领域中被广泛使用。这些系统收集有关用户偏好和行为的信息,然后使用此信息来改进他们将来的建议。
许多公司正在利用推荐系统来增加用户交互并丰富用户的购物体验。推荐系统有几个好处,最重要的是客户满意度和收入。很多时候,客户倾向于根据他们之前的交易来查看所提供的建议,因为他们认为他们会找到更好的选择。如果这些建议根据用户的需求进行了微调,则客户将对他们的购买感到满意。因此,客户将再次使用此应用程序。由于客户经常使用这些应用程序,会产生大量收入,这就是许多电子商务组合正在转向改进其推荐引擎的原因。
虽然推荐系统很常见,开发提供良好和适当建议的系统是一项挑战。每个用户都有不同的偏好和喜欢。另外,用户的偏好取决于许多方面,例如他们的心情,场合,他们购买的原因等。如果网站或应用无法根据用户的喜好预测和提供合适的推荐,则用户是可能会停止使用该网站或应用程序。因此,公司总是需要改进他们的推荐系统。
本文的一个目标是设计一个电影推荐系统,该系统考虑各个用户给出的过去电影评级,以向用户提供建议。我们使用协同过滤算法和Apache Mahout框架实现了这个系统。第二个目标是比较基于用户的推荐系统和基于项目的推荐系统的性能和效率。
本文的结构如下:第一,简要概述一些相关的,在推荐系统的空间做了最新的研究进行讨论。其次,我们将介绍对协同过滤技术的理解。第三,将讨论使用Mahout的数据准备和数据分析方法。最后,将介绍对所用技术的定性评估。
- 概述
A.推荐系统
在本节中,我们将简要介绍不同类型的推荐系统。推荐系统主要有三种类型,即协作过滤、基于内容的过滤和混合系统。
协同过滤:协同过滤系统分析用户的行为和偏好,并根据与其他用户的相似性预测他们想要什么。协作过滤系统有两种:基于用户的推荐者和基于项目的推荐者。
基于内容的过滤:基于内容的系统考虑项目的描述和特性,以及用户提供建议的偏好。
混合系统:混合推荐系统是协作和基于内容的过滤方法的组合。在这类系统中,协作预测和基于内容的预测是分开执行的,然后将这两种技术的结果结合起来提供重新连接。B.Mahout
Apache MaOutt是基于Apache软件基金会的一个科学的、高度分析的库。它的目标是在集群、分类、协作过滤和频繁模式匹配等领域中实现免费、分布式和可扩展的先进机器学习算法。许多实现都使用ApacheHadoop平台。它包括强大的算法实现,如对数似然相似度、皮尔逊系数、余弦相似度等等。随着Mahout的不断增长,它还没有完全发展。不过,它仍然提供了一个完整的堆栈选项,可以将机器学习合并到由底层Hadoop平台管理的大数据上。
C.相关工作
多年来,许多重新连接系统都是使用协作、基于内容或混合过滤方法开发的。这些系统已经使用各种大数据和机器学习算法实现。
在[1]中,作者提出了一个协作式重新连接系统,该系统设计用于Hadoop平台,使用MapReduce框架。采用基于用户和基于项目的协同过滤技术,采用集相似性连接方法构建了该系统。
在[2]中,作者提出了一个使用协作过滤的电影重新连接系统,该系统将重点放在用户提供重新连接的评分上。该系统采用K均值算法,对电影进行分级排序。
在[4]中,作者提出了一个完全基于内容的电影重新连接系统来重新连接电影。该系统利用一个包含电影内容信息的神经网络来获取电影的特征并学习电影之间的相似性。电影是根据它们之间的相似性重新连接起来的。
在[7]中,作者实现了一个结合了基于用户和基于项目的协作过滤方法的重新连接系统。该系统是利用最近邻机器学习技术建立起来的,并开发了一种新的算法,将基于使用的和基于项的重新连接结合起来。
在研究的基础上,发现协同过滤是目前广泛使用的重建系统的方法之一。许多系统使用机器学习算法,例如使用k均值聚类、神经网络等来重新连接项目。
- 协同传送模型
这集中在用户给出的评分上,以提供重新联系。该系统是利用Hadoop平台之上的Mahout设计的。我们使用基于用户和基于项目的协作过滤技术,利用项目之间的相似性/相关性来构建这个系统。在本节中,我们将描述协作过滤的两种方法的复杂性。
- 使用基本筛选
基于用户的偏好在个性化系统的设计领域是非常重要的。这种方法假设用户的喜好在历史分析中不是随机的。这个过程从用户给某些人的评分(1-5)开始。
目录项。这些评级可以是隐式的或显式的。显式分级是指用户以一定的比例显式地对项目进行分级,或者表示项目的向上/向下缩略图。通常很难收集明确的评分,因为并非每个用户都对提供反馈很感兴趣。在这些场景中,我们根据他们的行为收集隐含的评级。例如,如果一个用户多次购买一个产品,它表示一个积极的偏好。就电影系统而言,我们可以暗示,如果用户观看整个电影,他/她对它有一定的吸引力。请注意,在确定隐含评级时没有明确的规则。接下来,对于每个用户,我们首先找到一些定义的最近邻。我们使用Pearson相关算法计算用户评分之间的相关性。假设两个用户的评分高度相关,那么这两个用户必须享受相似的项目,并使用产品将项目重新连接到用户。
- 基于项目的筛选
与基于用户的过滤方法不同,基于项目的方法关注的是用户喜欢的项目之间的相似性,而不是用户本身。最相似的项目是提前计算的。然后,对于重新连接,将与目标项目最相似的项目重新连接到用户。
图1 基于用户和基于项目的筛选
- 实施
在本节中,我们将描述如何实现我们的系统。
- 数据集
我们实验中使用的电影数据集是从YahooResearchWebScope数据库获得的。数据库提供两个文件,即yahoo!电影用户评级和雅虎!描述性内容信息,雅虎电影用户分级文件包含211231条记录,由用户ID、电影ID和分级组成。雅虎!电影描述性内容信息文件包含54058条记录,包括电影ID、片名、流派、导演、演员等。
- 数据清理
电影描述内容信息文件包含大约40列。我们的实验不需要大多数这些色谱柱,因此将其删除。数据集还包含许多需要解决的空白值和重复值。此外,电影用户评级文件中有一些电影条目与电影描述内容信息文件中的任何电影都不对应。删除这些条目以便于处理。
- 数据分析
我们分析了数据集,以深入了解可以使用Python中的Matplotlib库帮助开发我们的系统的电影数据集。我们确定了诸如评分最高的电影,评分最多的类型,每种类型的电影数量以及每个评级类别中评级的电影数量等模式,如下所示。
图2 最受欢迎的电影
图3 最受欢迎的流派
图4 每种类型的电影数量
图5 每个分级类别中的电影数
- 模型建立
我们使用Mahout库构建推荐系统。对于基于用户的过滤,除了PearsonCorrelation相似性外,我们还使用了用户相似性类,PearsonCorrelation相似性使用Pearson相关系数来确定用户评级之间的相似性,因此是首选项。图6提供了皮尔逊相关的数学公式。系数越高,两个用户的选择越相关。
图6 皮尔逊相关系数公式
用户邻域是通过使用另一种基于距离聚类的机器学习算法(nearestnuserneighborhood)计算的,该算法在程序代码中定义了n。最近邻算法搜索每个数据点周围的n个最近数据点,得到最相似的数据点,并将它们分组。
基于项目的过滤是使用mahout的项相似性类实现的。用于计算项目相似性的机器学习算法是对数相似性。由于项目是静态的,基于用户评分的相似性不会随着时间的推移而改变,我们可以预先计算它们并将它们离线存储。
基于项目的推荐程序的结果被加载到Hadoop分布式文件系统(HDFS)中,以具有可扩展的、抗故障的存储。每次在推荐过程中都必须计算基于用户的推荐结果,因为不同于用户提供的项目、评分。
- 模型评估
A.定性评价
本文构建的电影推荐系统有助于理解推荐系统的工作原理。为了评估系统产生的结果的准确性和相关性,我们对这两种方法进行了不同的分析。
图7 基于项目的推荐者的原始输出
我们通过将电影1和电影2的电影ID映射到它们的标题,比较图7中给出的基于项目的相似系数结果。使用python熊猫库,我们得到如图8所示的结果。从表中可以明显看出,相似的电影具有更高的相似性度量。
图8 电影相似性(基于项目)
对于基于用户的推荐系统,我们使用平均绝对差分推荐评价器对模型进行评价。我们将训练数据分为测试和训练样本。接下来,我们根据培训数据中指定的实际评分评估测试数据的评分预测。
图9显示了基于用户的过滤技术的原始输出。系统向用户(用户5)推荐10部电影,并返回与他口味最相似的最近邻居。对于推荐的每部电影,它还预测该用户(用户5)的收视率。我们得到的平均绝对差为0,这证明对推荐项目的评级所做的预测是100%准确的。图10显示了推荐电影的表,其中包含电影标题和预测的分级。
图9 来自基于用户的重设器的原始输出
图10 推荐电影和预测评分(基于用户)
B.常见问题评估
对于推荐系统,总是会提出以下问题。我们根据这些问题评估我们的系统,并提出解决这些问题的实现设计。
首先,新用户问题涉及到在推荐系统中添加新用户时的场景。他/她还没有为系统中的任何电影提供分级。这也称为用户冷启动。一个简单的可能的解决方案是向这个新用户推荐评级最高的电影或最近添加的电影。
其次,人们担心不推荐新产品。可以理解为项目冷启动问题。当新电影添加到系统中时,它没有任何关联的分级。如何发现和推荐?一个解决方案是推荐类似于顶级电影类型的电影。如果这部新电影属于那种类型,它就会被发现。然而,在这个解决方案中,我们需要建立一个基于电影类型的系统。
将这些已知问题分开,可以根据基础结构使用这两种方法中的任何一种。对于基于项目的,相似度计算是MXM(m:主要电影)订单中的很大一部分,但是由于它是静态的,所以我们可以离线计算,并且只在一段阈值时间后重新计算。另一方面,对于每一个用户来说,在运行时所做的工作是昂贵的,邻里是动态的,有来自不同用户的新评级。因此,前者需要缓存数据存储,后者需要专用的处理服务器。
- 结论与未来工作
本文采用协同过滤技术实现了一个电影推荐系统。该系统是使用ApacheMahout开发的,并考虑到电影的分级,以提供电影建议。
在未来的工作中,推荐系统可以使用混合过滤方法而不是协作方法来开发。最近的研究表明,混合动力系统更有效,并提供更准确的建议。因此,混合动力系统将是一种改进。我们的系统考虑用户推荐电影的评分。今后,电影的体裁、导演、演员等更多的特色也可以考虑,并提出建议。此外,还可以研究一个名为ApachePrediction10的新框架来开发该系统,而不是Mahout。ApachePrediction10是一个机器学习服务器,它使用ApacheHadoop、ApacheSpark、弹性搜索和ApacheHBase技术栈构建通用推荐系统。
参考文献
[1] A. V. Dev and A. Mohan, 'Recommendation system for big data applications base
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。