个性化音乐推荐

转载 2015年07月07日 14:09:50
音乐,人类的灵魂,只有懂得音乐的人才懂得生活。 
每个人都离不开音乐这个东西,你可能不喜欢唱歌,但一定不会不喜欢听歌,尤其是那些美妙的音乐。
如今,有非常非常多的音乐流派和音乐人,不同音乐流派的音乐风格自然很不相同,而同一种音乐流派中不同的音乐人因为对音乐的理解不同也会有不同的音乐风格。
那么,如何准确地找到你所喜欢的音乐,准确地挖掘你可能会喜欢的音乐呢?
答曰:推荐系统。
在这里,可能会用到下面的几种思路:
<ul><li><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">协同过滤。</span></span>
</li></ul>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">如果我们只是提供音乐服务,而不是像社交网络那样提供交友服务的话,用item-based cf是个明智的方法。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">对于听歌,用1-5分来评价感觉不如用“喜欢”或者“不喜欢”这种方式的用户体验好。尽管喜欢或者不喜欢有点非黑即白的意思,但对于用户来说操作将会非常的简单。当然这是一种显式地反馈方式,往往我们得不到太多的这方面的反馈。那么要做好推荐,必须好好地挖掘用户的隐式反馈,比如,用户收听了这首歌的百分之多少之后点击了下一首,用户是否将歌曲进行分享等等。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">通过将分析用户行为得到的信息转换为对评分矩阵的一种填充,当然这种填充是在一定的confidence level上进行的。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">将用户的行为转换成具体的分数是一个比较主观的事情,需要用用户的显式反馈不断地修正转换成分数时的参数值。而且对于不同的人来说,他们的参数可能是不同的,比如,有的人喜欢在听了一首的前10%来表达他不喜欢这首歌,而有的人可能听了50%才会表达出这种意思。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">所以要做到真正的个性化,必须注意每个人而不是所有人的使用习惯。</span></span></p>


<ul><li><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">基于音乐的属性(或者说是tag)</span></span>
</li></ul>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">音乐的属性,或者是音乐带的tag信息,比如:歌手,风格,专辑,格式,时长。现在很多的个性化音乐服务提供商总是喜欢将这些tag信息称作是音乐的DNA。我个人觉得这种叫法有些不妥,因为这些tag信息只是一些概括,并没有真正的深入到音乐本身的属性中,所以最多只能称作音乐细胞。(当然我也理解,这么叫听起来远不如音乐DNA那么有技术含量)</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">利用音乐的tag信息,我们在提供服务前,就可以聚类,然后再在各聚类中进行音乐的相似度计算,以达到“一劳永逸“的效果。这时候,音乐其实就变成了一个向量,由这些tag以及它们所占的权重组成的一个音乐向量,然后可以用各种方法计算它们的相似度。当然有新的音乐入库的时候,我们只需要先找到它属于的那个聚类中,然后再计算相似度。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">这里,需要注意的一件事是各种tag的权重问题,我觉得权重的排序是:风格、歌手、专辑、时长、格式。因为大家喜欢一首歌,是因为这首歌的风格让你感觉舒服,当然也有很多的追星一族他们会喜欢一类人,比如周某某的歌,不管是能听清的还是听不清楚的他们都会喜欢。对于这类问题,只有慢慢地分析用户的收听习惯来个性化地决定权值。</span></span></p>


<ul><li><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">基于音乐的DNA</span></span>
</li></ul>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">上面说到的tag我认为是一种比较浅层次的音乐属性,而到底什么是音乐的DNA呢?</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">大家听到的歌曲本质上是一种机械波,具有所有波的属性,包括频率,振幅,周期。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">一种比较极端的方法,就是将库里的所有歌曲都转换成波的形式,然后对波进行相似度分析。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">当然这种方法听起来会很荒谬,但是可以考虑分析波的主成分。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">也可以先利用tag信息将音乐聚类分组,然后并行地用波形分析的方法对音乐进行相似度计算,这样可以省掉确定各个tag之间的权重的麻烦。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">(这种思路,比较YY,哈哈,大家看着玩就可以哈)</span></span></p>


