音乐推荐系统设计

article/2025/11/1 9:41:14

文章目录

    • 问题描述
    • 如何解决
    • 系统设计
    • 评测指标
    • 推荐系统的用户画像
      • 运动音乐场景用户行为分析
      • 睡眠音乐场景用户行为分析
      • 治愈音乐场景用户行为分析
      • 其他音乐场景用户行为分析

问题描述

移动网络和数字多媒体技术的飞速发展促进了数字音乐产业的共享与广泛传播.对用户而言,在海量的音乐库中寻找个人喜欢的音乐需要花费大量的时间和精力。音乐推荐系统的目的是将用户从这项繁琐的工作中解脱出来,从而有效地提高用户体验,为音乐平台创造经济收益。使用基于协同过滤的经典推荐算法,如矩阵因子分解方法,其数据的来源是用户的历史交互数据。协同过滤的应用非常广泛,但同时也面临着数据稀疏和冷启动等问题,同时,由于协同过滤的模型所限,在特征提取方面存在着很多不足,从而会限制推荐系统的准确率。

如何解决

音乐作为一种艺术形式,吸引用户、与用户产生共鸣的因素有很多,其中最重要的就是音频本身的特征,如场景、语言、旋律、乐器、流派、歌词和音乐人等。因此,根据音频本身来进行推荐,推荐效果会更加精准。
音频内容本身包含着吸引用户的特征,如节奏、旋律和乐器等影响用户偏好的因素,因此,有效提取出对用户产生吸引的本质特征是重中之重。使用基于内容的推荐,通过音频处理方法(如离散傅里叶变换)等方法处理音频数据来提取特征,其中涉及一些常用的音乐特征参数,包括频率中心、短时平均能量、过零率、梅尔频率倒谱系数及带宽等。

系统设计

实现基于内容的音乐推荐主要分为以下四个部分:
(1)绘制用户画像,用户画像包括用户的年龄、性别、国籍、听歌偏好及与系统的交互信息等;
(2)将音乐embedding为相应的特征向量;
(3)按选定的推荐方法生成候选集;
(4)将用户画像、音乐的特征向量按照推荐方法建模,在候选集中以TopN的方式为用户推荐相似度高的音乐列表。
用户画像是用户信息的数据化,其目的是为了更加贴合用户的喜好和使用习惯,用户画像也与用户所处情境密切相关。为了更加准确地描绘出音乐作品,第一步需要提取尽可能多的会影响用户偏好的特征,使得推荐更加符合用户需求.音频形式可以通过卷积神经网络来提取特征,这部分就是特征工程,特征工程的目的就是将音频embedding为特征向量;第二步是生成候选集,这一步的目的在于简化处理问题的规模,在保证推荐效果的前提下减小计算量;第三步是排序,排序需要用到前两步的结果,利用用户画像及音频的特征向量作为排序的依据,以用户交互数据来训练回归模型.文献[28]提出了一种潜在因素模型,该模型通过滤波器组处理音频,滤波器通过卷积神经网络提取梅尔频谱系数。梅尔频谱系数是可以用于表示人的听觉效应的特征,基于梅尔频谱特征建模可以学习到潜在的与用户偏好相关的特征,并证明了使用潜在特征可以给出相比于协同过滤更加明确的推荐,而且在一定程度上克服了冷启动的问题.因此,梅尔频谱系数广泛应用于音频信息分析等领域口。文献[31]提出另外一种重要的音频特征—色度向量,可用于判断音阶,从而使推荐效果更加精准。
基于内容推荐的优势在于推荐的依据来源于物品的本身属性,可以有效地避免冷启动和长尾效应问题,推荐准确率也比传统的基于协同过滤算法的推荐系统高。但其面临着特征提取难度高、计算复杂、难以挖掘用户的潜在兴趣等问题。

评测指标

一般做法可以使用点击率、转化率、网站成交额和召回率度量推荐结果或者产生一个TopN推荐列表。这些评价指标本质上都是基于预测准确率。但是这样的系统的评测结构过于单一。针对这一问题,可以使用一些新的评测指标如新颖性以及惊喜度等.通过最优化其中一个评测指标,同时综合其他指标进行推荐,使得推荐效果更加符合用户需求。Celma曾提出流行度长尾尾部的音乐可能更加让用户觉得新颖。假设S表示用户集合,那么用户u的推荐列表的新颖性定义如下:
在这里插入图片描述

