APP下载

融合均值分割与word2vec的矩阵分解推荐算法

2019-05-10梁顺攀原福永张付志

小型微型计算机系统 2019年5期
关键词:首歌曲均值次数

梁顺攀,王 辰,原福永,张付志

1(燕山大学 信息科学与工程学院,河北 秦皇岛 066004)2(河北省计算机虚拟技术与系统集成重点实验室,河北 秦皇岛 066004)

1 引 言

推荐系统通过对用户的历史数据进行分析,来理解用户的偏好,进而在待推荐内容中选择用户感兴趣的内容推荐给用户.在这个过程中,对用户偏好的理解和建模是十分关键的步骤,只有在正确地、准确地理解用户的偏好的情况下,才能够为用户筛选出真正感兴趣的内容.用户的反馈信息可以从用户对内容的评分、评论,或其它由用户主动提供的反馈信息中获取,这种可以直接反映出用户偏好的反馈信息被称为显式反馈信息.相对于显式反馈信息,并不是由用户主动提供,不能够直接反映出用户对于内容的偏好的反馈信息被称为隐式反馈信息,例如用户的浏览记录、购买历史记录、收听时长等.

目前,推荐系统中使用的反馈信息多数为显式反馈信息,而隐式反馈信息使用的较少[1,2].这是因为显式反馈信息可以直接的反映出用户的偏好,而隐式反馈信息需要经过处理才能表达用户的偏好,所以它的准确度相比显式反馈要低.但在实际应用中,隐式反馈信息比显式反馈信息更加容易获得,并且在一些场景中只能够获得隐式反馈信息.因此,近年来许多的研究人员投入到隐式反馈推荐的研究中,并提出了新的算法和解决思想[3-6].根据研究显示,在未来的推荐系统中,隐式反馈推荐完全可能替代显式反馈推荐[7].

隐式反馈推荐中存在的最大问题就是缺少负反馈信息,直接使用传统的矩阵分解推荐算法会出现预测结果中没有负样本,导致推荐系统不具有判断能力的问题[8,9].此外,矩阵分解推荐算法面临着数据稀疏的问题,当训练集过于稀疏时会影响推荐结果的准确度.

本文的研究内容是解决隐式反馈推荐中缺少负反馈的问题,并降低数据稀疏度,首先,提出均值分割方法来划分预测结果中的正样本与负样本,并使用均值分割方法改进矩阵分解推荐算法;然后,将word2vec技术应用在隐式反馈推荐中,用来计算相似度,并使用得到的相似度信息按照特定的方法填充隐式评分矩阵;最后,使用Last.fm真实世界数据集进行实验,实验表明本文提出的推荐算法可以解决隐式反馈推荐中缺少负反馈的问题,提高推荐结果的准确度.

2 相关工作

2.1 矩阵分解算法

矩阵分解是机器学习中的一种降维方法,在矩阵分解的思想中,假设每位用户和每首歌曲都存在着自己的特征,这些特征被称为特征元素.以此为基础,矩阵分解算法尝试将用户对于歌曲的偏好分解为用户对于特征元素的偏好和歌曲所含有的特征元素的量.

(1)

其中向量pu表示用户u对每个特征元素的喜欢程度,向量qm表示歌曲m中每个特征元素的含有程度.从公式(1)中可以发现如果用户u对特征元素a的喜欢程度很高,并且歌曲m中特征元素a的含有度很高,那么用户u就会很喜欢歌曲m,也就是说如果歌曲m中大量含有用户u喜欢的特征元素,那么用户u就会喜欢歌曲m.

(2)

2.2 word2vec技术

