论文部分内容阅读
音乐的获取多种多样,从网络上获取已成为大多数人的首选。而匆忙的现代化生活以及庞大的网络资源,让很多人无暇去仔细搜索自己喜爱的音乐,并且大量适合用户的音乐没有机会被用户欣赏到。怎么快速挖掘用户喜好,帮用户找到自己所喜欢的音乐,就是音乐推荐引擎的主要作用。推荐算法是引擎的核心,算法的优劣决定了推荐的质量。基于内容的推荐研究很早就开始。本文针对音乐数据的独特性,进行了标签化处理,使其能应用在基于内容的推荐上,而基于内容的算法主要采用聚类算法。用传统的TF-IDF方法生成音乐文档向量来进行聚类,不仅效率低,聚类质量也不高。因此,本文采用另一种生成向量的算法,那就是用Simhash算法计算出物品的指纹特征值,再进行聚类。实验验证了此种方法运行效率高,聚类效果也好。另外,在推荐领域,协同过滤算法也是目前应用比较广的推荐算法。针对协同过滤推荐算法运算量大的特点,本文实现了在Hadoop平台上的基于用户的分布式协同过滤算法,优化用户相似矩阵和去掉热门和冷门项目偏好向量,并且简化整个流程。在实验中,和Mahout算法集上的基于项目的分布式协同过滤算法比较,在同等数据量的前提下,速度更快,推荐质量也没有降低。最后,本文搭建了一个B/S结构的音乐推荐引擎原型系统,整合离线推荐算法结果,并加入在线推荐功能,满足用户的实时需求,成为一个体验较佳的个性化推荐系统。本文的主要研究工作总结如下:1.对音乐进行标签化处理,加入权重,并对歌词分词过滤处理,采用Simhash算法生成二进制指纹特征值,而不是用传统的TF-IDF来生成向量表示音乐文档,在存储和计算量上都得到了优化。接着用K-means聚类算法对指纹特征值进行聚类,得出多簇相似的歌曲,实现改进的基于内容的推荐算法。2.对Mahout中基于项目的分布式协同过滤算法进行深入分析,发现项目矩阵无法准确表示项目相似性以及全部数据没有经过预处理等缺点,造成运算耗时过长且推荐效果差等问题。因此,本文提出改进后的基于用户的分布式协同过滤算法,优化用户矩阵,对数据进行预处理,并减少MapReduce作业数目,实现了高效的分布式协同过滤算法。3.后台离线整合两种算法的推荐结果,在线推荐模块实时优化用户的推荐列表,从而实现个性化音乐推荐引擎系统。为了增强了用户的体验,用MongoDB加速数据的存取,用Spring搭建高效的后台系统,用Bootstrap和HTML5增强前台页面的视听效果,使我们的系统能应用在实际需求中。