100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 个性化实时音乐推荐系统-毕业设计

个性化实时音乐推荐系统-毕业设计

时间:2020-05-04 00:26:05

相关推荐

个性化实时音乐推荐系统-毕业设计

前言

📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

本次分享的课题是

🎯个性化实时音乐推荐系统

课题背景与意义

用过虾米、酷狗、QQ音乐、网易云音乐,个人感受网易云音乐在音乐推荐这块做的真心不错,特别是以“人”为角度的推荐,没有像虾米、酷狗推的那么乱。虾米还可以,但更多的是以歌搜歌的形式。刚注册了一个新的账号,避免有历史数据的干扰,听了一首周杰伦的《一路向北》和陈奕迅的《淘汰》,然后去个性化推荐里看到了蔡健雅的《红色高跟鞋》和曲婉婷的《承认》,给我的感觉还是比较惊喜,像蔡健雅一般听的人比较少,还能推荐到体验不错。当然也有很多不一定特别准,当然听歌这东西就不需要完全准确。音乐推荐算法,就是针对音乐自身的内容特征以及用户的听歌行为,为广大用户提供可能符合他们兴趣爱好的歌曲的算法。而基于大数据的个性化音乐推荐算法,能够通过历史数据,别的用户的历史数据分析出潜在的喜好相似性,为用户更准确地挖掘出潜在的喜欢的音乐。

课题实现技术思路

推荐算法介绍

2.1传统推荐算法

传统的推荐系统方法包括基于内容推荐过滤、基于规则的推荐、协同过滤推荐。

基于内容的过滤推荐根据物品的元数据,计算物品的相似性,然后基于用户的历史行为推荐给用户相似的物品;基于规则的推荐常使用于电子商务系统,大量的交易数据中获取关联规则或者按照时间购买商品的序列模型,进行物品之间的相互推荐;协同过滤包括基于用户的协同过滤和基于物品的协同过滤;基于用户的协同过滤通过分析用户历史行为,计算用户之间相似度,利用用户相似度和用户的历史行为给用户形成推荐列表。基于物品的协同过滤与之类似,分析用户行为计算物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。

2.2基于LightGBM决策树模型的推荐算法

决策树算法的发展过程从C3.0(基于信息增益) CART(基于基尼系数) 提升树(AdaBoost) 梯度提升树(GDBT) XGBosot LightGBM算法。

基于决策树模型的推荐算法具有以下优点:(1)可以并行化训练;(2)能够处理离散连续特征值和类别特征,不用对特征做归一化;(3)能够处理缺失值;(4)可以处理高维特征。

LightGBM(Light Gradient Boosting Machine)是8月微软公司开源的基于决策树算法的分布式梯度提升框架,和之前的提升框架相比有更快的训练效率,更低的内存使用,更高的准确率,支持并行化学习,可以处理大规模数据等优点,可以用于排序,分类和许多其他机器学习任务。[3]

Boosting算法(提升法)指的是迭代算法,核心思想是对训练样本进行k次迭代,每次迭代形成一个弱学习器,然后根据学习误差对分类错误的样本加大训练权重,形成新的带有权重的训练集,训练形成新的弱学习器;最后将这些弱学习器根据结合策略形成一个强学习器,学习过程如图2.1所示:

图2.1 Boosting算法学习过程

此外LightGBM利用Histogram的决策树算法,先把连续的浮点特征值离散化为k个整数,构造一个宽度为k的直方图,如图2.2所示,遍历数据时,根据离散化后的值作为索引在直方图中累积统计量,然后根据直方图的离散值,遍历寻找最优的分割点。使用直方图算法因为只保存特征离散化后的值,内存消耗可以降低为原来的1/8左右;此外计算的成本也大大降低,因为预排序算法每遍历一个特征值就需要计算一次分裂的增益,而直方图算法只用计算k(k为直方的个数),时间复杂度从从O(data*feature)优化到O(k*features)。

图2.2 直方图分割算法

和Xgboost采用level-wise策略相比,LightGBM采用更高效Leaf-wise策略(如图2.3所示),每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分类,如此循环,和Level-wise相比,分裂次数相同的情况下,可以降低更多的误差,获得更高的精度。同时LightGBM可以通过最大深度的限制防止过拟合。

图2.3 按层次生长策略(左)和按叶子次生长策略(右)

并且最新的LightGBM可以自动处理缺失值,可以进一步优化类别特征(Categorical Feature),不再使用类似one-hot coding的分割方式,对于类别数量很多的类别特征采用one-vs-other的切分方式长出的不均衡的树,采用many-vs-many的切分方式,寻找最优分割。

数据集以及数据预处理

数据集介绍

数据挖掘是在大量的、潜在有用的数据中挖掘出有用模式的过程。因此,原数据的质量直接影响到挖掘的效果,高质量的数据是进行有效挖掘的前提。

本文采用kaggle平台上kkbox举办的—KKBox's Music Recommendation Challenge比赛的公开数据集,KKbox是亚洲领先的音乐流媒体服务商,拥有全球最全面的亚洲流行音乐库,音乐曲目超过3000万首。官方声明比赛数据都来自都来自网页快照的抽样,除了对用户id进行了加密处理,其余数据都是原始数据[4]。