其中R是一个TopN函数,Ru,20表示把推荐列表中前20项推荐给用户u,popi表示对音乐偏好程度的预期。
文献提出用户需求还应包括意外和惊喜,并提出惊喜度以度量推荐者系统生成推荐列表的偶然性.惊喜度是指推荐结果与所使用的推荐方法得出的用户偏好不同,但用户对结果感到满意.一般通过Unserendipity来度量惊喜度,公式如下:
在这里插入图片描述

其中,cosSim(i,h)的值是指用户历史兴趣Hu。和新的推荐结果之间的平均相似度,表示推荐结果和用户历史兴趣的相似程度,相似程度越小,则推荐的惊喜度越大,Zhang等认为理想的推荐系统应模仿可信赖的朋友或专家的行为,并在此基础上提出了Aura- list推荐框架,在准确性、多样性、新颖性和偶然性等四个因素之间取得平衡。使用“偶然发现”的新颖性算法,演示了一种将偶然性、新颖性和多样性成功注人建议中的方法,同时限制了对准确性的影响.研究结果显示,Auralist框架对偶然性的重视提高了用户满意度。

推荐系统的用户画像

运动音乐场景用户行为分析

跑步和健身场景是绝对主流,不同运动偏好收听时长不同。在运动场景偏好上,跑步歌单渗透率高达49.9%。健身歌单也达到了43.0% ,而瑜伽歌单的渗透率则与前两者差距较大,仅有7.1%。具体分析用户的使用习惯可知.健身歌单的用户单次收听超3小时的占比达38.8%。跑步运动较为剧烈,因此超半数用户单次只收听1-2小时。而瑜伽运动由于其较为舒缓,单次收听在2-3小时区段内的人数较另外两个歌单更多。
男性更爱跑步歌单,瑜伽歌单受众群年龄更高。男性和女性在运动场景下的偏好有着明显的差异,男性更爱收听运动场景下的跑步歌单。而女性则偏好健身歌单。同时,在瑜伽歌单的用户分布上,女性愿意收听瑜伽歌单的比例明显要高于男性。在运动场景歌单用户年龄分布上,健身歌单和跑步歌单的用户群最多分布的年龄段是26-30岁,而瑜伽歌单的用户则更多分布在31-35岁之间。
在运动场景下用户最关注音乐的节奏感和舒适感。根据调研,对于运动场景用户而言,能够带来节奏能力是用户在选择场景音乐时最关注的因素.占比高达68.3%。同时,也有63.3%的用户认为运动场景音乐需要提供一个舒适的环境音乐 ,曲风符合当时心情,陪伴其运动过程从而提升运动效率。另外,由于运动健身场景的特殊性,用户对于操作简便、展现形式简单的需求度也比较高,达到了56.2%。
在进行有氧运动时爱听健身歌单,明显偏好节奏型音乐。在健身场景下,用户更偏好在进行有氧运动,热身放松等活动时收听健身场景音乐。对于所有的健身运动类型,能够给用户健身带来节奏感和能量,从而让用户在训练时更好的把握节奏感,是最受关注的因素,特别是对于Tebata、燃脂舞等强度较高的运动。除此之外,健身歌单用户认为音乐能够提供舒适环境音也是比较重要的一个因素,仅次于节奏感。
跑步场景用户最爱在独跑时收听,偏好舒适环境音类音乐。在跑步歌单的使用场景下,有69.6%的用户更偏好在单人独自跑步时收听音乐。而在多人合跑时使用跑步歌单的比例则下降至28.3%,可见在独自一人跑步时用户可能有更强的孤独感 ,因此更倾向于收听音乐陪伴。不同于健身场景的是,跑步作为一个相对比较舒缓的运动,大部分的跑步场景用户都认为音乐作为背景音能够提供舒适的环境音才是最重要的因素。
运动场景用户粘性高,偏好收藏与点赞的互动方式。在运动场景音乐的用户群中,单个用户听歌的频率往往较高,其中每天多次听歌的用户比例高达32.7%。用户平均每周听歌4-5次及以上的比例合计高达87.8% ,体现了整体.上运动歌单用户较高的粘性。在用户的互动习惯方面,整体上来看用户互动性较高,用户经常选择的互动方式最多的是收藏或点赞喜欢的音乐,比例分别为70.1%和65.0%。