word2vec是Google在自然语言处理领域公布的一个用于计算词向量的技术.word2vec技术可以将文本内容通过训练的方式快速地转化为低维向量空间上的词向量,并且训练出来的词向量可以用来计算词语间的相似度[10].word2vec技术中包括CBOW和skip-gram两种模型来训练词向量.CBOW模型的输入内容是上下文词语,即context(w),然后预测这些词语的中心词是词语w的概率;skip-gram模型的输入是中心词语w,然后预测它的上下文是context(w)中的词语的概率.除了以上两种训练模型,word2vec技术还给出了两种训练方法来提高词向量的训练速度,分别是Hierarchical Softmax和Negative Sampling.Hierarchical Softmax使用哈夫曼树来优化输出层的计算效率.Negative Sampling是Tomas等人提出的一种随机负采样方法[11],与Hierarchical Softmax相比,Negative Sampling选用更加简单的随机负采样方法来替代复杂的哈夫曼树来训练最终结果,进一步提高了模型的训练速度.

本文使用word2vec技术中的skip-gram模型和Negative Sampling训练方法计算相似度信息,因为skip-gram模型与寻找相似音乐的方法更接近,都是通过一个输入信息查找与之相近的信息,而Negative Sampling训练方法可以提高训练速度,适合数据量大的隐式反馈推荐.然后使用得到的相似度信息预测填充隐式评分矩阵,降低矩阵的稀疏度.

3 基于均值分割的隐式反馈推荐算法

3.1 基于均值分割的矩阵分解算法

在隐式反馈推荐中,用户的数据信息仅包括正反馈信息,没有负反馈信息,如果将矩阵分解算法直接使用在隐式反馈推荐中,则矩阵分解训练过程中所有预测结果都会向正样本拟合,导致最终的预测结果都是正样本,推荐系统只能够从预测结果中判断出用户喜欢的物品,不能够判断出用户不喜欢的物品,从而推荐系统缺少判断力,所以矩阵分解算法不可以直接使用在隐式反馈推荐中.本文提出均值分割方法改进矩阵分解推荐算法,使其可以应用在隐式反馈推荐中.

定义歌曲网站中用户的集合为U,其中任意一位用户为用户u,用户集合U中的用户总数量为I;歌曲的集合为M,其中任意一首歌曲为歌曲m,歌曲集合M中的歌曲总数量为J.在隐式反馈推荐系统中,用户u的每一条历史播放记录将会作为用户u对歌曲m的一次点击和收听行为,表示为(u,m),由(u,m)组成的训练数据集为Ω.隐式反馈推荐系统通过这些历史播放数据计算得到用户-歌曲隐式评分矩阵Rum:

Rum=(u,m,cum)

(3)

其中cum表示用户u收听歌曲m的总次数.定义rum表示用户u对歌曲m的隐式评分,取值范围在[0,1]之间.因为隐式反馈信息只能表现出用户的正反馈信息,即用户喜欢什么,所以这里的rum的取值范围只有正值.

在显式评分推荐当中,每位用户对歌曲都会有显式评分数据,推荐系统会使用这些显式评分数据来理解用户的喜好,对用户的喜好进行建模.在隐式反馈推荐中,推荐系统无法获得用户对物品的显式评分数据,但是实际中还是存在着一个用户u对歌曲m的真实评分.这里假设用户u对歌曲m的真实评分为rum,通过公式(1)可以得到:

(4)

这里的rum在隐式反馈推荐中是无法获得的,推荐系统无法从隐式反馈信息中计算出用户对物品的真实评分,但是隐式反馈可以推测出用户对物品的相对评分,即上文中所提到的隐式评分rum.在歌曲网站中,通过用户的历史播放记录可以统计得到用户在过去某段时间内听每首歌曲的次数,从而推断用户更喜欢哪首歌曲.一般用户收听次数越多的歌曲,表示用户越喜欢这首歌曲,隐式评分rum的值也会越高,反之,用户收听次数较少的歌曲,表示用户对这些歌曲的喜欢程度较低一些,对应的隐式评分也会更低一些.可以发现隐式评分反应的是用户对于歌曲的相对喜好程度,而真实评分反应的是用户的绝对喜欢程度,如果找到用户的平均喜好值,便可以使用其来搭建真实评分与隐式评分之间的关系.

(5)

(6)

(7)

