基于大数据的音乐流行趋势预测及推荐分析 项目源码及数据库文件

B站影视 2024-12-30 16:47 2

摘要:基于机器学习构建音乐流行趋势预测模型仅使用了离预测目标时间段较近范围的数据。本文对歌曲聚类后进行分组实验:以模糊集理论为基础,分解时间信息粒,构建“triangle”模型;采用SVM预测triangle模型的low,R,up参数,可得到准确的短时空间和趋势变化

基于大数据的音乐流行趋势预测及推荐分析

基于机器学习构建音乐流行趋势预测模型仅使用了离预测目标时间段较近范围的数据。本文对歌曲聚类后进行分组实验:以模糊集理论为基础,分解时间信息粒,构建“triangle”模型;采用SVM预测triangle模型的low,R,up参数,可得到准确的短时空间和趋势变化。这对于平台中原创行为、使用行为以及运营商的营销活动都有重要的指引作用。

系统实现用户对音乐评分的搜集(Python爬虫爬取数据),后端使用大教据推荐算法构造,前端使用MVC框架搭建大数据音乐推荐系统。系统教据序使用了关系型教据库MySQL。前端收集过用户行为数据后传到后端使用基于用户的协同过滤算法来推荐出用户可能喜欢的音乐。采用BS架构,使用Java程序设计语言、MySQL数据库、Hadoop离线分析、 java 开源工具Eclipse编写程序、Java的JRE运行环境、JSP页面等工具开发而来。

音乐流行趋势预测为企业预测未来流行音乐走向、预判黑马音乐提供了理论支撑和决策

上的技术支持,具有重要的商业价值。相比传统预测方法,基于机器学习构建预测模型不仅理论完善,而且在实践中有强大的鲁棒性和泛化能力,可直接移植到平台中应用。

关键词:大数据;Hadoop;Python;Java;音乐数据分析;音乐推荐

Music pop trend prediction and recommendation analysis based on big data

Abstract

The music pop trend prediction model construction based on machine learning uses only the data close to the predicted target time period. In this paper, the grouping experiment is conducted after song clustering: based on the fuzzy set theory, decompose the time information particles and construct the "triangle" model; to predict the low, R and up parameters of the triangle model by SVM, we can get accurate short-time space and trend change. This is an important guiding role in the original behavior, usage behavior and carrier marketing activities on the platform.

The system realizes the collection of music score (Python crawler crawl data), the back end uses the big teaching data recommendation algorithm construction, and the front end uses the MVC framework to build the big data music recommendation system. The systematic reference order uses the relational reference library MySQL. The front end collected user behavior data and passed it to the back end using a user-based collaborative filtering algorithm to recommend music that the user may like. The BS architecture was developed by using the Java programming language, MySQL database, Hadoop offline analysis, java open source tool Eclipse programming, Java's JRE running environment, JSP page and other tools.

Music pop trend forecast provides theoretical support and decision-making technical support for enterprises to predict the future pop music trend and predict the dark horse music, which has important commercial value. Compared with traditional prediction methods, building prediction models based on machine learning is not only theoretically perfect, but also has strong robustness and generalization ability in practice, which can be directly transplanted to the platform for application.

Key words: big data; Hadoop; Python; Java; music data analysis; music recommendation

目录

摘 要 - 1 -

Abstract - 2 -

第1章 前 言 - 4 -

1.1 研究背景 - 4 -

1.2 研究现状 - 5 -

1.2.1 国内研究现状 - 5 -

1.2.2 国外研究现状 - 6 -

1.3 发展趋势 - 6 -

1.4 研究主要内容 - 6 -

第2章 技术与原理 8

2.1 大数据环境 8

2.1.1 全球开源的Linux系统-Ubuntu 8

2.1.2 开源分大数据处理平台Hadoop 8

2.1.3 shell 8

2.1.4 kettle 8

2.1.5 Scala 9

2.2 数据获取与处理 9

2.2.1 Pymysql 9

2.2.2 Urllib.request 9

2.2.3 besutifulsoup4 9

2.3网页端 9

2.3.1 tomcat9 9

2.3.2 spring 10

第3章 数据采集及分析 11

3.1 数据获取 11

3.2 音频处理 12

3.2.1 音乐格式转换与时长处理 12

