基于Apache Spark的增强型奇异协同过滤推荐系统
这是一篇关于推荐系统,基于内存的协同过滤,Apache Spark,分布式框架,MovieLens,MovieTweetings的论文, 主要内容为近年来,由于互联网用户数量的增加和互联网技术的进步,数据量以前所未有的速度爆炸式增长。这些用户不仅可以从互联网上获得数据,还可以通过Facebook,WhatsApp,QQ,微信,Twitter,YouTube等社交媒体服务,通过搜索,博客和发布图片和视频等各种活动生成大量数据。人们不断被来自社交媒体的电子邮件或消息所困扰。这将会导致信息超载,即由于存在太多信息而导致人们难以理解问题并做出决策。每分钟,娱乐媒体,视频监控摄像机,传感器,手机,电信设备,医疗保健数据库,商业交易,社交媒体以及机器对机器数据中的信息都会产生大量数据。克里斯安德森2006年在他名为“长尾巴”的书中提到,“我们正在离开信息时代,进入推荐时代”。推荐系统是向用户提供有兴趣物品建议的工具和技术。推荐系统提供的建议旨在帮助用户进行各种决策过程,例如在亚马逊,阿里巴巴和eBay网上购物时购买什么商品;在Google新闻和Yahoo!新闻上阅读哪些新闻报道;在Last.fm,Pandora和Spotify等在线音乐流媒体网站上收听什么音乐;在YouTube和Netflix上观看哪些视频或电影;阅读什么书或什么研究论文,甚至推荐哪些人给其他社交网络如Facebook等。从20多年前由马龙,格兰特,图巴克,布罗布斯特和科恩创建的第一个使用社交过滤的系统Information Lens开始,在线推荐书籍,歌曲或电影已经走过了很长的历史。如今,推荐系统可以在我们经常访问的大多数基于互联网的应用程序中找到,帮助我们找到我们可能感兴趣的信息,同时让我们避免信息过载的问题。目前,推荐系统已经成为不同行业中大多数大公司(例如,亚马逊,Netflix,Google,Facebook,YouTube和Spotify)的必备工具。推荐系统可以为提供商带来的收入的增长,为用户带来体验质量的提升。在Netflix上,2/3的电影都是推荐观看的,推荐为谷歌的新闻点击率(CTR)提高了 38%,在亚马逊35%的销售额来自推荐,在ChoiceStream,如果能找到他们喜欢的音乐,28%的人会购买更多的音乐。推荐系统可以大致分为四大类,即基于内容的推荐系统,基于协作过滤的推荐安系统,基于知识的推荐系统和混合的推荐系统。其中,协作过滤算法(CF)可以分为两大类,称为基于模型的方法和基于记忆的方法。在CF方法中,基于记忆的方法既简单又有效。虽然CF方法已被许多现实世界的巨头组织广泛使用,包括谷歌,Netflix和亚马逊,但没有足够的可以成为用于提供推荐的细节。CF技术使用评分数据库(用户-项目矩阵)。传统的基于记忆的CF技术通过利用共同评分项目上的评分来计算两个用户之间的相似度,而忽略仅从任一用户观察到的评分。我们称这些比较评级为双重评级,而非比较评级为单一评级。单一评级协同过滤试图把除了双重评级之外,那些由单一方面用户提供的评级也包含进来。这种技术首先估计单数评级的未分级分数,将其转化为双分级。然后他们执行CF过程。尽管该技术试图通过结合单数评级来解决现有CF的问题,但该方法还忽略了另一个问题,即由不相似的用户或邻居提供的评级。传统的CF和单数CF产生评级预测时都丢弃了由不相似的用户或邻居提供的评级。我们提出的方法与其他方法不同,因为它不仅利用相似用户提供的评级,而且利用不相似的用户或邻居提供的评级。来自不相似用户的评分对所产生的推荐质量同样具有重要的作用。其主要目标是在计算每个用户的相似度并为目标用户生成一个预测时,使用不相似的用户或邻居提供的评级。大多数基于CF的算法都存在数据稀疏性,可扩展性和冷启动的问题。为了克服基于内存的推荐算法的这些缺点,一系列研究集中在增强型奇异协同过滤Enhanced Singular Collaborative Filtering(ESCF)上,旨在寻求更加准确和可扩展的方法。在现实世界的数据集中,用户可能通常只对数千或数百万项目中的一小部分项目提供反馈评级,这往往会导致用户项目评分矩阵变得非常稀疏。当两个用户共同评分的项目数量很少,无法计算两个用户之间的相似度时,像奇异协同过滤这样的方法通过转换单一评级至双重评级来解决数据稀疏和冷启动的问题,然后计算相似度。这种方法可以为数据集生成更多的评分,并在一定程度上解决了数据稀疏性问题,提高了预测的准确性。但是,此类方法在生成预测以提供高质量的推荐时也没有包含不不相似的用户或邻居提供的评分。为了克服这个限制,本文所提出的ESCF方法利用由相似用户以及不相似用户提供的所有评级来为目标用户提供高质量的推荐。我们还进一步证明,我们提出的方法可以比现有的传统CF方法更好地在冷启动条件下工作。在CF算法中,计算用户的相似性是昂贵的,因为需要搜索整个数据库以找到目标用户的相似邻居。它的计算量随着项目和用户数量的增长而线性增长。因此,许多算法要么牺牲了速度,要么需要额外的资源,如计算能力或内存。这就是所谓的可扩展性问题,这也是协作过滤方法的主要挑战之一。我们通过在分布式并行计算框架Apache Spark中实现提出的算法解决了可伸缩性问题。本论文的主要贡献是利用包括单一评分(仅由单一方面用户提供的评级)和不相似的用户或邻居提供的评分在内的所有评分方法来解决推荐系统中准确性,稀疏性和冷启动方面的挑战。本文的贡献如下:(1)基于ESCF(Enhanced Singular Collaborative Filtering)的推荐系统(2)提高系统在数据稀疏和冷启动条件下的性能(3)提高了准确性和(4)分布式实现和降低计算复杂度我们提出的ESCF算法是基于Apache Spark平台,使用Scala编程语言实现的。Apache Spark是一款通用的开源数据处理引擎,适用于各种环境。为了展示我们提出的方法的有效性,在实验中使用了两个基准数据集(MovieLens和MovieTweetings)。MovieLens数据集是推荐研究中使用最广泛的数据集。它包含100,000个评分,评分在1至5之间。这些评分是943个用户对1,682部电影给出的评分。MovieTweetings则是一个由Twitter上结构合理的推文中包含的电影评级组成的数据集。我们已经使用了前15万封推文。它包含150,000个评分,评分在1至10之间。这些评分是21645个用户对12989部电影给出的评分。在我们的实验中,我们使用那些至少评论过50部电影的用户的评分。我们使用目前学术研究中用来评价推荐系统最流行的方法做了一个离线实验,因为这种方法相对简单并且容易实现,而且能够更快地进行基准测试和比较推荐方法。为了执行离线实验,我们首先将我们的数据集随机分成80%的训练集和20%的测试集,分别用于建立推荐模型和评估生成的推荐。然后,我们基于相同数据集上的输出比较不同方法的RMSE和MAE。因此,一旦收集到数据,评估就不受任何外部变量的影响。我们将传统的CF和奇异协同过滤(SingCF)的错误率与增强型CF(ECF)和增强型奇异协同过滤(ESCF)的错误率进行比较。相似邻居范围的大小K从5,10,20,40到60不等。所有实验分两个阶段进行:首先,我们在单独的工作站上进行实验。在实验的第二阶段,我们构建了一个集群计算平台。第一个观察到的结果是所有方法的性能都会随着邻居数量的增加而提高,这也导致了运行时间和内存需求的显着增加。例如,比较使用5和60个邻居的CF,RMSE从1.2965降低到1.0754。第二个观察到的结果是,当利用不相似用户提供的评级时,我们必须考虑更多的邻居来获得更好的性能。例如,具有40个邻居的不相似用户的ECF的性能远远好于具有10个邻居的ECF的性能。从结果中得出的另一个结论是基于奇异协同过滤的方法优于其他传统CF方法。这与SingCF的研究结果一致。总体而言,利用不相似用户(ESCF和ECF)评级的方法的RMSE和MAE要优于不考虑来自不相似用户(CF和SingCF)的评级的方法。就结果而言,我们可以得出结论:将来单一评级与来自于不相似用户的传统协同过滤相结合可以改善基于用户的协同过滤方法的结果。更具体地说,我们已经证明,将基于不相似用户的CF或SingCF和基于相似性的CF或SingCF相结合可以获得最佳结果。最后,所提出的ESCF方法可以获得比传统CF方法更好的结果,因为它利用不相似用户给出的评级以及单一评级。我们还对冷启动用户进行了实验,以评估MovieLens数据集中冷启动条件时推荐方法的性能。冷启动用户是其评分少于5个项目的用户。通常,用户仅为小部分项目提供评分。因此,对冷启动用户的高质量推荐变得非常重要。在MovieLens数据集中,每个用户至少提供了 20个项目的评分,因此我们通过为每个用户随机选择5个评分来人为创建冷启动条件。实验表明,传统的CF方法在冷启动条件下可以产生70%左右的预测,而我们提出的方法可以在相同的冷启动条件下产生高达100%的预测。此外,实验表明,我们提出的方法可以产生更好的MAE和RMSE值,这与冷启动用户的传统CF和奇异CF方法相同。因此,我们提出的方法可以比传统的CF方法更好地处理冷启动条件。虽然所提出的推荐方法提高了推荐的质量,但其缺点在于它带来了计算复杂度的额外成本。为了减少缺失值的计算复杂度,用户和邻居生成之间的相似度的计算是离线的。我们进一步使用Apache Spark平台并行计算多个实例,这样可以加快计算速度,使算法更加适用于大规模数据集。实验表明,该方法可以超越一些传统的基于内存的推荐方法和基于奇异CF的推荐方法。通过实验,我们所提出的方法可以在数据稀疏且存在冷启动条件的情况下提高现有CF方法的性能。尽管本文着重于协作过滤,但对于具有矩阵形式的稀疏数据,本文提出的方法是非常普遍的。
基于分布式框架的抽奖营销系统设计与实现
这是一篇关于抽奖营销,分布式框架,Netty,Zookeeper,RPC的论文, 主要内容为互联网的普及尤其是移动互联网的快速发展,改变了人们的生活方式,给人们的生活带来了便捷,同时还深刻影响着消费者的消费行为和商业环境,此外,当前层出不穷的新媒体也给企业商家的经营发展带来了冲击与机遇,这就需要企业商家加强营销对策的升级和营销模式的创新。抽奖营销是经典且行之有效的营销手段之一,也是投资回报率最高的营销手段之一,其用户参与度高、成本低、传播速度爆发增长快、潜力大、价值高,对用户有着直接的吸引力。抽奖营销系统的设计与实现在运营上可以为企业商家扩大受众用户群体,提高用户粘性与活跃度,利用新媒体的分享转发形成用户传播,收获拓展新用户,宣传品牌,推广产品,促进销售,拉动业务增长,节省成本等。本文的抽奖营销系统是一个分布式架构应用,采用微服务的整体架构,底层使用自行实现的分布式RPC框架构建服务,该RPC框架是为解耦部门的庞杂业务服务而开发的,相对轻量级且简单易用,满足大吞吐量和高并发场景的动态扩容要求。论文首先对系统应用到的技术做了介绍,包括RPC远程过程调用技术、Netty网络通信框架、Zookeeper分布式协调中间件、Redis缓存、CDN内容分发网络和React前端框架。然后对系统进行需求分析,确定了系统的目标用户为系统运营管理人员和参与抽奖的普通用户,得到了系统的功能性需求和非功能性需求。接着对系统进行了概要设计,确定了系统整体架构和底层分布式RPC框架的流程架构,设计了数据库表结构,又将系统分成三子系统:底层分布式RPC框架子系统、用户移动端抽奖子系统、后台管理子系统,并对每个子系统做了模块划分。再有就是对系统的核心模块做了详细设计与实现的阐述,这些核心模块主要有底层分布式RPC框架子系统的数据编解码与序列化模块、服务端发布注册模块、客户端调用代理模块;用户移动端抽奖子系统的增加抽奖机会模块、用户抽奖模块;后台管理子系统的抽奖活动管理模块、奖品管理模块和奖池分配查看模块。并在实现过程中,使用流程图、类图和时序图的形式详述了相应模块的主要流程、主要类及其关系、主要功能业务逻辑的实现过程。最后对系统进行了测试验证,包括功能性测试和非功能性测试。目前系统已经投入生产环境使用,开展了多次抽奖营销活动,很好地支持了公司业务的发展,已经成为部门用来拉动用户、提高活跃度和销售保险产品的主要运营手段,并且每次抽奖营销活动的开展都达到了获客、拓客、流量转化、宣传品牌、扩大业务、为公司创造价值的目的。
基于分布式框架的抽奖营销系统设计与实现
这是一篇关于抽奖营销,分布式框架,Netty,Zookeeper,RPC的论文, 主要内容为互联网的普及尤其是移动互联网的快速发展,改变了人们的生活方式,给人们的生活带来了便捷,同时还深刻影响着消费者的消费行为和商业环境,此外,当前层出不穷的新媒体也给企业商家的经营发展带来了冲击与机遇,这就需要企业商家加强营销对策的升级和营销模式的创新。抽奖营销是经典且行之有效的营销手段之一,也是投资回报率最高的营销手段之一,其用户参与度高、成本低、传播速度爆发增长快、潜力大、价值高,对用户有着直接的吸引力。抽奖营销系统的设计与实现在运营上可以为企业商家扩大受众用户群体,提高用户粘性与活跃度,利用新媒体的分享转发形成用户传播,收获拓展新用户,宣传品牌,推广产品,促进销售,拉动业务增长,节省成本等。本文的抽奖营销系统是一个分布式架构应用,采用微服务的整体架构,底层使用自行实现的分布式RPC框架构建服务,该RPC框架是为解耦部门的庞杂业务服务而开发的,相对轻量级且简单易用,满足大吞吐量和高并发场景的动态扩容要求。论文首先对系统应用到的技术做了介绍,包括RPC远程过程调用技术、Netty网络通信框架、Zookeeper分布式协调中间件、Redis缓存、CDN内容分发网络和React前端框架。然后对系统进行需求分析,确定了系统的目标用户为系统运营管理人员和参与抽奖的普通用户,得到了系统的功能性需求和非功能性需求。接着对系统进行了概要设计,确定了系统整体架构和底层分布式RPC框架的流程架构,设计了数据库表结构,又将系统分成三子系统:底层分布式RPC框架子系统、用户移动端抽奖子系统、后台管理子系统,并对每个子系统做了模块划分。再有就是对系统的核心模块做了详细设计与实现的阐述,这些核心模块主要有底层分布式RPC框架子系统的数据编解码与序列化模块、服务端发布注册模块、客户端调用代理模块;用户移动端抽奖子系统的增加抽奖机会模块、用户抽奖模块;后台管理子系统的抽奖活动管理模块、奖品管理模块和奖池分配查看模块。并在实现过程中,使用流程图、类图和时序图的形式详述了相应模块的主要流程、主要类及其关系、主要功能业务逻辑的实现过程。最后对系统进行了测试验证,包括功能性测试和非功能性测试。目前系统已经投入生产环境使用,开展了多次抽奖营销活动,很好地支持了公司业务的发展,已经成为部门用来拉动用户、提高活跃度和销售保险产品的主要运营手段,并且每次抽奖营销活动的开展都达到了获客、拓客、流量转化、宣传品牌、扩大业务、为公司创造价值的目的。
基于分布式框架的抽奖营销系统设计与实现
这是一篇关于抽奖营销,分布式框架,Netty,Zookeeper,RPC的论文, 主要内容为互联网的普及尤其是移动互联网的快速发展,改变了人们的生活方式,给人们的生活带来了便捷,同时还深刻影响着消费者的消费行为和商业环境,此外,当前层出不穷的新媒体也给企业商家的经营发展带来了冲击与机遇,这就需要企业商家加强营销对策的升级和营销模式的创新。抽奖营销是经典且行之有效的营销手段之一,也是投资回报率最高的营销手段之一,其用户参与度高、成本低、传播速度爆发增长快、潜力大、价值高,对用户有着直接的吸引力。抽奖营销系统的设计与实现在运营上可以为企业商家扩大受众用户群体,提高用户粘性与活跃度,利用新媒体的分享转发形成用户传播,收获拓展新用户,宣传品牌,推广产品,促进销售,拉动业务增长,节省成本等。本文的抽奖营销系统是一个分布式架构应用,采用微服务的整体架构,底层使用自行实现的分布式RPC框架构建服务,该RPC框架是为解耦部门的庞杂业务服务而开发的,相对轻量级且简单易用,满足大吞吐量和高并发场景的动态扩容要求。论文首先对系统应用到的技术做了介绍,包括RPC远程过程调用技术、Netty网络通信框架、Zookeeper分布式协调中间件、Redis缓存、CDN内容分发网络和React前端框架。然后对系统进行需求分析,确定了系统的目标用户为系统运营管理人员和参与抽奖的普通用户,得到了系统的功能性需求和非功能性需求。接着对系统进行了概要设计,确定了系统整体架构和底层分布式RPC框架的流程架构,设计了数据库表结构,又将系统分成三子系统:底层分布式RPC框架子系统、用户移动端抽奖子系统、后台管理子系统,并对每个子系统做了模块划分。再有就是对系统的核心模块做了详细设计与实现的阐述,这些核心模块主要有底层分布式RPC框架子系统的数据编解码与序列化模块、服务端发布注册模块、客户端调用代理模块;用户移动端抽奖子系统的增加抽奖机会模块、用户抽奖模块;后台管理子系统的抽奖活动管理模块、奖品管理模块和奖池分配查看模块。并在实现过程中,使用流程图、类图和时序图的形式详述了相应模块的主要流程、主要类及其关系、主要功能业务逻辑的实现过程。最后对系统进行了测试验证,包括功能性测试和非功能性测试。目前系统已经投入生产环境使用,开展了多次抽奖营销活动,很好地支持了公司业务的发展,已经成为部门用来拉动用户、提高活跃度和销售保险产品的主要运营手段,并且每次抽奖营销活动的开展都达到了获客、拓客、流量转化、宣传品牌、扩大业务、为公司创造价值的目的。
基于Apache Spark的增强型奇异协同过滤推荐系统
这是一篇关于推荐系统,基于内存的协同过滤,Apache Spark,分布式框架,MovieLens,MovieTweetings的论文, 主要内容为近年来,由于互联网用户数量的增加和互联网技术的进步,数据量以前所未有的速度爆炸式增长。这些用户不仅可以从互联网上获得数据,还可以通过Facebook,WhatsApp,QQ,微信,Twitter,YouTube等社交媒体服务,通过搜索,博客和发布图片和视频等各种活动生成大量数据。人们不断被来自社交媒体的电子邮件或消息所困扰。这将会导致信息超载,即由于存在太多信息而导致人们难以理解问题并做出决策。每分钟,娱乐媒体,视频监控摄像机,传感器,手机,电信设备,医疗保健数据库,商业交易,社交媒体以及机器对机器数据中的信息都会产生大量数据。克里斯安德森2006年在他名为“长尾巴”的书中提到,“我们正在离开信息时代,进入推荐时代”。推荐系统是向用户提供有兴趣物品建议的工具和技术。推荐系统提供的建议旨在帮助用户进行各种决策过程,例如在亚马逊,阿里巴巴和eBay网上购物时购买什么商品;在Google新闻和Yahoo!新闻上阅读哪些新闻报道;在Last.fm,Pandora和Spotify等在线音乐流媒体网站上收听什么音乐;在YouTube和Netflix上观看哪些视频或电影;阅读什么书或什么研究论文,甚至推荐哪些人给其他社交网络如Facebook等。从20多年前由马龙,格兰特,图巴克,布罗布斯特和科恩创建的第一个使用社交过滤的系统Information Lens开始,在线推荐书籍,歌曲或电影已经走过了很长的历史。如今,推荐系统可以在我们经常访问的大多数基于互联网的应用程序中找到,帮助我们找到我们可能感兴趣的信息,同时让我们避免信息过载的问题。目前,推荐系统已经成为不同行业中大多数大公司(例如,亚马逊,Netflix,Google,Facebook,YouTube和Spotify)的必备工具。推荐系统可以为提供商带来的收入的增长,为用户带来体验质量的提升。在Netflix上,2/3的电影都是推荐观看的,推荐为谷歌的新闻点击率(CTR)提高了 38%,在亚马逊35%的销售额来自推荐,在ChoiceStream,如果能找到他们喜欢的音乐,28%的人会购买更多的音乐。推荐系统可以大致分为四大类,即基于内容的推荐系统,基于协作过滤的推荐安系统,基于知识的推荐系统和混合的推荐系统。其中,协作过滤算法(CF)可以分为两大类,称为基于模型的方法和基于记忆的方法。在CF方法中,基于记忆的方法既简单又有效。虽然CF方法已被许多现实世界的巨头组织广泛使用,包括谷歌,Netflix和亚马逊,但没有足够的可以成为用于提供推荐的细节。CF技术使用评分数据库(用户-项目矩阵)。传统的基于记忆的CF技术通过利用共同评分项目上的评分来计算两个用户之间的相似度,而忽略仅从任一用户观察到的评分。我们称这些比较评级为双重评级,而非比较评级为单一评级。单一评级协同过滤试图把除了双重评级之外,那些由单一方面用户提供的评级也包含进来。这种技术首先估计单数评级的未分级分数,将其转化为双分级。然后他们执行CF过程。尽管该技术试图通过结合单数评级来解决现有CF的问题,但该方法还忽略了另一个问题,即由不相似的用户或邻居提供的评级。传统的CF和单数CF产生评级预测时都丢弃了由不相似的用户或邻居提供的评级。我们提出的方法与其他方法不同,因为它不仅利用相似用户提供的评级,而且利用不相似的用户或邻居提供的评级。来自不相似用户的评分对所产生的推荐质量同样具有重要的作用。其主要目标是在计算每个用户的相似度并为目标用户生成一个预测时,使用不相似的用户或邻居提供的评级。大多数基于CF的算法都存在数据稀疏性,可扩展性和冷启动的问题。为了克服基于内存的推荐算法的这些缺点,一系列研究集中在增强型奇异协同过滤Enhanced Singular Collaborative Filtering(ESCF)上,旨在寻求更加准确和可扩展的方法。在现实世界的数据集中,用户可能通常只对数千或数百万项目中的一小部分项目提供反馈评级,这往往会导致用户项目评分矩阵变得非常稀疏。当两个用户共同评分的项目数量很少,无法计算两个用户之间的相似度时,像奇异协同过滤这样的方法通过转换单一评级至双重评级来解决数据稀疏和冷启动的问题,然后计算相似度。这种方法可以为数据集生成更多的评分,并在一定程度上解决了数据稀疏性问题,提高了预测的准确性。但是,此类方法在生成预测以提供高质量的推荐时也没有包含不不相似的用户或邻居提供的评分。为了克服这个限制,本文所提出的ESCF方法利用由相似用户以及不相似用户提供的所有评级来为目标用户提供高质量的推荐。我们还进一步证明,我们提出的方法可以比现有的传统CF方法更好地在冷启动条件下工作。在CF算法中,计算用户的相似性是昂贵的,因为需要搜索整个数据库以找到目标用户的相似邻居。它的计算量随着项目和用户数量的增长而线性增长。因此,许多算法要么牺牲了速度,要么需要额外的资源,如计算能力或内存。这就是所谓的可扩展性问题,这也是协作过滤方法的主要挑战之一。我们通过在分布式并行计算框架Apache Spark中实现提出的算法解决了可伸缩性问题。本论文的主要贡献是利用包括单一评分(仅由单一方面用户提供的评级)和不相似的用户或邻居提供的评分在内的所有评分方法来解决推荐系统中准确性,稀疏性和冷启动方面的挑战。本文的贡献如下:(1)基于ESCF(Enhanced Singular Collaborative Filtering)的推荐系统(2)提高系统在数据稀疏和冷启动条件下的性能(3)提高了准确性和(4)分布式实现和降低计算复杂度我们提出的ESCF算法是基于Apache Spark平台,使用Scala编程语言实现的。Apache Spark是一款通用的开源数据处理引擎,适用于各种环境。为了展示我们提出的方法的有效性,在实验中使用了两个基准数据集(MovieLens和MovieTweetings)。MovieLens数据集是推荐研究中使用最广泛的数据集。它包含100,000个评分,评分在1至5之间。这些评分是943个用户对1,682部电影给出的评分。MovieTweetings则是一个由Twitter上结构合理的推文中包含的电影评级组成的数据集。我们已经使用了前15万封推文。它包含150,000个评分,评分在1至10之间。这些评分是21645个用户对12989部电影给出的评分。在我们的实验中,我们使用那些至少评论过50部电影的用户的评分。我们使用目前学术研究中用来评价推荐系统最流行的方法做了一个离线实验,因为这种方法相对简单并且容易实现,而且能够更快地进行基准测试和比较推荐方法。为了执行离线实验,我们首先将我们的数据集随机分成80%的训练集和20%的测试集,分别用于建立推荐模型和评估生成的推荐。然后,我们基于相同数据集上的输出比较不同方法的RMSE和MAE。因此,一旦收集到数据,评估就不受任何外部变量的影响。我们将传统的CF和奇异协同过滤(SingCF)的错误率与增强型CF(ECF)和增强型奇异协同过滤(ESCF)的错误率进行比较。相似邻居范围的大小K从5,10,20,40到60不等。所有实验分两个阶段进行:首先,我们在单独的工作站上进行实验。在实验的第二阶段,我们构建了一个集群计算平台。第一个观察到的结果是所有方法的性能都会随着邻居数量的增加而提高,这也导致了运行时间和内存需求的显着增加。例如,比较使用5和60个邻居的CF,RMSE从1.2965降低到1.0754。第二个观察到的结果是,当利用不相似用户提供的评级时,我们必须考虑更多的邻居来获得更好的性能。例如,具有40个邻居的不相似用户的ECF的性能远远好于具有10个邻居的ECF的性能。从结果中得出的另一个结论是基于奇异协同过滤的方法优于其他传统CF方法。这与SingCF的研究结果一致。总体而言,利用不相似用户(ESCF和ECF)评级的方法的RMSE和MAE要优于不考虑来自不相似用户(CF和SingCF)的评级的方法。就结果而言,我们可以得出结论:将来单一评级与来自于不相似用户的传统协同过滤相结合可以改善基于用户的协同过滤方法的结果。更具体地说,我们已经证明,将基于不相似用户的CF或SingCF和基于相似性的CF或SingCF相结合可以获得最佳结果。最后,所提出的ESCF方法可以获得比传统CF方法更好的结果,因为它利用不相似用户给出的评级以及单一评级。我们还对冷启动用户进行了实验,以评估MovieLens数据集中冷启动条件时推荐方法的性能。冷启动用户是其评分少于5个项目的用户。通常,用户仅为小部分项目提供评分。因此,对冷启动用户的高质量推荐变得非常重要。在MovieLens数据集中,每个用户至少提供了 20个项目的评分,因此我们通过为每个用户随机选择5个评分来人为创建冷启动条件。实验表明,传统的CF方法在冷启动条件下可以产生70%左右的预测,而我们提出的方法可以在相同的冷启动条件下产生高达100%的预测。此外,实验表明,我们提出的方法可以产生更好的MAE和RMSE值,这与冷启动用户的传统CF和奇异CF方法相同。因此,我们提出的方法可以比传统的CF方法更好地处理冷启动条件。虽然所提出的推荐方法提高了推荐的质量,但其缺点在于它带来了计算复杂度的额外成本。为了减少缺失值的计算复杂度,用户和邻居生成之间的相似度的计算是离线的。我们进一步使用Apache Spark平台并行计算多个实例,这样可以加快计算速度,使算法更加适用于大规模数据集。实验表明,该方法可以超越一些传统的基于内存的推荐方法和基于奇异CF的推荐方法。通过实验,我们所提出的方法可以在数据稀疏且存在冷启动条件的情况下提高现有CF方法的性能。尽管本文着重于协作过滤,但对于具有矩阵形式的稀疏数据,本文提出的方法是非常普遍的。
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设小屋 ,原文地址:https://bishedaima.com/lunwen/49993.html