【毕业设计_课程设计】基于大数据个性化音乐推荐算法分析
文章目录
- 0 前言
- 1 研究目的
- 2 研究方法
- 2.1 传统推荐算法
- 2.2 基于LightGBM决策树模型的推荐算法
- 3 研究结论
- 4 最后
0 前言
基于大数据个性化音乐推荐算法分析
提示:适合用于课程设计或毕业设计,工作量达标,源码开放
1 研究目的
音乐推荐算法,就是针对音乐自身的内容特征以及用户的听歌行为,为广大用户提供可能符合他们兴趣爱好的歌曲的算法。而基于大数据的个性化音乐推荐算法,能够通过历史数据,别的用户的历史数据分析出潜在的喜好相似性,为用户更准确地挖掘出潜在的喜欢的音乐。
1995年,Ringo算法的开发成就了历史上第一个推荐算法,可以向用户推荐他们喜欢的音乐并预测用户对特定音乐的评分,之后一段时间内,音乐推荐都是基于音乐曲目的基本信息产生,缺乏针对性。国外著名网站Pandora和Last.fm是最早提出音乐个性化推荐的网站。Pandora的音乐推荐算法主要来源于音乐基因工程(music gene)的项目,根据这些基因计算歌曲的相似度,给用户推荐基因相似度高的音乐。国内也涌现了一些优秀的音乐推荐网站如豆瓣电台、虾米音乐、网易云音乐等等,根据用户平时推荐给好友的歌曲,听歌行为以及歌曲收录信息,找到“相似的品味者”,更好的做出推荐。
本文针对传统基于用户或者基于物品的协同过滤推荐方法在复杂场景下对用户进行音乐推荐占用内存大计算速度慢等缺点,提出一种基于LightGBM决策树算法的音乐推荐算法,使用相关性分析和稳定性选择中的随机逻辑回归进行特征选择,采用数值特征取代个体特征进行用户对音乐的喜好预测,根据不同的候选集,可以形成不同推荐列表。采用kkbox音乐公司公布在Kaggle比赛平台上的用户、音乐、用户操作信息进行验证,预测准确率高达76%,训练时间9min,优于该比赛第一名用户算法的准确率68.4%。采用的算法模型可拓展性强,计算效率高,占用内存小,可以迁移到其它类型的推荐系统中。
2 研究方法
2.1 传统推荐算法
传统的推荐系统方法包括基于内容推荐过滤、基于规则的推荐、协同过滤推荐。
基于内容的过滤推荐根据物品的元数据,计算物品的相似性,然后基于用户的历史行为推荐给用户相似的物品;基于规则的推荐常使用于电子商务系统,大量的交易数据中获取关联规则或者按照时间购买商品的序列模型,进行物品之间的相互推荐;协同过滤包括基于用户的协同过滤和基于物品的协同过滤;基于用户的协同过滤通过分析用户历史行为,计算用户之间相似度,利用用户相似度和用户的历史行为给用户形成推荐列表。基于物品的协同过滤与之类似,分析用户行为计算物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。
2.2 基于LightGBM决策树模型的推荐算法
决策树算法的发展过程从C3.0(基于信息增益) CART(基于基尼系数) 提升树(AdaBoost) 梯度提升树(GDBT) XGBosot LightGBM算法。
基于决策树模型的推荐算法具有以下优点:(1)可以并行化训练;(2)能够处理离散连续特征值和类别特征,不用对特征做归一化;(3)能够处理缺失值;(4)可以处理高维特征。
LightGBM(Light Gradient Boosting Machine)是2017年8月微软公司开源的基于决策树算法的分布式梯度提升框架,和之前的提升框架相比有更快的训练效率,更低的内存使用,更高的准确率,支持并行化学习,可以处理大规模数据等优点,可以用于排序,分类和许多其他机器学习任务。
Boosting算法(提升法)指的是迭代算法,核心思想是对训练样本进行k次迭代,每次迭代形成一个弱学习器,然后根据学习误差对分类错误的样本加大训练权重,形成新的带有权重的训练集,训练形成新的弱学习器;最后将这些弱学习器根据结合策略形成一个强学习器。
此外LightGBM利用Histogram的决策树算法,先把连续的浮点特征值离散化为k个整数,构造一个宽度为k的直方图,如图2.2所示,遍历数据时,根据离散化后的值作为索引在直方图中累积统计量,然后根据直方图的离散值,遍历寻找最优的分割点。使用直方图算法因为只保存特征离散化后的值,内存消耗可以降低为原来的1/8左右;此外计算的成本也大大降低,因为预排序算法每遍历一个特征值就需要计算一次分裂的增益,而直方图算法只用计算k(k为直方的个数),时间复杂度从从O(datafeature)优化到O(kfeatures)。
和Xgboost采用level-wise策略相比,LightGBM采用更高效Leaf-wise策略(如图2.3所示),每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分类,如此循环,和Level-wise相比,分裂次数相同的情况下,可以降低更多的误差,获得更高的精度。同时LightGBM可以通过最大深度的限制防止过拟合。
并且最新的LightGBM可以自动处理缺失值,可以进一步优化类别特征(Categorical Feature),不再使用类似one-hot coding的分割方式,对于类别数量很多的类别特征采用one-vs-other的切分方式长出的不均衡的树,采用many-vs-many的切分方式,寻找最优分割。
3 研究结论
本文采用新的ligthgbm算法对用户是否会在一个月内重复收听某一首歌曲进行预测,以此作为个性化推荐的目标。通过分析数据特征,使用相关性以及稳定性选择等方法选择特征,随后通过对训练输入数值特征,分类特征和全部特征的性能比较,创新性选择用数值特征完全取代分类特征去训练模型进行预测,使得模型在有效性和准确性上都有稳定的提升,对于其余需要再分类特征上建模的实验具有参考意义。
由图二可知,对于同一个用户,设置不同的候选集,可以有不同的推荐列表,支持音乐服务商使用多种推荐方式,也可以综合多个候选集,建立混合推荐的推荐列表。
由图三可知,对于不同用户,因为其它用户特征的不同,对于相同的候选集,也可以生成不同的推荐列表,符合个性化推荐的要求。
4 最后
【毕业设计_课程设计】基于大数据个性化音乐推荐算法分析相关推荐
- 基于大数据个性化音乐推荐算法分析(附代码github地址)
github网址:https://github.com/ciecus/music_lgb_recommend_kkbox 欢迎fork我,和我讨论呀~ 摘 要:音乐推荐算法针对当今时代信息过载的问题 ...
- 单片机课程设计数字心率计_课程设计-基于单片机的数字人体心率计设计.doc
课程设计-基于单片机的数字人体心率计设计 中北大学 基于单片机的心率计设计 课 程 设 计 说 明 书 2017年 6月30日 课 程 设 计 任 务 书 1.设计目的:通过本课程设计的学习,学生将复 ...
- 【毕业设计_课程设计】基于协同过滤算法的个性化推荐系统(源码+论文)
文章目录 0 项目说明 1 研究目的 2 研究方法 3 系统设计 3.1 前台模块 3.1.1 首页 3.1.2 个人中心 3.1.3 发布者中心 3.2 后台模块 3.2.1 首页 3.2.2 新闻 ...
- 【毕业设计_课程设计】基于网络爬虫的新闻采集和订阅系统的设计与实现(源码+论文)
文章目录 0 项目说明 1 项目说明 2 系统需求 3 系统架构 4 效果展示 5 论文目录 6 项目工程 0 项目说明 基于网络爬虫的新闻采集和订阅系统的设计与实现 提示:适合用于课程设计或毕业设计 ...
- 【毕业设计_课程设计】基于深度学习的甲状腺超声图像良恶性诊断算法研究
文章目录 0 项目说明 1 引言 1. 1 甲状腺超声图像自动良恶性诊断及其意义 1.2 深度学习在甲状腺超声图像良恶性诊断中的应用 2 理论部分 2.1 数据集 2.2 工作站环境 2.3 预处理 ...
- 【毕业设计_课程设计】基于Android Studio平台的测量程序设计与实现
文章目录 0 项目说明 1 简介 2 程序说明 2.1 主界面 2.2 测量工具箱 2.3 五个测量程序 3 项目工程 0 项目说明 基于Android Studio平台的测量程序设计与实现 提示:适 ...
- 【毕业设计_课程设计】基于opencv、dilb的员工人脸识别考勤系统
文章目录 0 项目说明 1 需求分析 2 总体设计 3 详细设计 4 效果展示 5 实验心得 6 项目源码 7 最后 0 项目说明 基于opencv.dilb的员工人脸识别考勤系统 提示:适合用于课程 ...
- 【毕业设计_课程设计】基于 K-means 算法的校园微博热点话题发现系统(源码+论文)
文章目录 0 前言 1 项目说明 2 开发环境 3 系统架构 4 研究结果 5 论文目录 6 项目工程 0 前言 基于 K-means 算法的校园微博热点话题发现系统 提示:适合用于课程设计或毕业设计 ...
- 【毕业设计_课程设计】基于Python的南京二手房数据采集及可视化分析
文章目录 0 项目说明 1 内容简介 2 应用技术介绍 3 数据采集 3.1 数据清洗 4 数据可视化 5 项目工程 0 项目说明 基于Python的南京二手房数据采集及可视化分析 提示:适合用于课程 ...
最新文章
- Java连接数据库 JDBC
- 超越RetinaFace,腾讯优图 ASFD 已在 WIDER FACE 霸榜半年!
- android用openGl ES绘制任意方程的三维空间图形
- /dev/fb0入门练习
- 苹果cms V8仿4567tv模板高清影视 完整无错电影模板
- python有趣的代码-python菜鸟教程,python好玩又简单的代码
- 关注SharePoint 2010 ,更要关注InfoPath 2010!
- Oracle递归sql
- 数模美赛LATEX傻瓜入门+快速上手+常见问题(不定期更新)
- Java 二分排序法
- java基本语法实验体会_实验一 Java 开发环境及基本语法
- 银行数字化转型导师坚鹏:《银行业同业竞争策略分析》
- Linux系统不响应SYN包的解决办法
- 手动修改dns服务器设置,如何修改DNS设置 修改DNS设置方法【详解】
- baiduRanking多站点批量百度排名查询
- 计算机科学家事迹,【CCF会员故事-14】计算机软件科学家谢涛:星辰大海,求思进取...
- 大牛约翰·卡马克语录
- ESP8266驱动SG90舵机控制开关灯(灯的开关)的折腾记录
- EPUB阅读APP推荐
- Oracle OCP学习——Catalog的配置与使用