跨平台的音乐推荐算法
摘要
传统的音乐推荐算法往往是根据用户的听歌记录来对其进行推荐,但是对于一个新用户传统的推荐算法就无能为力了。在本文中,我们使用机器学习中典型关联分析(CCA)技术期望能够通过加入用户的社会属性(微博)来改进原始的推荐算法,从而更加精准的推荐给用户他们喜欢听的音乐,另外,相较于其他推荐算法,我们能够实现推荐的冷启动。即使用户之前没有听过任何音乐,我们也能够从他的微博数据中挖掘出他喜欢听的音乐类型。
关键词:
跨平台 音乐推荐 机器学习
1. 简介
21世纪是互联网时代,人们已不可避免的被卷入了这样一场互联网全球化的浪潮中。人们利用互联网买到自己心仪的东西,收听自己喜欢的音乐,观看自己欣赏的视频等等。然而,与线下的世界不同,互联网世界是一个信息过载的世界,这就增大了每个人从中获取到对自己有用信息的难度。随着时代的演变和技术的成熟,人们期望将计算机当作一个“服务员”的角色,通过推荐的手段帮助人们找到合适自己的信息,从而避免将时间浪费在从庞大繁杂的数据中寻找信息的过程中。这就要求我们计算机从业者寻找更好的算法以推荐给用户更合适的信息。
实际上,推荐算法作为一个机器学习的分支出现要追溯到1995年,而它的蓬勃发展则是在2000年之后,因此它是一个相对比较创新的理论,由于用户的喜好是一种感性的偏好,随着时间、心情甚至周围的环境不同而不同,因此现阶段推荐算法的准确率并不高。然而,据美国巨头Amazon公司的估计,推荐算法将每年为它们带来多达20%的利润,因此,对于推荐算法的研究和改进是十分有必要的,是能够产生巨大的社会效益的。
本文的主要研究工作是跨平台的音乐推荐。考虑到推荐系统无法获知到一个新用户的听歌记录,即所谓的“冷启动”问题,我们期望通过跨平台的技术来获取用户的偏好。在本实验中,我们选用了微博平台作为系统获取用户喜好的来源,通过跨平台的信息来为用户进行更好的音乐推荐。本文的主要贡献点有:首先使用网易云音乐和微博的数据建立了一套用于进行跨平台音乐推荐的数据集,第二使用了CCA算法进行音乐推荐,并在一定程度上提升了推荐结果。
在接下来的部分,第2部分主要是对推荐算法的一些相关工作进行了描述,第3部分主要讲述本文的主要算法,第4部分主要是对实验的一些描述,第5部分是对本文的总结以及我们对未来的音乐推荐系统的展望。
2. 相关工作
2.1 传统音乐推荐算法概述
传统推荐算法主要分成两类,一种是基于历史数据的推荐算法[11],另一种是协同过滤算法[6]。基于历史数据的推荐算法也是推荐算法的萌芽,我们将目标信息通过特征提取作为输入,用户的喜好作为输出构造一个分类器或者回归器,然后预测时我们可以根据结果(可以是0/1的二分类,也可以是一个实数)选取排在前面的信息推荐给用户,这种方法实际上是一个传统机器学习的过程,这里不再赘述。
这里重点说一下协同过滤算法(Collaborative Filtering, CF),这是推荐系统中很有创新性的一个算法。我们以基于用户的协同过滤算法为例,算法的思想很简单,我们认为,如果两个用户兴趣相似,则可以把这个用户的信息偏好推荐给另一个用户。计算两个用户的相似程度可以把他们在全部信息集上的偏好量化后定义一种距离(点积,欧几里得距离等),推荐时可以用最近邻算法找到每个用户邻近的几个与他兴趣相似的用户,把他们的信息偏好加权推荐给这个用户。与之相对应的是基于物品(item)的协同过滤算法,只是将定义用户的相似度变成了定义物品的相似度而已。
协同过滤相较于基于历史数据的推荐算法而言优点在于它能更多的挖掘到用户的隐藏属性,也就是说,通过用户的历史数据挖掘不出来的属性,不过,由于协同过滤涉及到构造一个全用户数量乘以一个全信息数量的矩阵,对于大数据而言要求更高的计算速度,因此需要用到更多的计算资源和更好的矩阵运算优化策略,另外,协同过滤算法的另一个问题是矩阵的稀疏性,比如我们在做音乐推荐时,一个用户听过的歌曲毕竟是有限的,因此得到的用户-音乐矩阵会十分稀疏,这不利于计算用户之间的相似程度。
然而,无论是基于历史数据的推荐算法还是协同过滤,都涉及到一个无法解决的问题,我们称之为冷启动问题。冷启动问题是指,如果我们并不知道用户曾经的数据,换句话说,该用户是一个新用户,没有任何的先验知识,那我们的预测过程就没有办法进行,推荐信息也就只能是随机推荐了。基于上面这一些不足,在目前推荐算法的20年发展中,研究者们不断提出了更准确,涉及特征更广,适用面更广的算法,它们或是基于现有算法的改进,或是完全新的算法。我们在下一讲中进行叙述。
2.2 跨平台音乐推荐算法概述
2.2.1协同过滤衍生算法——空间分解算法[9,10,12]
与协同过滤一样,我们要分析的是一个用户×音乐的矩阵A,矩阵的每一项表示某用户对某音乐的偏好程度,可以用0/1二分类表示,也可以是一个实数,之前提及过,这个矩阵是一个稀疏矩阵,大约只有0.1%左右的元素是被确认的。那么,最简单直接能被想到的方法是引入一个隐空间,将这个矩阵拆分成描述用户特性和隐空间关系的矩阵U及隐空间和音乐特性关系的矩阵V,这个隐空间可以被理解为情感因素。我们要做的是让矩阵积UV^T尽可能接近于原矩阵A,这个过程可以用最小二乘和梯度下降的方法解决。这样,我们就可以用矩阵积UV^T去估计原矩阵A,从而也就能够知道矩阵A中那些未知的元素。
当然,上面描述的只是这类方法中最基本的架构。在算法的实际应用中,为了增加算法的准确程度,我们往往利用“多媒体”这一因素,引入用户-用户关系(好友关系),音乐-音乐关系(音乐近似程度),扩展原来的用户-音乐关系(用户偏好),以运用更多的信息,那么很自然的,可以用UU^T来估计用户-用户关系,VV^T来估计音乐-音乐关系,最终要达到的目标变成了使得这三个矩阵积分别近似于相对应的三种关系矩阵。当然,在这类方法的发展中,还有另外的一些变种,比如由单一的隐空间扩展为用户隐空间和音乐隐空间等等,这些算法也在实际的应用中取得了非常不错的推荐成功率。
而这类算法相对于传统的协同过滤也解决了冷启动等诸多问题,这些问题都可以用矩阵的形式化描述通过数学方法来解决,因此是一类前景非常不错的算法。
2.2.2 基于知识图谱的联合超图算法(Unified Hypergraph Algorithm)[8]
一个好的推荐算法不能只考虑到用户的喜好,因为每个用户都是社会人,他们的喜好或厌恶都或多或少的受到身边人的影响,而这种社交网络的引入会增加推荐算法的正确率。因此,如果我们在推荐算法中引入图来描述这一过程,是最好不过的选择。
在本算法中,我们用点表示一个信息的发出者,它可以是一个用户,可以是一首音乐,可以是一位艺术家,亦可以是一张专辑等等,而我们用边来表示信息发出者之间的关系。值的注意的是,这些边不是普通的边,而是一个超边,它可能不止两个端点,举例来说,如果有N个用户属于同一个音乐群(或者说有着相同的音乐爱好),那么我们会用一条超边将这N个用户相连,这些边可以描述几乎跟推荐相关的所有信息关联,比如用户好友关系,音乐相似程度,音乐与艺术家的关系,音乐与专辑的关系等等共9类关系。我们将每个节点都赋上一个实数权重,那么应该会有如下两个关系:
(1)同一条边的端点权重应该趋于相同。
(2)端点权重应该与已知信息保持一致。
基于这两点,我们可以用数学的方式来解这个图模型,从而获取到所有点的权重。完成了整个的推荐过程。
这个算法的优势在于它不仅能够向用户推荐音乐,还能完成其他多种多样的功能,比如像用户推荐艺术家,专辑,还可以向用户推荐相似的用户等等,甚至还可以预测一首音乐会被哪些用户所喜欢,这些信息通过图模型完全的展示了出来,这也是它相较传统推荐算法最为突出的一点。
2.2.3 多观点学习算法(Multi-View Learning)[1]
这类推荐算法的最大特点是依托于除音乐本身的社交平台,比如微博数据,用户发过的图片数据等等,这类方法跳出了音乐推荐这个相对狭窄的领域,它的基本观点是:用户的社交数据能够体现用户的性格或是一些内在的东西,从而我们可以跨平台的了解一个用户收听音乐的行为,从而能够更精准的推荐歌曲。这类算法通常会构造几组不同平台用户的特征向量,然后联合学习这几组特征空间来推荐音乐,因此叫做多观点学习算法,它探究的是不同特征空间之间的关联。
这类学习算法比较繁多,我们主要介绍CCA,HENN[5]和Corr-AE[2]算法,而前两个算法正是本实验中使用的算法,为简化起见,在后文中我们都用两组特征来描述,一组是用户的社交平台数据(如微博文本特征),另一组是用户偏好的音乐特征。
典型关联分析(Carnonical Correlation Analysis, CCA)是一个十分经典的算法,它的思想是找到两组变换,分别针对两组特征向量,把它们投影到同一预先定义好维度的隐空间中去,然后通过在隐空间中使用最近邻算法做推荐。衍生算法有KCCA和DCCA[3],它们分别通过核变换方法和深度神经网络方法将线性CCA变成非线性CCA。
HENN算法(Heterogeneity-Entropy based Neural Network)分为三个部分:降维-编码-降维过程,第一个降维过程是利用信息熵,降低两组向量的维度,保证降维后的两组新向量尽可能相关,编码过程是将两组新向量通过神经网络合成为一组向量,从而实现将两组向量投影到同一空间中去。如果这个空间的维度依然很大,那么会通过第二次降维过程把这一组向量降到一个更合适的维度,完成整个算法的运行。
Corr-AE算法利用了神经网络中经典的AutoEncoder三层模型,它将两组向量分别放进两组AutoEncoder中,然后学习出两组AutoEncoder的参数,保证两组AutoEncoder的隐层关联系数最大。
总而言之,这三类办法都是期望将两组向量投影到同一空间或是可互相变换的两组空间中去,然后基于这个空间做推荐。这个空间我们可以理解为用户的内在因素。
这类算法最大的特点就是完美解决了冷启动的问题,因为它们甚至不需知道用户之前的音乐数据,只需知道用户的社交平台数据就可以轻松完成推荐。
3. 算法描述
另外,如果我们发现两组向量的关系不是简单的线性关系的时候,可以引入核函数的方法,这就是KCCA算法,而同样如果训练参数时使用了深度神经网络的技术,就进阶成为DCCA[3]算法。在本次实验中我们所用的均为线性CCA算法。
分享让更多人看到
推荐阅读
相关新闻
- 评论
- 关注