睡眠音乐场景用户行为分析

睡眠场景用户偏好轻音乐,小众的脑波音乐受高薪人士偏爱。对于使用睡眠场景的用户而言,轻音乐内容形式(睡前助眠轻音、钢琴纯音乐、入眠音乐)更受欢迎。然而,在总体.上选择较少的Delta脑波及阿尔法脑波音乐,却更加受到高收入人群偏爱。脑波音乐作为一种比较新兴的音乐形式。在高收入人群中已经受到较多欢迎。未来,随着用户对脑波音乐的进一步认知,想必会有更多的用户接受这种音乐形式。
睡眠场景用户更期待音乐能提供平和的氛围。唾眠场景的用户更偏好于能够为其营造舒缓、平和的氛围感的音乐。调研中,有66.9%的用户都认为他们最看重的是睡眠场景音乐能用平顺的音色和节奏,让其进入最低活动状态,从而提升更好的睡眠质量这一点。 除此之外,也有64.5%的用户选择了希望睡眠场景音乐有舒缓作用。同时,也有较多用户偏好使用了自然采样的声音的音乐。
睡眠场景"强陪伴”属性,节假日入睡难更明显。睡眠场景下,用户粘性相较于更多用户每天多次收听的运动场景来说偏低,更多睡眠场景用户是每天收听一次。对于每天收听用户,单次使用时长也相对较长,有超40%用户表示单次使用3小时以上。调研发现,用户更偏好在夜间入睡前收听睡眠场景音乐, 21 : 00-24 : 00是最多用户收听的时段。而且在节假日,用户收听睡眠场景音乐的时段也会整体向后移动,节假日用户入睡难现象显著。

治愈音乐场景用户行为分析

疗愈场景用户最爱舒缓解压音乐,女性更信赖专业医生推荐。疗愈场景的用户总体.上来看,绝大多数用户都偏好舒缓解压类音乐,占比高达83.7%。且在总体上来看,女性更喜欢疗愈场景音乐,在疗愈场景具体的四种内容形式下,女性选择的比例都高于男性。专业医生推荐的疗愈音乐在总体上仅有59.4%的用户比较喜欢。但是,女性偏好.上明显高于男性,可见医生等专业人士的背书对女性来说有更大的作用。
用户最看重歌曲曲风轻松愉悦,更好达到解压作用。用户在选择疗愈场景音乐时最关注歌曲的曲风,其中用户最偏好的歌曲风格是轻松愉悦型,可以帮助其更好的达到解压作用。此外,温暖型的曲风,可以帮助用户舒缓情绪,也得到了较多用户选择。此外,歌单歌曲丰富性在疗愈场景下关注度高,达到63.5% ,作为对比,运动场景为54.8% ,唾眠场景为52% ,可以看出疗愈用户场景用户对歌单丰富性要求更高。
疗愈场景用户对内容质量最满意,女性对疗愈场景满意度高。依据疗愈场景下的用户反馈,用户最为满意的也是场景内容质量,达到4.29分,略低于睡眠场景下的用户满意度。具体来看,女性用户整体.上在五个指标维度给出5分满分的比例都要高于男性,特别是在场景内容时效性和场景内容作品题材两个指标上,男女性别之间给出的评分差距较大。

其他音乐场景用户行为分析