<ul><li><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">混合推荐</span></span>
</li></ul>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">混合推荐的话,需要利用音乐的tag信息、用户的行为分析以及用户的评分矩阵来完成。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">用现在比较流行的matrix factor models将各种用户相关的信息包含到模型,然后迭代求解。</span></span></p>
<ul><li><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">利用天气进行推荐</span></span>
</li></ul>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">大家都有这么一种感觉,晴朗的天气我们更倾向于听一些欢快的歌曲,而阴雨的天气我们会比较倾向于听一些悲伤的歌曲。当然,也有的用户会在阴雨天收听一些欢快的歌曲来让自己happy起来。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">anyway,考虑天气因素是一种简单的方法来提高系统的智能程度的方法(这个简单是相对于分析用户的心情)。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">那么如何知道哪些歌曲属于欢快的歌曲还是比较悲伤的?</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">做个分类器,先对一些你听过的歌曲人工分为欢快和悲伤,然后学习这两类歌曲的特征,然后对未分类的歌曲进行分析来决定他们到底属于哪个类别。当然这是一种二分的情况,实际的歌曲不可能不是欢快就是悲伤,有许多的分类。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">那么如何分析歌曲是欢快还是别的感觉呢?</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">(a)一种基于分类的方法</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">可以考虑用音乐的DNA来分析,当然这个工作量也是非常大的。但完全可以离线做好一劳永逸。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">其实,有一种比较好的方法,就是让用户自己来对每首歌曲进行分类。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">具体的方法是在用户收听每个歌曲的时候让用户为这首歌添加一个表情。(我们会提供几个表情,不同的表情代表不同的分类,当然这个难度比让用户表达喜欢不喜欢更加困难)</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">拿到用户为每首歌添加的表情,我们可以以两种方式来用这个数据。</span></span></p>
<ul><li><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">将所有表情数据集中到一起,提供一种大众化的分类推荐。</span></span>
</li></ul>
<ul><li><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">针对每个用户的表情数据,提供一种个性化的分类推荐。因为毕竟不同的用户对同一首歌曲的理解都不相同。</span></span>
</li></ul>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">这样,我们就可以实现,当下雨天的时候,我们会将推荐给用户的列表中的比较悲伤的歌曲提前到列表的topN的位置。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">(b)一种基于统计的方法</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">我们在为用户提供音乐的服务,会记录一些静态的信息,比如音乐的tag,收听了多久,点击了哪些按钮等等。其实,我们可以也记录下用户在收听这些歌曲当时的天气信息。这样我们可能会得到下面的数据:</span></span></p>
<p><span style="font-family:Arial;font-size:14px;line-height:22px; white-space:pre-wrap;">身边   </span><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">2011.12.10 14:00-14:05     晴天</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">情非得已   </span></span><span style="font-family:Arial;font-size:14px;line-height:22px; white-space:pre-wrap;">2011.12.10 14:05-14:10     晴天</span></p>
<p><span style="font-family:Arial;font-size:14px;line-height:22px; white-space:pre-wrap;">。。。 。。。  。。。。 。。。</span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">机器学习中有一个最最经典的例子就是天气和去不去游泳的关系案例。</span></span></p>
<p><span style="font-family:Arial;"><span style="font-size:14px;line-height:22px; white-space:pre-wrap;">同样的思路,我们可以统计用户在听歌时的天气来做一些统计和学习,来预测用户在给定的天气条件下,他更可能喜欢的歌曲是什么,相当于对协同过滤或者混合推荐算法中给出的推荐列表的一种个性化智能化过滤。</span></span></p>

基于近邻用户协同过滤算法的音乐推荐系统

0. 摘 要基于近邻用户的协同过滤音乐推荐系统,主要是将与目标用户有相同行为和兴趣爱好的用户,形成一个最近邻的推荐群组,从最近邻推荐群组中产生最终的目标用户推荐列表。该推荐系统通过网络爬虫获取虾米音乐...
  • ZCF1002797280
  • ZCF1002797280
  • 2016年03月03日 11:04
  • 4170

网易云音乐推荐系统学习(1)

首先,推荐算法有三种常用的基本套路 1、基于内容的推荐(content-based filtering)。 是音乐信息检索的领域,学术上一般content-based是特指音频内容本身的,主要涉及f...
  • jim_cainiaoxiaolang
  • jim_cainiaoxiaolang
  • 2016年10月11日 18:57
  • 1207

个性化推荐综述

个性化推荐的本质是帮助用户找到自己感兴趣的物品,这里包括电商网站的商品,在线视频网站的电影作品,以及音乐网站上的音乐作品,这些使用场景,都非常的适合应用个性化推荐技术,帮助用户找到那边感兴趣又不容易找...
  • xiewenbo
  • xiewenbo
  • 2016年12月21日 15:13
  • 1077

个性化推荐算法 综述

随着互联网的迅速发展,接入互联网的网页与服务器数量也以指数形式迅猛增长。互联网的发展,使得海量信息以飞快的更新速度在我们眼前不断呈现。例如,卓越亚马逊上存在着上千万的图书,NetFlix上有数万部电影...
  • zhouyan8603
  • zhouyan8603
  • 2014年05月20日 15:14
  • 1765

机器学习4-x——音乐推荐系统代码实现

整理自coursera 代码和数据可以在这里下载。 import graphlab song_data = graphlab.SFrame('song_data.gl/') graphlab.c...
  • u014303046
  • u014303046
  • 2016年10月27日 10:56
  • 1329

个性化推荐系统概述

一、 个性化推荐系统简介 个性化推荐系统是建立在海量数据挖掘基础上的一种智能平台,可以模拟商店销售人员向顾客提供商品信息和建议,为顾客购物提供完全个性化的决策支持和信息服务,它的目标是既满足用户意识...
  • waze_7
  • waze_7
  • 2016年06月28日 11:11
  • 1457

个性化推荐系统方向简单介绍

先介绍下的咱们目前推荐系统的做的两个大方向:          1、基于自然语言处理的用户短期和长期兴趣+rank 排序。            推荐方法:a)、基于topic&keywrods等信息...
  • map_lixiupeng
  • map_lixiupeng
  • 2016年04月11日 17:40
  • 1192

标签个性化数据在推荐排序中的应用

标签个性化数据在推荐排序中的应用 导读  “个性化是这个时代最耀眼的特征,谁能更好更快的抓住用户的个性化需求,谁就将赢得商业的未来”——《个性化,商业的未来》 本文share的这个项目,是我...
  • ruidu
  • ruidu
  • 2014年06月03日 10:10
  • 574

谈谈国内几款个性化推荐系统插件

首先了解,什么是个性化推荐?个性化阅读?       个性化推荐是根据用户的兴趣特点和需求行为,向用户推荐用户感兴趣的信息和商品。随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量...
  • lzm18064126848
  • lzm18064126848
  • 2016年11月17日 20:07
  • 1753

4个方面,系统总结个性化推荐系统

作者:Placeless 全文共 7393 字 13 图,阅读需要 16 分钟 ———— / BEGIN / ———— 现在的人们面对信息过载问题日益严重,好的个性化推荐将能够很...
  • k7Jz78GeJJ
  • k7Jz78GeJJ
  • 2017年12月10日 00:00
  • 246
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:个性化音乐推荐
举报原因:
原因补充:

(最多只允许输入30个字)