3.2.2 midi生成 13

3.3 音频特征 14

3.3.1 基础音频信息 14

3.3.2 统计特征提取 18

3.4 数据降维及归一化 22

3.4.1 PCA主成分分析 22

3.4.2 数据归一化 23

3.5 聚类算法 23

3.5.1 K-Means聚类 24

3.5.2 MiniBatch k-Means 25

3.5.3 评价聚类模型 25

3.6 分类算法 27

3.6.1 HMM算法(隐马尔可夫模型 27

第4章 系统实现 30

4.1系统总体模块结构设计 30

4.2 局部模块设计 31

4.2.1 登录注册模块 31

4.2.2 热门推荐模块 31

4.2.3 新歌上架模块 32

4.2.4 个性化推荐模块 32

4.2.5 用户中心模块 33

4.2.6 音乐管理模块 33

4.2.7 用户管理模块 34

4.2.8 评论管理模块 34

4.3 系统角色功能设计 35

4.4 推荐系统数据库设计 35

4.4.1 数据库概念结构设计 35

4.4.2 数据库物理结构设计 37

4.5 大数据平台搭建设计 39

4.5.1 hadoop的安装与配置 39

4.5.2 spark的安装 42

4.6 推荐算法设计 42

第5章 结论 48

参考文献 49

致 谢 50

1章 前 言

互联网在如今的爆发式发展中已经完完全全地改变了的生活方式。互联网上资源的爆发时增长让上网冲浪者获取有效信息成为了如今新的难题。用户接触到的信息十分有限。于是很多学者了很多提出帮助用户快速精准找到所需信息的解决方案,比如说搜索引擎,推荐系统等。

目前大型的音乐门户类网站的歌曲库往往包含上千万首的歌曲,这些歌曲被划 分成不同的语种、流派、年代、主题、心情、场景等,包含的信息非常的丰富,存在着 严重的信息过载。对于系统中每一位音乐用户来说,都不可能去收听曲库内的每一首歌, 很多时候用户的需求往往是“一首或几首好听的歌曲”这种模糊的需求,如何根据用户 在系统中产生的行为信息去庞大的歌曲库中挖掘出用户可能感兴趣的音乐,这就需要个 性化音乐推荐系统综合考虑用户偏好、时间、地点、环境等各种复杂的特征,准确的从 上千万的海量歌曲库中筛选出此时此刻最适合这个用户聆听的个性化音乐,给广大的用户带来美的享受,真正做到众口可调[6]。

论文基于大数据的音乐流行趋势预测及推荐分析,主要目的是给用户推荐用户可能喜欢的音乐,使用了较为先进的基于用户的协同过滤算法。用户登录本系统可以享受在遨游在音乐海洋里的感觉,能够听自己喜欢的歌曲,真正释放真正的自己。为了方便用户能够尽情的享受本系统,系统的管理员账户可以对不正当音乐、评论、用户进行管理,还可以发布新歌等。

时代风云变幻,技术日新月异,音乐平台个性化是大势所趋。大数据的时代下,如果连顺势而为都做不到,更别提做时代的弄潮儿了。今天的推荐系统是这样的,明天可能就是那样了,我们要紧抓时代的运势。本系统做到了管理员与用户相分离,互不影响。在系统中将音乐推荐设为一项自动服务,每天早晨六点自动更新运行,能让用户每天都有一个新鲜感。除却推荐之外,用户在本系统中还能做到追赶潮流,发现当今热门,还能够去发现最近发行的专辑等。回过头来,用户甚至可以到用户中心,查看自己在本系统都有过哪些行为(点赞收藏,播放等)。随着用户数量的增多,管理员的作用表现得越发的重要。管理员的存在对净化系统,保护系统内歌曲环境有着至关重要的作用。

随着时间的推移,系统将会被更多的有志同道合的音乐发烧友加入进来,为大家庭做出一份不可或缺的力量。在用户和管理员的共同努力下,可以相信,本系统将会变得更加纯粹美好,让音乐宠幸的人们在这个系统内将会找到家的归属感。

1.2.1

国内的音乐推荐技术发展相比国外来说较慢。国内一些音乐网站采用的推荐系统技术并不是很成熟,好多是针对用户群体做的分类推荐,个性化成分不多。不过,近些年国内相关技术也在不断地发展壮大,也有一些优秀的个性化音乐推荐系统在市面上崭露头角,比如说网易云音乐、qq音乐、酷狗音乐等。网易云音乐是一个偏重于社交的音乐网站。在网易云音乐中,每一位用户都可以去查看自己好友最近在听哪些音乐,喜欢的音乐等等。并且网易云音乐中音乐分类非常的齐全,推荐列表可以每日更新。而且,系统通过用户听歌习惯等,可以找到相同兴趣的听者,更准确地做出推荐[9]。

1.2.2

个性化推荐系统的定义是 Resnick和Varian 在 1997 年给出的:“它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销 售人员帮助客户完成购买过程”。从最初在电子商务网站的深度剖析,到当下在的音乐、电影、学习资料等不同领域的广泛应用。在三十多年的时间里,个性化 推荐系统一直是学术界和工业界的关注的焦点。其优点在于主动性。它能自发地 收集并分析用户的行为数据,为用户的兴趣建模,得到用户的兴趣偏好后,匹配系 统中资源的特征,为用户做出有效的个性化推荐。同时,推荐引擎要一直监测系统 中的项目变化和用户在不同行为下的兴趣特征变迁,针对不同的变动,做出相应推 荐策略的调整。各平台为增加用户的黏着性,以及用户对推荐结果的准确度要求,使得推荐系统的核心技术层出不穷,比较成熟的推荐技术有:基于内容的推荐、协同过滤(基于相似度的最邻近协同过滤算法、基于潜在因子的矩阵分解推荐算法)、深度学习、基于标签的推荐系统、混合推荐算法等[10]。

音乐疗法的研究和临床案例表明,音乐的某些物理特征会与人的神经系统产生共鸣,从而导致人体生理指标发生有益的变化。此外,音乐还可以产生心理节奏,这与人们的生理结构和功能非常一致。因此,取决于不同人的生理和心理反应,可以匹配不同的治疗音乐,并且可以实现个性化的音乐推荐。针对音乐推荐技术当前存在的问题,从“人文关怀”的角度出发,提出了音乐推荐技术研究与开发的新方向,其中生理指标与生理指标联系在一起。可以通过这些生理参数来修改特定类型音乐的人的心理状态,并将其与情绪状态实时组合以找到相应的音乐资源。

本文数据集来源于阿里云音乐平台。本文以用户的历史播放数据为基础,通过对目标时间内艺人歌曲播放量的预测,挖掘出即将成为潮流的艺人,从而实现对一段时间内音乐流行趋势的准确把控。具体做法是分析用户行为信息和信息后,预测歌手在未来一段时间内的播放热度。图1描述了整体的实验流程,主要包括以下几部分工作:

(1)分析并处理数据集。对音乐吸引用户成为平台忠实用户的原因进行分析,挖掘用户行为、歌曲信息、艺人信息潜在的规律,筛选出有效信息进行数据清洗、数据集成和数据转换。

(2)基于机器学习构建预测模型。针对音乐平台中象征流行趋势的月榜、周榜、每日金曲榜,采用人工神经网络和支持向量机分别预测月播放量、周播放量、日播放量。在人工神经网络模型中完成特征选择工作,支持向量机进行验证实验。

(3)构建组合组合预测模型。将人工神经网络和支持向量机两种算法进行线性组合构建音乐流行趋势的预测模型,并与单一模型进行对比。实验结果表明,组合模型可明显提升预测性能。

(4)变化预测模型的构建与分析。针对传统音乐流行趋势预测模型的构建仅使用了离预测目标时间段较近范围的数据,本文提出对艺人进行聚类分组,纪合模糊粒化方法与支持向量机构建新模型。实验表明可以准确预测出未来几天睦播放量的变化趋势和变化空间。

图1音乐流行趋势预测流程图


2章 技术与原理

2.1

2.1.1

Linux是一个开放源码的、免费分发的类unix操作系统,适用于世界各地的pc和工作站,Ubuntu是Linux的一个分支发行套件。Ubuntu这个名字来源于南非祖鲁语或豪萨语“Ubuntu”,意思是“存在,因为每个人都存在”。这是非洲的传统和古老的价值观,即为每个人而生。自从Ubuntu诞生以来,一个巨大的社区诞生了。人可以从社区为Ubuntu做贡献,并且很容易从社区获得帮助。

Ubuntu不仅在个人桌面和服务器操作方面令人惊叹,而且在大数据方面也令人惊叹。其包容的态度提供了大数据处理平台(Hadoop)单机、伪分布式和分布式三种部署方式。它提供了强大的处理能力、交互能力、扩展能力,使数据可以在主机之间自由移动和快速处理。

2.1.2

Hadop是基于Apche软件基金会的开源分布式计算平台,可为用户提供系统底层细节的透明结构。为方便使用而开发,具有非常强大的跨平台工作功能,可以将其部署在较为廉价的计算机集群中。 MapReduce是Google MapReduce的开源实现。这让用户可以更容易去开发并行应用程序,不用了解分布式系统的基本细节。使用MapReduce将数据集成到分布式文件系统中可以使数据分析和处理更加高效。借助Hadoop,程序员可以轻松地创建分布式并行程序,并在廉价的计算机群集上运行它们,这样就可以完成大量数据的存储和计算。

2.1.3 shell

shell是Linux系统用户专有的界面,它的作用时给用户提供和linux内核交互的命令行界面。Shell页面端用来获取用户输入的信息,并将其提交给linux内核进行运行,之后将运行结果输出在shell页面端口。

2.1.4 kettle

Kettle是用纯Java编写的外部开源ETL工具,在Windows,Linux和Unix上均可运行,而且数据提取非常高效稳定。

Kettle的中文名叫做水壶。 该项目的主要程序员MATT希望用户将各种数据放入水壶中,能够以任意所指定的格式输出。

2.1.5 Scala

Scala是一种类似java的编程语言,设计初衷是为了既能继承java的优点,有用来弥补Java的缺点的一款全能编程语言。

2.2

2.2.1 Pymysql

Mysql是如今最为普遍的数据库里,而python作为比较流行的语言之一,自然少不了与mysql做交互,其中pymysql就是使用最多的工具库了。Python导入pymysql之后,配置完数据库就可以直接操作数据库内各种表等。

2.2.2 Urllib.request

Urllib.request 模块定义了适用于在各种复杂情况下打开 URL(主要为 HTTP)的函数和类 --- 例如基本认证、摘要认证、重定向、cookies 及其它。Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。Requests的文档非常完备,中文文档也相当不错。Requests能完全满足当前网络的需求,支持Python 2.6—3.8,而且能在PyPy下完美运行。

2.2.3 besutifulsoup4

HTML 文档本身是结构化的文本,有一定的规则,通过它的结构可以简化信息提取。于是,就有了lxml、pyquery、BeautifulSoup等网页信息提取库。一般会用这些库来提取网页信息。其中,lxml 有很高的解析效率,支持 xPath 语法(一种可以在 HTML 中查找信息的规则语法);pyquery 得名于 jQuery(知名的前端 js 库),可以用类似 jQuery 的语法解析网页。

BeautifulSoup(下文简称 bs)翻译成中文就是“美丽的汤”,这个奇奇怪怪的名字取自于《爱丽丝梦游仙境》,bs 最大的特点就是简单易用,不需要像正则和 xPath 等工具必须牢记很多特定的语法。虽然效率更高更直接,但对大多数 python 使用者来说,好用会比高效更重要。

2.3

2.3.1 tomcat9

Tomcat是Apache Software Foundation的Jakarta项目的核心组件,该项目是由Apache,Sun和一些公司和个人开发的轻量级Web应用程序服务器。是Servlet和JSP规范的开源实现。由于其技术非常先进,而且工作稳且性能高,它深受java爱好者的追捧,很多开源边界者都对他赞赏有加。目前呢已经成为最流行流行的Web应用程序服务器。

2.3.2 spring

Spring框架是Rod Johnson启动的开源J2EE应用程序框架,而Rod Johnson是用于bean生命周期管理的轻量级容器。 Spring解决了J2EE开发过程中开发人员遇到的较多常见问题,还提供了非常实用的功能,例如IOC,AOP,Web MVC等。 Spring甚至可以单独构建,也可以与Struts,Webwork和Tapstry等桌面应用程序结合以创建JEE,桌面和小型应用程序。


毕业论文和源码运行截图:





来源:毕业通通通

相关推荐