基于近邻用户协同过滤算法的音乐推荐系统
0. 摘 要
基于近邻用户的协同过滤音乐推荐系统,主要是将与目标用户有相同行为和兴趣爱好的用户,形成一个最近邻的推荐群组,从最近邻推荐群组中产生最终的目标用户推荐列表。该推荐系统通过网络爬虫获取虾米音乐网站真实未脱敏用户的行为信息,采用余弦相似度作为求解相似矩阵的算法,从而为目标用户推荐喜欢的音乐,达到推荐目标。
1. 引言
1.1 研究背景
人类已经进入信息爆炸的时代,面对这么庞大的信息,是很难进行人为筛选的,特别是我们经常接触到的信息,比如电影、音乐等等。我们该如何去选择。这给用户带来了很大的困难,在这种情况下一个好的推荐系统是非常有用的。
对于音乐推荐系统来说,推荐系统主要是通过一些已有的用户行为习惯,找到有相同爱好的用户群组,然后分析群组中的用户行为,获取目标用户对歌曲的评分,从而实现个性化的音乐推荐服务,让用户能够通过推荐系统找到自己最感兴趣的音乐。
目前豆瓣FM、网易云音乐等在音乐推荐方面做的比较成功的公司,他们不仅有大量的用户,而且有丰富的用户行为信息,通过用户行为数据这些公司可以挖掘大量有价值的信息,从而做到更加个性化的推荐服务。
1.2 协同过滤推荐算法
协同过滤技术是目前研究最多、应用最广泛的电子商务推荐技术之一[1]。协同过滤算法的主要思想是,根据具有相同的行为兴趣的用户,可以将所有用户按照其行为习惯以及兴趣爱好分成几个推荐的用户群组,对于某个目标用户的推荐可以根据其所属的用户组中的其他用户的偏好来进行推荐。
协同过滤算法可分为两类,分别是基于用户行为的的协同过滤算法和基于内容上的协同过滤算法[2]。基于用户的协同过滤算法主要是通过与其有相同行为和兴趣爱好的用户,形成一个最近邻的推荐群组,最终的推荐行为是从这个推荐群组中产生的。基于内容的协同过滤算法是根据用户对相同itemitem的评价来得到最终目标用户的评分结果,从而实现推荐。本文的音乐推荐系统主要是基于用户行为的协同过滤算法。
2. 音乐推荐系统及实现算法
该音乐系统的整个系统框架构成如图1所示。该框架可以分成以下几个部分:数据集获取、数据预处理、数据分析及算法设计和最终推荐结果的输出部分。
图 1 音乐推荐系统框架构成
2.1 数据集获取
在互联网上有一个叫MillionSongDatasetMillion Song Dataset[3]音乐数据集,它上面收集了目前100多万流行歌曲的信息,以及部分用户的行为信息。但所有数据都是进行脱敏后的数据,只能做研究,要想进行真实的音乐推荐服务,需要获取真实的用户行为数据。该音乐推荐系统最终目的是构建一个真实可用的基于Android移动端的音乐推荐系统,本文只涉及推荐系统构建及算法设计部分,Android端的设计不在本文考虑范围,所以所有信息必须是真实可靠未脱敏数据。
为获取真实可靠未脱敏数据,本文利用目前主流webmagicwebmagic爬虫进行真实数据的获取。目前针对虾米音乐社区进行了用户行为信息爬取,最终获取了大约50万条真实未脱敏的用户行为数据。数据schemasschemas包括4部分,userID是虾米音乐网站真实用户昵称,SongName是该用户听过的歌曲名,Singer是该歌曲的演唱者,Count是用户听过该歌曲的次数。原始数据集数据如表1所示:
表1 爬取虾米音乐网站得到的原始数据集
UserID | SongName | Singer | Count |
---|---|---|---|
唐喜 | 卡农D大调 | 群星 | 1 |
sora | 往日时光 | 黛青塔娜 | 8 |
king | 水城 | 万晓利 | 3 |
糖小孩 | 盛夏光年 | 林忆莲 | 1 |
sora | 卡农D大调 | 群星 | 2 |
2.2 数据预处理
由于爬取到的原始数据有的信息丢失,我们需要对原始数据集进行信息规整,删除丢失信息的用户数据数据。并且原始数据记录的是每个用户每天的行为,但实际情况一个用户不可能只有一条记录,比如某用户昨天听了某歌曲共3次,今天该用户又听了该歌曲5次,那么数据预处理部分我们要对这部分用户的行为信息进行预处理,得到该用户该歌曲共8次,最终我们要得到用户在历史行为上的行为总和。此处数据预处理是用阿里巴巴的ODPS(OpenDataProcessingServices)ODPS(Open Data Processing Services)平台进行处理。预处理代码参见Github[4]。
2.3 数据分析及算法设计
2.3.1 用户评价矩阵
推荐的第一步我们需要得到每个用户对每首歌的一个评价矩阵。这里我们用表1的数据为例,得到表2的用户评价矩阵R。矩阵的第一行表示不同的歌曲,矩阵的第一列表示不同的用户,矩阵中对应的坐标是某用户听过某首歌的次数,为空表示该用户没有听过该首歌。
表2 用户评价矩阵
… | 卡农D大调 | 往日时光 | 水城 | 盛夏光年 | … |
---|---|---|---|---|---|
唐喜 | 1 | ||||
sora | 8 | ||||
king | 3 | ||||
糖小孩 | 2 | 1 | |||
… |
2.3.2 用户相似度求解
衡量用户相似度的方法有很多,如余弦相似度、皮尔逊相似度、Jaccard相似度、LSH等等,本文利用最经典的余弦相似度。余弦相似度公式如下[5]:
Cos(U_1,U_2)=\frac{\sum_{y\in{R_{u_1}}\bigcap\in{R_{u_2}}}R_{{u_1},y}*R_{{u_2},y} } {\sqrt{\sum_{y\in R_{U_1}}R^2_{u_1,y}}*\sqrt{\sum_{y\in R_{U_2}}R^2_{u_2,y}}}
2.3.3 推荐评分
通过2.3.2得到用户相似度之后,需要求解目标用户的最近邻用户,这里用快速排序算法来获取TopKTopK个最近邻用户,即与目标用户相似度最高的前K个用户。接下来是用最近邻用户的评分来给目标用户进行推荐。音乐推荐系统评分的公式[7]如下:
Recommend(u,i)=\frac{\sum_{v\in U}Cos(u,v)*R_{v,i} } {\sqrt{\sum_{v\in U}|Cos(u,v)| } }
Recommend(u,i)Recommend(u,i)表示用户对音乐评分值,UU是与目标用户有相同爱好的用户群组,RR是评价矩阵。得到推荐矩阵之后,再利用快速排序算法来提取目标用户评分最高的前K<script type="math/tex" id="MathJax-Element-469">K</script>首歌作为最终的推荐结果。
3. 算法结果输出
通过上面的推荐算法之后得到最终的目标用户的推荐结果,推荐结果表如表3所示。其中SongName是推荐的歌名,Singer是其演唱者,Socre是评分值,就是最终推荐的依据。
表3 推荐结果表
SongName | Singer | Socre |
---|---|---|
奇妙能力歌 | 陈粒 | 123.07836337387708 |
易燃易爆炸 | 陈粒 | 106.76131934980407 |
Night Time | The fin. | 43.718180863139686 |
Loving Strangers | Russian Red | 43.246429879044435 |
Sorrow Is My Lover | 热斑 | 34.292579972249285 |
青春修炼手册 | TFBOYS | 32.82627477172324 |
4. 总结
本文的主要工作是利用真实未脱敏的虾米音乐用户的行为数据,采用已有的基于用户的协同过滤算法,完成了一个推荐算法的所有过程,实现了推荐的基本功能,最终得到我们对目标用户的推荐结果。
参考文献
[1]LAWRENCERD, ALMASIGS, KOTLYARV, et al. Personalization of supermarket product recommendations
[ R]. IBM Research Report,2000(7):173-181
[2]徐小伟. 基于信任的协同过滤推荐算法在电子商务推荐系统的应用研究. 东华大学. 2013
[3]http://labrosa.ee.columbia.edu/millionsong/
[4]https://github.com/Aaron0927/musicRecommend
[5]https://zh.wikipedia.org/wiki/余弦相似性
[6]郭艳红.推荐系统的协同过滤算法与应用研究.大连理工大学博士学位论文.2008:1-41
[7]李雪. 基于协同过滤的推荐系统研究. 吉林大学. 2010
【完】
基于近邻用户协同过滤算法的音乐推荐系统相关推荐
- java基于springboot+vue协同过滤算法的音乐推荐系统
音乐是人类永恒的话题,无论是在古代还是现代人们对音乐都有一种非常的热爱在里面,同时音乐也寄语了人们对美好事物的憧憬,很多时候人们在试听音乐的时候并不能够及时的找到适合自己的音乐,而且当下很多音乐都是收 ...
- java计算机毕业设计基于ssm的协同过滤算法的电影推荐系统(源代码+数据库+Lw文档)
项目介绍 "互联网+"的战略实施后,很多行业的信息化水平都有了很大的提升.但是目前很多行业的管理仍是通过人工管理的方式进行,需要在各个岗位投入大量的人力进行很多重复性工作,使得对人 ...
- “泰迪杯”挑战赛 - 基于用户协同过滤算法的电影推荐系统(附算法代码)
目录 第 1 章 绪论 1.1.研究背景 1.2.国际发展形势第 2 章 基于用户协同过滤推荐技术 第 2 章 基于用户协同过滤推荐技术 2.1 电子商务推荐系统概述 2.2 协同过滤推荐技术 第 3 ...
- 【计算机毕业设计】Java基于协同过滤算法的音乐推荐系统
毕设帮助.开题指导.源码交流,联系方式见文末.. 音乐检索系统的开发目的是使音乐检索模式转变成信息管理,为音乐检索人员提供方便条件.对音乐检索的实际情况进行调研之后,进行详细的需求分析,对现有的管理模 ...
- Python基于用户协同过滤算法电影推荐的一个小改进
之前曾经推送过这个问题的一个实现,详见:Python基于用户协同过滤算法的电影推荐代码demo 在当时的代码中没有考虑一种情况,如果选出来的最相似用户和待测用户完全一样,就没法推荐电影了.所以,在实际 ...
- 推荐算法概述(基于用户的协同过滤算法、基于物品的协同过滤算法、基于内容的推荐算法)
"无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程." 目前推 ...
- 基于聚类分析和协同过滤算法的营养膳食分析系统的设计与实现
1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,基于聚类分析和协同过滤算法的营养膳食分析系统的设计与实现. 1. 协同过滤的算法思想 1.1. 基于内容的推荐中不足之处 基于内容的推荐方法 ...
- [推荐算法]ItemCF,基于物品的协同过滤算法
[推荐算法]ItemCF,基于物品的协同过滤算法 标签: ItemCF基于用户的协同过滤算法 2015-03-09 15:11 4144人阅读 评论(1) 收藏 举报 本文章已收录于: 分类: ...
- 【推荐系统】基于模型的协同过滤算法
基于模型的协同过滤算法 本节介绍基于模型的协同过滤算法1在Top-N推荐中的应用. 核心思想是 通过隐含特征(latent factor)联系用户兴趣和物品 . 思路:对于某个用户,首先得到其兴趣分类 ...
- 【推荐系统】基于物品的协同过滤算法
基于物品的协同过滤算法 目前业界应用最多的算法. 给用户推荐和他们之前喜欢的物品相似的物品. 其主要通过分析用户的行为记录计算物品之间的相似度.物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都 ...
最新文章
- oracle ebs fah,EBS常用表
- libtorchWindows中的使用
- java web 全局_JavaWeb - 【Listener】初始化全局资源
- leetcode 1239. 串联字符串的最大长度
- JavaScript标准对象:地图
- 围棋棋盘怎么编程python_围_围是什么意思_围字怎么读_围的含义_围字组词-新东方在线字典...
- springmvc 监听器getWriter() has already been called for this response问题
- Oracle→序列、视图、索引、存储过程、存储函数、包、触发器、表分区、锁表解锁表、事务、PLSQL、备份恢复、游标
- c语言常用词汇下载,C语言常用词汇表
- Troubleshoot: R.Layout.Main cannot be resolved
- 《别输在不会表达上》— 综合素质提升书籍
- SQL Server 2008 白皮书
- python万能头文件_c++的‘万能头文件’真的万能吗?
- U盘无法格式化--量产工具成功救活
- 4.致远插件的初使用 1Rest远程调用项目介绍
- Ubuntu关闭开机自启动服务
- android系统定制教程,Android系统DIY修改 定制第三方ROM教程
- 我的职业是计算机英语,职业英语系列:计算机英语
- 计算机组装配置(CPU 后面的字母 有U,H,Y,HQ,M 怎么区别?)
- Web3.0入口-MPC钱包和智能合约钱包