上式是均值分割方法与矩阵分解算法相融合后得到的损失函数.在传统的矩阵分解算法中,因为没有对预测结果的限制条件,所以预测结果都会向着训练样本拟合,而在隐式反馈推荐中因为只有正反馈样本,所以会导致预测结果都是正样本.在矩阵分解推荐算法中融入均值分割方法后,可以得到如下公式:

(8)

得到损失函数之后,使用随机梯度下降法来求解最小化问题,更新公式如下:

(9)

(10)

其中α为训练速率.训练结束后就可以得到同时包括正样本与负样本的预测隐式评分矩阵,之后使用top-N排序方法,得到推荐列表为用户进行推荐.

(11)

其中c(mm)表示歌曲m的总共播放次数.本文将每首歌曲的特征值与这首歌曲的播放次数相关联,如果这首歌曲的播放次数越高,它对歌曲平均值的贡献也会越大,相对如果一首歌曲的播放次数越少,它对歌曲平均特征值的贡献也会越小.这样计算出来的歌曲平均特征值将会更加准确.

用户的平均特征值同理,收听歌曲次数越多的用户,对平均值的影响会更大,所以用户平均特征值的计算改为如下形式:

(12)

其中c(uu)表示用户u的总共听歌次数.此外,考虑到每位用户的听歌时间和听歌次数各不相同,本文根据用户的听歌次数改进了隐式评分的计算方法,改进后隐式评分的计算公式如下:

(13)

从公式(13)中可以得到,如果用户收听这首歌曲的次数接近用户的收听平均次数,则计算出来的隐式评分会接近0.5,如果用户收听这首歌曲的次数小于用户的收听平均次数,则计算出来的隐式评分会在(0,0.5)之间,如果用户收听这首歌曲的次数大于用户的收听平均次数,则计算出来的隐式评分会在(0.5,1)之间.

下面给出基于均值分割的矩阵分解算法的形式化算法描述.

算法1.基于均值分割的矩阵分解算法

INPUT:用户隐式评分矩阵;

OUTPUT:预测用户隐式评分矩阵.

1) FORk=1 to n DO

2) FORobserved(u,m)∈ΩDO

6) END FOR

8) FORi= 1 to I DO

10) END FOR

12) FORj= 1 to J DO

14) END FOR

15) END FOR

3.2 基于word2vec的矩阵填充方法

在隐式反馈推荐中,通过用户数据生成的隐式评分矩阵是十分稀疏的,直接使用稀疏的隐式评分矩阵进行矩阵分解,会因为训练数据过少,导致预测结果随机性过大,最终影响推荐结果的准确度.所以本文使用word2vec技术计算歌曲的相似度,并通过相似度信息来填充原始隐式评分矩阵,降低评分矩阵的稀疏度.

在歌曲网站中,假设每位用户的隐式评分是相对独立的,对于任意一位用户u,定义用户u已经存在隐式评分数据的歌曲集合为V,没有隐式评分数据的歌曲集合为W,集合V与集合W的并集为全体歌曲.定义一个歌曲相似度阈值τ,当两首歌曲之间的相似度大于τ的时候认为这两首歌曲相似,两首歌曲之间的隐式评分具有参考价值.word2vec通过歌曲训练文本来计算相似度,本文优化了训练文本的计算方法,提高相似度的准确性.

本文使用用户历史收听记录作为歌曲训练文本的数据源,将每位用户的历史收听记录作为一个训练样本,在每个训练样本中歌曲按照收听时间排序,使得同一时间段内(1天)收听的歌曲的相似度提高,并且,将相同演唱者的歌曲放到一起,提高这些歌曲的相似度.如果用户连续收听同一首歌曲,则只保留一个歌曲收听记录,因为在word2vec的训练过程中是将相邻的歌曲的相似度提高,而提高同一首歌曲的相似度是没有意义的,这样只会增加无用的训练时长.

本文提出的基于word2vec的填充评分矩阵的方法(WSMF,Word2Vec Similarity Matrix Filling)过程如下:

