温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
推荐
系统
音乐
领域
应用
研究
龙远婷
214数据库系统设计Database System Design电子技术与软件工程Electronic Technology&Software Engineering由于互联网和智能终端设备的飞速发展,各种各样的信息充斥着社会的每一个角落,人们无时无刻地被各个信息包围,于是人们需要高质量的推荐系统来为他们定制个性化的信息1。此外,随着我国数字版权的不断发展,大部分热门音乐必须开通会员才能进行消费,对于非会员用户,找到合适的音乐变得更加困难2。基于此,越来越多的研究者将自己的研究重点放在了音乐推荐,并提出了不同的推荐算法。王子茹等通过对比基于内容的协同过滤算法,基于聚类的协同过滤算法以及基于密度的协同过滤算法,发现引入用户的信任度可以提升模型的可扩展性,并且后两种算法更适合高维数据集3。文献4认为,传统的协同过滤等推荐算法不能很好地适应用户的现代化的个性化需求,通过分别抽取用户端和电影端的各种特征,设计出多层神经网络模型,更好地对用户和电影特征进行了更为深度的交互,从而实现基于神经网络的电影推荐。王松涛5提出基于项目流行度演化网络的序列推荐算法,解决了循环神经网络中相邻用户的强依赖关系,从而避免了错误依赖的建立,提高了推荐准确度。文献6将消费者对商品的类型偏好和商品类型之间的关联程度建模,并计算商品间的相似性,预测用户对候选商品的打分,最后同时用 ACNN 和基于商品类型偏好进行 TOPN 推荐。学术界的研究者提出了很多有效的推荐算法,但是需要工业界的工程师将这些算法应用到具体的服务中提供给用户,才能实现这些算法的价值,否则就只能停留在理论阶段。基于此,本文综合考虑学术界的推荐算法和工业界的软件开发,设计出音乐推荐框架,不但可以帮助学术界的研究者更好地清楚算法设计的方向,更能指导工业界的工程师去进行推荐系统在音乐领域的应用研究龙远婷1王屯屯2*(1.平塘民族中学 贵州省平塘县 558300 2.黔南民族师范学院计算机与信息学院 贵州省都匀市 558000)摘要:本文以音乐领域为例,侧重于研究如何设计推荐系统的架构,主要包括:用户和音乐数据的收集,用户行为打分,音乐推荐模型,音乐排序模型,线上和线下对比实验以及数据更新等。通过严谨的理论分析和数学公式推导,充分证明了该音乐推荐架构的合理性和有效性。该推荐架构可以根据用户历史音乐行为,为其快速精准地推荐个性化音乐。现在大部分针对音乐推荐系统的研究集中在纯理论或者应用技术层面,本文在数学理论的基础上,综合考虑现有技术提出音乐推荐架构。关键词:音乐推荐系统;推荐算法;音乐推荐模型基金项目:贵州省教育厅(黔教合 KY 字 2022100)。图 1:系统架构图215数据库系统设计Database System Design电子技术与软件工程Electronic Technology&Software Engineering实际开发。1 系统设计与实现1.1 总体设计完整的音乐推荐架构需要包含如图 1 所示七个部分:输入,ETL,多路召回,排序,过滤,线上更新和输出。1.2 输入和输出任何推荐系统都离不开数据的支持。将用户的各种行为信息送到推荐系统,该系统根据每个用户的个性化动作和信息进行分析处理,得到其音乐推荐结果,并在用户端进行呈现。大部分用户行为是隐性的,用户本身无感知,必须对音乐的播放行为,系统可以分析该用户对该音乐的播放进度来判断对该音乐的偏好程度。对于非音乐类 APP 企业,无法获取用户的各种音乐消费行为和音乐的各种特征,需要通过爬虫技术去获取,但是很多网站采取了反爬虫策略,导致爬取到的数据规模较小,因此只能下载有限的公开数据集,效果不理想。1.3 ETL用户的信息杂乱无章且规模庞大,需要经过 ETL 处理才可以被用于推荐。我国人口规模较大,对于使用人数较多的音乐 APP,每天都会有上亿用户产生各种各样的动作行为,因此需要先对这些信息进行清洗、转化等操作,形成干净且规范化的数据格式送入到负责推荐算法的工作人员进行处理。例如,一个用户某天播放了 100 首音乐,并且发生了多次“进度拖放”或者“暂定”“刷新”等操作,并且并不是看到的所有音乐该用户都会播放,因此会有更多的音乐被曝光。对于每一个行为,都会有一条记录存在服务器中,如果不对这些信息预先进行处理,单纯一个用户在一个月就会产生大量行为记录,当用户规模较大时,将会产生数据灾难,因此需要通过ETL技术,将多条数据进行清洗和聚合等操作。ETL 主要包括三个步骤:抽取,转换和加载。抽取是指从源数据库获得数据的过程,具体内容如图 2 所示。首先根据需求说明文档确定系统中需要的业务字段,并确定最基本的元数据来源。业务字段经过关联后,送入到原始中转模块进行处理。元数据经过一定的规则,送到字段管理模块,并和关联后的数据一起送入到中转站。该中转站会把全量数据经过全量处理后,送入到“待清洗数据”模块,等待下一流程。中转站的数据经过增量抽取后,同样作为待清洗数据。转换步骤主要包括数据的清洗和转换两方面内容。如图3所示,待清洗的数据中存在缺失数据,需要经过“数据补缺”模块,利用某种填充算法(例如取均值,中位数),将缺失的部分进行填充,保证数据的完整性。此外,待清洗数据中还存在无效的数据,需要经过数据替换处理。例如,某个字段在所有记录中基本保持不变,说明信息增益比较小,在算法中起到的作用不大,可以考虑对其进行删除或者替换操作。根据上述两个步骤后,就可以得到干净的业务数据,并将其送入“干净的中转站”进行处理。这样的数据还不能保证样本数据的可靠性,还需经过一定的清洗规则,将数据中的部分数据进行清洗,得到规范化的数据,最后将规范化处理以后的数据,根据算法研究人员需要的目标格式,进行转化,方能得到最终的有效数据。数据的转化过程如图 4 所示,清洗后的有效数据首先需要根据需求说明文档进行拆分,得到各种拆分后的数据表;系统中经常需要经过大规模的复杂计算,所需计算量较大,计算所需时间较长,所以需要在正式使用这些算法产生的数据前,要提前对其进行计算,并将计算结果进行保存;目前主要采用分布式存储框架,而该存储框架中耗时最多的操作是 shuffle,而经常引起系统 shuffle 操作的表之间的 JOIN 关联,因此很多时候系统会提前将后续可能用到的表进行关联并进行存储,方便后续操作直接读取,而不用当场进行复杂的关联操作。经过上述三个步骤后,根据不同的业务目标,对数据进行匹配,并发送给相应的业务模块。加载步骤根据前面抽取过程中数据抽取方式的不同,对目标进行不同操作。例如,当前面对数据进行全量抽取时,对目标表进行替换动作,而当前面对数据进行增量抽取时,需要对目标表进行插入操作。图 2:ETL 的数据抽取过程图 3:ETL 的数据清洗过程图 4:ETL 的数据转换过程216数据库系统设计Database System Design电子技术与软件工程Electronic Technology&Software Engineering1.4 多路召回所谓的“多路召回”策略,就是指采用不同的策略、特征或简单模型,分别召回一部分候选集,然后把候选集混合在一起供后续排序模型使用,可以明显的看出,“多路召回策略”是在“计算速度”和“召回率”之间进行权衡的结果。其中,各种简单策略保证候选集的快速召回,从不同角度设计的策略保证召回率接近理想的状态,不至于损伤排序效果。召回是指为用户生成初步的推荐列表,而多路召回是根据不同推荐策略或算法产生不同的推荐结果,比较常见的推荐算法有:基于用户的协同过滤算法,基于音乐的协同过滤算法,基于图的算法,基于聚类的算法,基于音乐多媒体信息的推荐算法和基于业务逻辑的推荐等。基于用户的协同过滤算法,先为目标用户找到与其相似的候选用户,然后从候选用户中筛选出目标用户未消费过的音乐进行推荐,并且根据目标用户与候选用户的相似程度,和候选用户对目标音乐的喜爱程度进行打分,按照分数进行降序推荐;基于音乐的协同过滤算法,根据目标用户历史喜欢过的音乐,找到与历史音乐相似的其他音乐进行推荐,并根据目标用户对历史音乐的喜欢程度,以及历史音乐与候选音乐的相似程度进行打分,按照分数降序推荐;基于图的推荐算法,分别把用户和音乐作为二部图上下两部分,利用随机游走等算法,计算图中两个节点的相关系数,按照相关度降序排序;基于聚类的推荐算法,提取音乐的特征,构建特征向量,在 N 维空间中每首音乐都可以被看做一个点,每个簇内的音乐可以被当做一个类型的音乐进行推荐;基于音乐多媒体信息的推荐算法,通过提取用户历史音乐的多媒体信息,比如音轨、音色以及节拍等信息,分别找到与这些多媒体信息相似的音乐进行推荐;基于业务逻辑的推荐算法,需要从消费者角度出发,根据实际的业务场景进行推荐,例如,用户 A 刚关注了歌手 B,从某种程度上认为该用户喜欢该歌手,可以把歌手 B 的高质量音乐推送给用户 A。1.5 排序每种召回策略都会为用户生成一个推荐列表,因此需要排序算法将这些召回池内的音乐进行统一排序。融合排序方式如图 5 所示,每个召回池都有不同的权重,等所有召回池准备就绪后,一起送入到多路召回的融合模块进行集中处理,最终经过排序等操作后,得到排好序的音乐推荐列表。具体排序算法如下所示:(1)其中Score(Uk,Mij,t)表示t时刻用户Uk对音乐Mij的打分;式中第一部分 Score(Ri)表示召回池 Ri的权重,该值需要根据具体业务进行配置;式中第二部分 Sim(Uk,Mij)表示用户Uk与音乐 Mij的相似度,该值可以通过机器学习的 CTR 学习得到,也可以简单地通过余弦相似度等相似度评价指标获得;公式最后一部分表示时间衰减函数,发表时间越新的音乐,应该得到较高的推荐分数,其中 T 表示当前时间,t 表示音乐发表时间,表示衰减系数。当用户经常看到发布时间比较新的音乐时,会更加认为系统能够及时地将最新音乐推荐给自己,提高用户对系统的新颖度,满意度以及系统黏性,所以在设计排序算法时,给距离现在时间 T 较为接近的音乐较高的分数。需要特别注意的是,不同的召回池的权重,应当由具体业务和某种学习算法结合起来,才能达到最好的效果,其中用到最多的简单线性学习算法为逻辑回归。1.6 过滤经过上述步骤后,基本得到了用户所需的个性化音乐,但是这部分音乐并不能直接分发给用户,还需经过过滤步骤。需要过滤的音乐大致分为以下三个部分:已经消费过的历史音乐;同一歌手的多首音乐(推荐结果中的高相似音乐);由于版权等原因无法上线的音乐。对于用户已经消费过的音乐,一般要对其进行过滤(曝光过滤),因为一般认为音乐的推荐是为其推荐没有听过的音乐,这样可以增加用户对系统的新鲜度。此外,对于“同一首音乐”的认定,可以有不同程度的限制水平,例如同一个歌手在不同时间演唱的同一首音乐,有时也会被认定为不同的音乐;对于同一歌手的音乐,在一次曝光中,一般不建议重复出现太多首,否则会很容易使得用户变得审美疲劳。历史音乐曝光过滤过程中最重要的是定义目标用户的历史曝光序列,比如跨场景、跨天等,而高相似度音乐过滤过程中如何定义 item 的相似度、跨场景、跨 session 的高相似度去重都是值得细细探究和深挖的点,将在后续进行深入研究。在过滤的最后一步,需要检查推荐音乐是否包含未授权音乐,或者歌词中含有不正当言论,或者歌手存在违法乱纪等情况,必须对这些音乐进行下架或者永久封禁等操作。1.7 线上更新随着计算机算力的不断提高,基本可以实现音乐的在线更新,但是线上仍然无法完成较为复杂算法的运行,所以需要进行音乐的线上更新。当推荐算法复杂度较高时,需要经过线下的长时间运行才能得到推荐结果。目前应用较多的线上线下发送根据为 Kafka,可以将线下的数据流当成生产者Producer,线上的服务器称为消费者 Consumer,两者通过相同的主题 Topic 进行交互。从图 6 中可知,producer 就是生产者,是数据的入口。注意看图中的红色箭头,Producer 在写入数据的时候永远的找 leader,不会直接将数据写入 follower。生产者数量为 M,也就