本文是计算机论文,本文首先介绍了推荐系统和大数据平台的使用情况与研究现状,然后对个性化推荐系统的架构及具体推荐流程作了详细介绍,并且继续介绍了降维、k维二叉搜索树和聚类的相关技术和背景,接着对Spark平台的组织架构和工作原理进行了说明,最后阐述了协同过滤推荐算法的工作流程。在以上前提下,本文针对基于用户的(User-Based)协同过滤推荐算法进行了三个部分的研究与优化,一是设计了基于改进的K-means聚类和降维的PK-CF推荐算法,二是基于Spark平台设计了PK-CF算法的并行化法案,三是将改进后的算法与音乐推荐场景相结合进行实际应用,开发了一个简单的音乐推荐的原型系统。各部分的详细研究内容如下:(1)在引入K-means聚类算法前,考虑到K-means算法随机选择初始质心可能导致结果不是全局最优的问题,本文基于k维树设计了新的初始质心选择算法。最后把协同过滤推荐算法与降维和聚类算法融合,设计实现了PK-CF算法。本文将PK-CF算法与现实生活中音乐推荐进行结合,利用SpringBoot框架开发了一个简易的音乐推荐系统,在对系统的需求和功能进行全面的分析的基础上,设计了推荐系统完整的框架。
......
第一章绪论
本文主要进行了三个部分的研究,一是改进K-means聚类算法并应用其对协同过滤推荐算法加以改进,二是基于Spark平台将改进后推荐算法做并行化设计,三是将改进后的协同过滤算法应用到音乐推荐的业务中进行系统实现。各部分的详细研究内容如下:1)对协同过滤算法的改进与实现(1)本文对基于用户和基于项目的两种协同过滤算法的原理及步骤做了详细的研究,并分析了在使用协同过滤算法进行个性化推荐时存在的问题,例如最近邻居范围寻找耗时长问题。(2)为解决评分矩阵空值过多问题,本文将降维思想与协同过滤算法进行融合,采用PCA(主成分分析)降维的方法进行数据的预处理,缓解评分数据稀疏带来的影响,并提出通过聚类来解决最近邻居集搜索耗时长的问题。(3)在引入K-means聚类算法前,为解决K-means算法初始质心随机选择带来的缺陷,本文基于k维树设计了新的初始质心选择算法来保证最终的聚类质量。(4)最后设计实现了新的协同过滤推荐算法PK-CF,该算法是以PCA和改进后的K-means算法为基础的。2)基于Spark的PK-CF算法并行化设计本文分三步完成了对PK-CF算法做基于Spark平台的并行化设计方案,采用了Spark的RDD机制和HDFS文件系统。采用Java语言进行系统实现,并进行了系统的测试,给出了部分实现与测试效果,Java版本号为JDK1.8.0.131。在开发音乐推荐系统的过程中设计了采集新用户喜好曲风的功能,用于产生初期的推荐列表,此功能较好的缓解了“冷启动”问题。
.......
第二章相关技术背景知识概述
2.1个性化推荐系统及协同过滤推荐技术
从图2.1中可以看到一个个性化推荐系统被分为数据平台、算法模型、模型服务和系统四个层次。数据平台层是个性化推荐系统的基础层,主要进行数据收集与数据存储两项工作,数据收集就是使用各种数据处理平台将数据转换或者剔除部分数据,把原始数据变成可用数据。数据存储就是将数据采集阶段或者上层产生的数据存储到不同类型的存储系统中,供算法模型层使用。算法模型层是个性化推荐系统的核心层,因为具体业务场景各不相同,能否选择合适的推荐算法进行推荐将直接影响最终的推荐质量。模型服务层受算法模型层和数据平台层影响,算法模型层利用推荐算法训练分析数据平台层提供的数据,产生具体的人物画像或者物品画像模型。系统层会直接与用户进行交互,分析当前用户行为匹配使用算法模型层提供的模型进行个性化的推荐[19][20]。现实生活中,一个群体在过去喜欢相似物品,这个群体将来仍会选择相似的物品。协同过滤推荐即是在海量用户中过滤掉大部分用户,留下来的用户都与目标用户兴趣相投,被留下的用户在协同过滤中成为目标用户的邻居。将邻居们喜欢的物品按照一定规则进行排序形成推荐目录推荐给当前用户[22][23]。这里需要解决两个问题,一是如何寻找与当前用户喜好相似的用户群,二是如何将用户群喜欢的物品进行排序形成推荐目录
个性化推荐系统架构图
2.2降维及其相关技术
在数据挖掘的过程中通常会需要处理一些高维的数据集,当我们在处理高维数据的时候通常出现数据点间距离难以计算、特征冗余和数据稀疏等问题,基本上所有的数据挖掘方法都需要面对这些问题,它们被称为“维度灾难”。针对这些问题,研究人员提出了降维的思想,原理就是通过某种映射方法将数据点从高维空间转化到低维空间上。目前降维的算法有很多,合理使用降维算法将能够消除在高维空间由于特征线性相关造成的冗余数据,也可以消除噪音数据,提高最终的准确度,还可以找到数据内部最根本的结构特征[29]。在现实生活中“物以类聚,人以群分”的现象非常普遍,同一圈子中的人或者物都具有很强的相似性。在数据挖掘过程中,聚类的作用就是将一个对象集合根据一定的评判标准(兴趣相似)划分成不同的小的对象集合,每个小集合中的对象具有相似的属性。数据经过聚类后,处在同一个簇内的数据都具有很强的相似性,不处于同一个簇中的数据相似性比较小。聚类分析可以看做一种分类方法,但与我们日常生活中将物品分类不同,聚类分析缺少表示分类信息的标签,就是不告诉我们最终被分成的簇要具有什么样的特征[33]。进行聚类分析的时候不需要关心聚类结束后各个簇是什么,只需要将相似的数据划分到同一个簇中。所以对于某个聚类算法来说,其要点之一就是根据实际情况选择合适的相似度计算方法来计算对象间的相似度。
User-based协同过滤推荐算法举例
第三章融合降维与聚类的协同过滤推荐算法设计与并行化.................17
3.1传统协同过滤推荐算法分析...............17
3.2融合降维与聚类的协同过滤推荐算法设计................21
3.2基本思路....................21
3.3融合降维与聚类算法的协同过滤推荐算法描述................25
3.4基于Spark平台的PK-CF算法的并行化设计..........................26
第四章PK-CF算法在音乐推荐系统中的应用................35
4.1音乐推荐系统功能需求分析...............35
4.2音乐推荐系统设计...............36
第五章总结与展望....................47
....
第四章PK-CF算法在音乐推荐系统中的应用
4.1音乐推荐系统功能需求分析
伴随着互联网的高速发展,推荐技术也愈发成熟,例如淘宝的“千人千面”,腾讯视频网站的“猜你喜欢”等等,可见在当今互联网的主流产品中推荐技术扮演着非常重要的角色。工作和学习的压力对人心情的影响愈加明显,音乐是很多人缓解烦躁情绪的途径之一,人们在挑选自己喜欢的音乐时,往往会因为音乐风格的繁杂无法选到自己想听的音乐。本文尝试运用PK-CF算法开发一个简单的音乐推荐网站,用来进一步验证本文研究结果的准确度与实用性。主要包含以下基础功能:(1)注册登录:推荐是根据用户ID进行推荐,所以当新用户使用该系统时需要先注册,才能被系统进行行为分析进而推荐音乐;注册过的用户使用系统需要登录。(2)喜好曲风收集:新用户登录时系统中并没有该用户的行为信息,所以需要在第一次登录后选择自己喜欢的音乐风格或歌手,缓解“冷启动”问题,以便系统进行最初的推荐;(3)音乐检索:提供通过曲名或者歌手来进行曲目的快速定位;(4)用户评分:用户可以对听过的曲目进行评分,评分信息会是系统分析用户和构建用户喜好模型的重要依据。(5)音乐推荐:系统会根据用户以往对已经听过曲目的评分信息进行推荐;音乐的形式较多,本文开发简单的音乐推荐系统时,侧重实现的是歌曲的推荐。系统采用Mybatis作为持久层框架的原因一是它支持正常的SQL查询,二是它可以将普通的Java对象和接口转换成数据库中的数据,非常的方便快捷。用户注册页面需要用户填写必要的用户信息,为防止密码填写错误需要用户填写两次密码,两次密码填写一致时才允许提交。提交后的密码入库前经过MD5加密才能入库,邮箱格式也必须通过正则的检验,否则不允许提交。
4.2音乐推荐系统设计
该层是该推荐系统最重要的一层,该层通过使用PK-CF算法产生推荐列表,首先对数据库传入的数据进行PCA降维,再用改进后的K-means算法将用户划分为多个簇,簇内用户相似度较高,将聚类完成后形成的各簇进行存储。推荐时根据传入的目标用户数据与各簇质心进行相似度计算找到与目标用户对应的簇,再在簇内与所有用户计算相似度,最后进行TopN推荐形成推荐列表。本文采用SpringBoot和Mybatis作为音乐推荐原型系统的开发框架,开发此系统主要目的是对上文提出的PK-CF算法的实用性进行验证,所以前端页面的设计并不作为此次系统开发重点。SpringBoot是继承于Spring的全新轻量级开源框架,在简化Spring应用的搭建和开发流程的同时很好的解决了Spring集成其他框架时产生的版本冲突问题。为保证用户名不重复,在将注册信息提交到数据库前,必须执行查询操作,如果数据库中已存在填写的用户名则入库失败。用户注册的运行页面如图4.6所示。用户在收听歌曲时可以对正在收听的歌曲进行评价,当前正在收听的歌曲ID,歌曲名将自动填充到评分页面,用户的评分标准是1-5分,评分数表示喜欢程度,分数越高则越喜欢。在进行评分入库操作前,系统会把在session域中的用户ID与评分一起组成评分记录进行入库。用户评分页的实现效果如下图4.11所示。本章将上一章提出的融合了降维与聚类的PK-CF算法应用到音乐推荐的业务场景中,设计实现了一个简单的音乐推荐系统,对系统从需求分析、架构设计、功能模块设计、数据库模块设计到最后的系统实现与测试做了详细的介绍。从最后的测试结果来看,PK-CF算法确实具有一定的实用价值,其在推荐的时效性方面有一定优势。
第五章总结与展望
在大数据的时代背景下,为解决推荐的实时性和扩展性问题,本文基于Spark平台采用了Spark的RDD等机制和HDFS文件系统,分三步完成了对PK-CF算法做基于Spark平台的并行化设计方案。一是做了本文设计的初始质心选择算法的并行化设计,二是做了改进后的K-means算法的并行化设计,三是依照协同过滤算法的步骤完成了PK-CF算法整体的并行化方案设计。本文还对所设计的PK-CF算法的并行化方案的实时性和准确率进行了验证。(3)本文将PK-CF算法应用到音乐推荐的场景中,开发了一个简单的音乐推荐的原型系统,系统做了分析与设计,对系统的运行效果和所涉及的数据进行了展示,对PK-CF算法的实用性进行了验证。本文对协同过滤推荐算法的改进还不够完善,对所设计的PK-CF算法的实用性的验证场景也比较单一,未来针对以下几个问题还可以进行进一步探究:(1)本文设计的PK-CF算法并没有解决传统协同过滤推荐算法存在的“冷启动”问题,只是在开发原型音乐推荐系统时增加了音乐风格偏好的选择,根据用户喜欢的音乐风格进行简单的推荐,但此举并不能从根本上解决“冷”启动问题。(2)本文设计的PK-CF算法并没有对上文提出的模糊用户问题进行考量,无法对风格迥异的用户进行推荐,需要进一步研究算法对不同用户的适应性。(3)由于本文无法获取真实的音乐用户的评价信息且数据规模较小,未能在大规模数据环境下真正进行验证,今后在条件许可时应做实测,并基于实测结果,对算法做进一步的完善或改进。