1)对于任意用户u,将用户u存在隐式评分的歌曲放到集合V中,将用户u不存在的隐式评分的歌曲放到集合W中;

2)依次选择歌曲集合V中的一首歌曲i,在歌曲集合W中寻找与歌曲i相似度最高的前n首歌曲,并去除其中相似度小于相似度阈值τ的歌曲,记为歌曲m;

3)通过公式(14)计算用户u对歌曲m的填充隐式评分rum,并保存对应的smi.

rum=rui·smi

(14)

其中rui表示用户u对歌曲i的隐式评分;smi表示歌曲i与歌曲m的歌曲相似度.如果歌曲m已经存在填充隐式评分,则需要参考歌曲相似度进行取舍.假设已存在的填充隐式评分的歌曲相似度为sold,新计算出来的填充隐式评分的歌曲相似度为smi,如果smi大于sold则使用新的填充隐式评分,如果smi小于sold则不改变填充隐式评分.

使用上面的方法计算用户没有听过的歌曲的隐式评分,来填充原始隐式评分矩阵中缺失的数据.经过矩阵填充之后,可以得到一个更加密集的预测隐式评分矩阵,之后将得到的填充过的隐式评分矩阵使用基于均值分割的矩阵分解算法进行训练,得到最终的推荐结果.

下面给出基于word2vec的矩阵填充方法的形式化算法描述.

算法2.基于word2vec的矩阵填充方法

INPUT:歌曲相似度、隐式评分矩阵;

OUTPUT:填充隐式评分矩阵.

1) FORi∈VDO

2) FORminW

3) IFsmi>τANDsmi>soldDO

4)rm=ri×smi

5) END FOR

6) END FOR

本文提出的基于均值分割的隐式反馈推荐算法,首先通过word2vec技术,根据隐式反馈数据来计算歌曲向量,并得到歌曲的相似度;之后,使用得到的歌曲相似度信息来预测填充隐式评分矩阵中具有较高相似度的部分;然后,使用基于均值分割的矩阵分解算法训练填充隐式评分矩阵,得到预测隐式评分矩阵;最后,对预测隐式评分矩阵进行top-N排序,得到top-N推荐列表,为用户推荐喜欢的歌曲.算法描述图如图1所示.

图1 基于均值分割的推荐算法描述图Fig.1 Mean-segmentation recommendation algorithm description

4 实验结果与分析

本文选用Last.fm数据集进行实验,Last.fm数据集包括992位用户从2009年到2010年的19,150,868条歌曲播放记录,并将实验结果同PMF推荐算法、baisedMF推荐算法、iMF隐式反馈推荐算法[12]和SPMF隐式反馈推荐算法[13]相比较,分析实验结果.

在推荐系统领域,为了测试与比较不同推荐算法的优劣,存在着很多的评测标准.本文根据预测隐式反馈评分矩阵,生成针对用户的top-N推荐列表,并根据推荐列表中测试数据的位置判断推荐列表的质量,这种评测方法称为百分位排序均值(Mean Percentile Rank,MPR).与MAE与RMSE不同,MPR不会因为测试集中没有负样本导致评测结果不准确.MPR的计算公式如下:

(15)

其中T表示测试数据集,|T|表示测试数据集中的隐式评分个数,表示在针对用户u的推荐列表中,物品i的排序位置.计算出来的MPR值越小,说明推荐算法预测的推荐结果越准确.为了保证实验的准确性,防止训练过程出现过拟合现象,本文选用五折交叉验证法进行实验.