数据集共分为三个维度:用户维度,音乐维度,操作维度。

用户维度信息包括用户ID、居住城市、年龄、性别、注册方式、注册时间;音乐维度信息包括歌曲ID,歌曲长度,流派信息,艺人名字,作曲者,作词者,歌唱语言,歌名,ISRC码;操作维度包括用户ID,歌曲ID,首次操作功能区,首次操作界面名,首次播放类型,首次收听一个月内是否重复完整收听。

数据筛选

在推荐系统中应该建立如下观点:操作次数特别少的用户和操作次数特别少的物品虽然占了绝大多数,但是这部分行为不具备统计规律,不能真实反映用户的喜好,选择这些数据进行训练,不能得到正确的结果。

本文根据实验分析得出,对于本文的数据集应该选择{播放次数大于10次的音乐的操作记录}∩{播放次数大于35次的用户操作记录}进行训练。

数据预处理

用户信息表有21965名用户的城市、性别、年龄、注册方式以及注册时间等信息。经查看,性别缺失率高达47.45%,并且注册时用户填写性别也不一定真实,所以删除该特征。并且通过对年龄信息的查看,年龄0岁的10377人,缺失值也达到了50%,剩余年龄分布集中在22-30岁之间,区分度也不是很大。所以暂时也删除。注册时间的格式为%Y%M%D,全部转化为注册天数的连续变量。并且统计每个特征单个元素的播放次数和重复率,添加到用户信息表中。

音乐信息表中经筛选后的音乐只有一首歌缺失语言信息,经查验,该歌曲为JONGHYUN组合演唱的《White T-Shirt》,为韩文歌,我们进行人工填充,韩语对应的语言类别31;缺失了485首歌曲的genre_ids,缺失率为1.6%,最频繁项为465,出现频次为16735,占据50%的歌曲;因此对于缺失的少数genre_ids,用最频繁项填充。并且80%以上的歌曲只有一个genre类别,除了1首歌,其余歌曲最多两个类别,所以在本文保留两个genre_ids,对于艺人名,作词者作曲者都不做缺失值填充,只进行LabelEncoder标签化处理。统计每个特征单个元素的播放次数和重复率,以及对应歌曲数,添加到音乐信息表单中作为新的数值特征。

用户对音乐的操作信息只出现在了用户操作表中,一共有三个特征,用户操作来源,用户操作界面布局,用户第一次听这首歌的来源,本文把把这三个特征归为操作维度一类。经统计首次操作功能区(9种元素),首次操作界面名(20种元素),首次播放类型(13种元素)组成的子类别在所统计的操作共有479种组合,是9*20*13=2340的1/5左右。分别统计这479中组合的重复收听率,认为操作次数大于20的为有效统计子类别,子类别和target相关系数高,所以对操作维度分析采用子类别进行分析。

特征选择以及模型性能比较

音乐维度特征选择

音乐信息表中包含歌曲ID,艺人ID,作曲家ID,作词者ID,语言ID,公司ID,第一第二流派ID,发布年份,以及这9个分类变量数值化的特征:播放次数和重复播放率,以及对应歌曲数目;歌曲长度,特征维度达到近50个,为了模型分析简单,而且避免过拟合,进行特征筛选。

统计这些分类特征对应歌曲数和播放次数的相关系数,绘制热力学分析图,如图4.1所示:

图4.1 分类特征对应歌曲数(左)对应播放次数(右)相关系数热力学分布图

两幅图中language和country都体现了很强的相关性,这和经验认知国家和歌唱语言是强相关有关,并且国家信息提取自ISRC码,具有缺失,language经过之前的缺失值补充没有缺失值,所以删除所有country有关的特征。

此外,lyricist和composer以及artist_name之间也有强相关系数,但是无法直接比较数据质量,故采用稳定性回归中的随机逻辑回归对特征评分,评价各个分类特征的重复收听率对target重要性,对缺失的重复率用均值补充,评分如表4.1所示:

表4.1 各分类特征重复率评分

由上表两次评分可以看出composer和是否重复播放无关,所以删除所有composer相关信息。对于second_genre因为缺失值严重,评分系数也不高,删除,company可以看出和歌曲是否重复播放没有关系,故也删除。

二元化预测结果比较

因为kkbox在kaggle平台比赛要求提交结果为二元化结果进行准确率评分,所以本文将使用数值特征训练的LightGBM模型,最大树深为30层的预测结果二元化,计算预测ROC评分。如图5.1所示,和未二元化的预测结果相比,预测准确率下降。

在训练集中二元化后的测试准确率在迭代次数1000次时到达0.72,测试集中二元化测试准确率大于0.70,该比赛第一名的预测概率为0.684。并且根据之前的实验可以得知,使用该模型迭代1000次的平均耗费时间为9min15s,远小于其它模型的训练时间。

最后💯

🏆为帮助大家节省时间,如果对开题选题,或者相关的技术有不理解,不知道毕设如何下手,都可以随时来问学长,我将根据你的具体情况,提供帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。