工作场景用户关注音乐是否让人静心,不同年龄偏好显差异。用户在工作场景之下收听音乐最关注的是音乐能够提供一个让人静心的氛围,从而可以不被外界所打扰。不同的年龄段对于工作场景下的音乐形式偏好有所不同, 46岁以上的用户明显偏好令人静心舒缓的音乐歌单;而对于26- 30岁的用户群体来说,他们最偏好的则是提神节奏型的歌单; 31-40岁年龄段的用户则都比较偏好可以提升专注度的音乐歌单。
车载场景下用户偏好自驾游音乐,看重歌曲能否带来轻松感。对于车载音乐场景音乐用户来说,大多数都更喜欢自驾游音乐相关歌单,此外也有60%以上的用户选择了驰骋音乐歌单和夜驾音乐歌单。在用户考量因素方面,用户最关注的因素是音乐歌单能否为用户带来轻松、舒畅的体验,从而舒缓堵车情况下的情绪,此外也有不少用户对歌曲能够扫清驾驶者的疲惫感,提升驾车专注度方面有所要求。
母婴场景用户最爱产后音乐,对其付费意愿较高。在母婴音乐场景之下,更多用户偏好产后音乐歌单,有超过70%的用户进行了选择。用户更看重母婴场景下的音乐是否能够帮助其调整情绪,使其拥有轻松愉快的心情。在付费意愿方面,产后音乐歌单也是拥有最多高付费意愿用户选择的一类,有高达62.8%的用户都表示非常愿意为产后音乐歌单付费,明显高于母婴场景下的其他歌单类型。


http://chatgpt.dhexx.cn/article/Oikrxk5b.shtml

相关文章

音乐推荐系统(协同过滤和SVD)

python音乐推荐系统 首先对音乐数据集进行数据清洗和特征提取,基于矩阵分解方式来进行音乐推荐。 直接上源码和数据集文件 链接:https://pan.baidu.com/s/1Q45-pTRgXcQ4H-Z2WsRbVQ?pwd55z0 提取码:55z0音乐数据处理 读取音乐数据集&#x…

基于深度学习的音乐推荐系统简述

本文简要介绍我做的基于深度学习的音乐推荐系统。主要从需求分析与设计实现的角度来进行介绍。 (一)需求分析 基于深度学习的音乐推荐系统旨在以个性化音乐推荐模型为基础,使用B/S架构的形式实现。个性化推荐模型使用了 随机梯度下降&#x…

基于大数据的音乐推荐系统的设计与实现

基于大数据的音乐推荐系统是为了给听众推荐符合内心喜好的个性化系统。系统提供的功能有,音乐管理:管理员可以添加删除音乐,音乐查找:用户可以在系统中自行查找想要听的歌曲,音乐推荐:系统在收集了用户的行…

context-aware recommendation

智能手机的普及让大家随时随地都可接入互联网,而这样的随时随地的应用场景,也让传统推荐技术需要充分考虑,利用这些信息提升推荐的准确性,同时从另外一方面考虑, 这种符合LBS的推荐, 因为有了这些信息后&am…

accept函数_使用函数式接口

像上几章提到的,函数式接口定义且只定义了一个抽象方法。函数式接口很有用,因为抽象方法的签名可以描述Lambda表达式的签名。函数式接口的抽象方法的签名成为函数描述符。所以为了应用不同的Lambda表达式,你需要一套能够描述常见函数描述符的…

accept函数(TCP)

accept函数&#xff08;TCP&#xff09; #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);功能&#xff1a;阻塞等待客户端的连接请求 sockfd&#xff1a;文件描述符&#…

Context context = getApplicationContext()

使用getApplicationContext 取得的是当前app所使用的application&#xff0c;这在AndroidManifest中唯一指定。意味着&#xff0c;在当前app的任意位置使用这个函数得到的是同一个Context 1、Context概念 其实一直想写一篇关于Context的文章&#xff0c;但是又怕技术不如而误人…

AutoCompleteTextView

自动完成的提供建议的文本 使用方法 //arrays.xml <?xml version"1.0" encoding"utf-8"?> <resources><array name"city_name"><item>Chengdu</item><item>Beijing</item><item>Tianjin<…

http状态码、accept、Content-Type

一、http状态码 &#xff08;1&#xff09;http状态码 1XX&#xff1a;信息&#xff0c;服务器收到请求&#xff0c;需要请求者继续执行操作 2XX&#xff1a;成功&#xff0c;操作被成功接收并处理 3XX&#xff1a;重定向&#xff0c;需要进一步的操作以完成请求 4XX&#xf…