Last.fm数据集中包括了大量的用户历史收听记录.为了进行实验,需要先对Last.fm数据集进行预处理,得到隐式评分矩阵和歌曲训练文本.之后按照文中的伪代码编写Python下的推荐算法核心代码,将歌曲训练文本使用word2vec技术进行训练,训练过程中η取0.025,歌曲向量维度取10,窗口大小取10,训练后得到歌曲向量并计算歌曲之间的相似度,之后使用得到的歌曲相似度来填充隐式评分矩阵,得到填充隐式评分矩阵,将得到的填充隐式评分矩阵使用矩阵分解算法进行训练,得到预测隐式评分矩阵并生成top-N推荐列表,使用测试集测试推荐列表的质量,计算出MPR的值.在矩阵分解的训练过程中,α取为0.01,λ取为0.1,分别测试训练次数k和特征元素个数f对预测推荐结果的影响.当f=20和k=20的情况下,预测结果中正负样本的分布比例如图2所示.固定k=20,特征元素的数目分别取f=5,10,20,50,100进行实验,实验结果如图3所示;固定f=20,训练次数分别取k=10,20,50,80,100进行实验,实验结果如图4所示.

从图2中可以看出,在Last.fm数据集中,传统的矩阵分解算法PMF和biasedMF的推荐结果中负样本的数目非常小,推荐系统无法从预测结果中分辨出用户不喜欢的歌曲.本文提出的基于均值分割的隐式反馈推荐算法的推荐结果中正样本和负样本的数目趋于一致,推荐系统可以从推荐结果中分辨出用户喜欢的歌曲和不喜欢的歌曲,使推荐结果具有判断能力,解决了隐式反馈缺少负反馈的问题.

从图3和图4可以看出,基于均值分割的隐式反馈推荐算法相比于PMF推荐算法、biasedMF推荐算法和iMF隐式反馈推荐算法得到了更低的MPR值.这是由于基于均值分割的隐式反馈推荐算法的预测结果具有判断能力,可以分辨出用户不喜欢的内容,使得用户喜欢的内容的排名更加靠前,并且基于word2vec的相似度矩阵填充方法可以降低数据的稀疏度,所以预测推荐结果的准确度得到了提高.此外,特征元素的个数以及训练次数的增加也会改善使用基于均值分割的隐式反馈推荐算法得到的推荐列表的质量,提高推荐的准确度.

图3 特征元素对推荐结果的影响Fig.3 Effect of feature elements on the recommendation results

图4 训练次数对推荐结果的影响Fig.4 Effect of training times on the recommendation results

实验结果表明本文提出的基于均值分割的隐式反馈推荐方法不仅解决了隐式反馈推荐中缺少负反馈的问题,同时在一定程度上缓解了数据稀疏带来的问题,提高了推荐结果的准确度.

5 结 论

本文针对隐式反馈推荐中缺少负反馈的问题提出了基于均值分割的隐式反馈推荐算法,以解决推荐结果中没有负样本的问题,并降低评分矩阵稀疏度,提高了推荐结果的准确度.首先,均值分割方法将歌曲通过训练的方式划分到喜欢和不喜欢两类中,使推荐结果中同时包含正负样本,让推荐系统可以判断出用户的喜好.其次,为了解决推荐系统中存在的数据稀疏问题,提出基于word2vec的相似度矩阵填充方法,使用word2vec技术根据歌曲播放记录计算得到歌曲之间的相似度,利用得到的歌曲相似度数据填充原始评分矩阵,得到更加密集的填充隐式评分矩阵.最后,对本文提出的改进算法进行实验,结果表明,本文改进的矩阵分解方法解决了在隐式反馈推荐下的预测结果不包含负样本的问题,并提高了推荐结果的准确度.

未来可以使用更加准确的矩阵分解模型对本文的推荐算法进行改进.本文仅选用了较为基本的矩阵分解方法进行研究与实验,这里可以通过使用用户和物品偏置项、或上下文信息来扩展矩阵分解方法,来进一步提升推荐结果准确度.

猜你喜欢

首歌曲均值次数
2020年,我国汽车召回次数同比减少10.8%,召回数量同比增长3.9%
最后才吃梨
俄罗斯是全球阅兵次数最多的国家吗?
均值—方差分析及CAPM模型的运用
均值—方差分析及CAPM模型的运用
浅谈均值不等式的应用
均值不等式的小应用
应用均值定理“四”注意