Gated-Attention Readers for Text Comprehension

Gated-Attention Readers for Text Comprehension 文本理解中的门控attention阅读器 code Abstract 本文研究的是完形填空问题式MRC&#xff0c;作者提出的门控注意力阅读器集中了多跳结构和一种新的注意力计算机制&#xff08;基于query嵌入和RNN文档阅读器中间状态之间的…

Html中Input的accept属性

Accept属性规定通过在文件上传提交的服务接受的文件类型 但是accept属性只能适用在Html input类型为文件类型&#xff0c;也就是说其他类型的input accept属性就不适用 我写的这个过滤文件属性是针对于后缀名为.xls的文件&#xff0c;所有的文件只要不是.xls后缀就不显示出来…

ApplicationContext

如果说BeanFactory是Spring的心脏&#xff0c;那么Application就是完整的身躯。ApplicationContext就是由BeanFactory派生出来的。 1、ApplicationContext ApplicationContext的主要实现类是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默认从类路径…

ActionContext

1、ActionContext翻译成中文就是Action的上下文&#xff08;为什么说是上下文&#xff0c;是应为他的生命周期长&#xff0c;和我们的项目的生命周期是相同的&#xff0c;我们很多公共的东西都放在里面&#xff0c;方便存取 &#xff09;&#xff0c;ActionContext是struts2的上…

readonly option is set (add ! to override)错误的解决

在mac电脑或linux系统中经常操作修改某个文件后保存退出出现readonly option is set (add ! to override)。如图&#xff1a; 正常情况下按 A进入编辑模式修改文件后按ESC退出编辑模式&#xff0c;:wq命令保存退出&#xff0c;但经常会遇到以上显示&#xff0c;文件权限只读或者…

ByteBuffer的allocate和allocateDirect

在Java中当我们要对数据进行更底层的操作时&#xff0c;通常是操作数据的字节&#xff08;byte&#xff09;形式&#xff0c;这时常常会用到ByteBuffer这样一个类。ByteBuffer提供了两种静态实例方式&#xff1a; Java代码 public static ByteBuffer allocate(int capacity…

直接内存 直接内存的释放和回收

直接内存 特点 不属于Java虚拟机管理&#xff0c;属于系统内存&#xff1b;属于操作系统&#xff0c;常见于NIO操作时&#xff0c;比如ByteBuffer【】用于数据缓冲区分配回收成本较高&#xff0c;但读写性能高&#xff1b;不受JVM内存回收管理 文件读写过程 java不具备磁盘…

解决The‘Access-Control-Allow-Origin‘ header contains multiple values‘*, ....‘, but only one is allowed

报错内容&#xff1a; Access to XMLHttpRequest at ‘http://www.z…n.com/api/login’ from origin ‘http://z…n.com’ has been blocked by CORS policy: The ‘Access-Control-Allow-Origin’ header contains multiple values ‘*, http://z…n.com’, but only one is …

C++中std::allocator的使用

标准库中包含一个名为allocator的类&#xff0c;允许我们将分配和初始化分离。使用allocator通常会提供更好的性能和更灵活的内存管理能力。 new有一些灵活性上的局限&#xff0c;其中一方面表现在它将内存分配和对象构造组合在了一起。类似的&#xff0c;delete将对象析构和内…

alloc的流程

1⃣️ 2⃣️ 3⃣️ 现在我们看的objc源码都是2.0的版本&#xff0c;之前还有一个1.0的版本 4⃣️ 5⃣️核心方法 最主要的就是最下面三个方法 他的最重要作用就是开辟内存 cls->instanceSize 先计算出需要的内存空间大小这个大小只和对象的成员变量有关 在没有成员变量…

ByteBuffer.allocate()与allocateDirect()的区别

allocate()产生的是HeapByteBuffer的实例, 本质上是一个no direct buffer, allocateDirect()产生的是DirectByteBuffer的实例, 本质是一个direct buffer 主要区别 buffer的创建方式不同, no direct buffer还可以通过封装已存在的byte array来产生执行IO操作时不同, no direct …