一种基于用户关系嵌入模型的下一个兴趣点推荐方法与流程

文档序号:20999596发布日期:2020-06-05 22:32阅读:249来源:国知局
一种基于用户关系嵌入模型的下一个兴趣点推荐方法与流程
本发明属于神经网络和推荐系统的
技术领域
,尤其涉及一种基于用户关系嵌入模型的下一个兴趣点推荐方法。
背景技术
:随着基于位置的社交网络软件(如gowalla,foursquare等)的普遍应用,大量的签到信息已经被收集,利用这些丰富的签到数据给推荐用户感兴趣的下一个兴趣点(如景点,宾馆,饭店等)将会提升用户的服务体验和用户的忠诚度,同时也会给企业提升巨大的利润。现有的推荐方法只考虑用户的社交关系(即朋友关系),这些研究是基于这种假设“在社交网络中,朋友经常具有相同或相似的品味”。然而,朋友关系不能很好的表示用户偏好,利用朋友关系进行推荐存在以下缺陷,比如(1)社交软件上的朋友关系不能准确表示现实生活中的朋友关系,由于种种原因,在生活中为朋友关系的用户可能并没有在社交软件中互加好友,并且社交软件中两个好友也存在彼此并不认识或者完全没有联系的情况;(2)两个用户为朋友关系他们可能具有不同的偏好,因此在推荐用户访问下一个兴趣点的时候可能会受到朋友关系的负面影响。而且现有的研究都忽略非朋友关系,实际上,非朋友关系也能在一定程度上反应用户相似的偏好。比如美食爱好者通常会访问一些相同或者相似的兴趣点,因此他们在历史签到兴趣点中通常具有更多相同的访问兴趣点。技术实现要素:针对现有技术无法对用户关系进行有效的建模,忽略了偏好相似关系,本发明所解决的技术问题在于提供一种基于用户关系嵌入模型的下一个兴趣点推荐方法,能够有效的对用户关系进行建模,考虑复杂的用户关系,通过利用本发明来整合用户关系能够有效提升推荐系统的准确率。为了解决上述技术问题,本发明通过以下技术方案来实现:本发明提供一种基于用户关系嵌入模型的下一个兴趣点推荐方法,包括以下步骤:步骤s1:根据朋友关系和用户历史签到记录数据分别建立朋友关系表和偏好相似关系表,通过这两个表建立用户关系图;步骤s2:根据建立的用户关系图采用随机游走算法得到用户关系序列,用户关系序列经过word2vec词嵌入模型得到每个用户的低纬嵌入向量;步骤s3:利用用户的低纬嵌入向量对神经网络的用户嵌入层参数进行初始化,使用门控循环单元给出下一个兴趣点推荐。可选的,所述步骤s1的具体步骤为:s11、建立朋友关系表,朋友关系表由数据集提供的用户朋友关系数据集建立;s12、建立偏好相似关系表,偏好相似关系表由数据集中每个用户历史访问过得兴趣点的记录建立,如果用户访问过某一个兴趣点,那么偏好关系表中相应位置的数值为1,否则为0;s13、建立用户关系图,用户关系图根据步骤s11中的朋友关系表和步骤s12中的偏好相似表得到。进一步的,s21、根据用户关系图,首先从图中的任意一个节点开始,利用n次随机游走算法在此节点上进行随机游走,随机游走的步长为c,通过随机游走算法,最终能够得到n条序列长度为c的用户关系序列;s22、利用word2vec词嵌入技术对用户关系序列进行预训练,通过将用户关系序列中的用户看成是语言模型中的词,对用户关系序列进行预训练,得到每一个用户的低纬嵌入向量,利用skip-gram语言模型对用户关系序列进行预训练。可选的,所述步骤s3的具体步骤如下:s31、gru模型训练,gru模型的每步输入对应着用户签到序列中的每次签到,用户的嵌入向量和签到兴趣点的嵌入向量分别由神经网络对应的不同的嵌入层得到,其中用户的嵌入层参数是由步骤s22中预训练用户的嵌入向量初始化得到;s32、利用gru模型进行下一个兴趣点推荐,得到用户历史签到序列,将序列数据送入训练后的gru模型后会得到一个输出向量,通过得到的输出向量与每一个兴趣点的嵌入向量内积的方式得到用户下一步访问每一个兴趣点可能性;s33、推荐准确率计算,选择acc@n评价方法作为模型准确率的标准。进一步的,所述步骤s21中计算图中一个节点到另一个节点的随机游走算法的公式如下:其中,probability(ui|uj)表示图中节点i到节点j的转移概率,f(ui,uj)表示从ui到uj边的权值,um表示与ui有边相连的节点。所述步骤s22中利用skip-gram对用户关系进行训练的过程为:使用基于hierarchicalsoftmax的skip-gram语言模型学习用户的嵌入向量,基于hierarchicalsoftmax的skip-gram语言模型的每个输入样本形式为(u,context(u)),其中u表示序列中的一个用户,context(u)是序列中与u邻近的用户,u的嵌入向量表示为xu,根节点到u所在的叶子节点的总路径长度表示为lu,表示用户u在路径中相应的哈夫曼树编码,在此基础上,用户u预测context(u)的可能性表示为:其中p(w|u)可表示为:其中,xut表示xu的转置操作,之后,用对数似然形式得到语料库中所有用户的联合概率为:其中σ(·)是sigmoid函数,是对应于的参数,为了得到用户u的最优向量表示,需要将上述目标l最大化,因此,需要用函数l对和xu分别求偏导:用户的嵌入向量xu的更新公式可以写成:至此,可以得到用户低维嵌入向量表示,其中,η为模型训练时的学习率,被设置为0.025,滑动窗口大小设置为5,用户关系嵌入向量的长度设置为64维,通过以上嵌入过程,每个用户可以用1个64维的向量表示。进一步的,所述步骤s31中一个用户签到序列可定义为s={(u,p1,t1),(u,p2,t2),(u,p3,t3)...},其中p表示签到兴趣点,t表示签到时间,在t时刻,gru的状态更新由以下公式计算得到:其中,{u1,u2,u3,w1,w2,w3}∈rd×d和{b1,b2,b3}∈rd是神经网络需要训练的参数矩阵,ht-1表示前一时刻的隐层状态,rt和zt分别为重置门和更新门,为候选状态,ht表示隐藏层输出向量,向量表示用户在t时刻用户签到的输入向量。进一步的,所述步骤s32中给用户推荐下一步将要访问的兴趣点的计算公式如下:其中,表示兴趣点p的嵌入向量,t表示向量转置,表示用户u在t+1时刻将会访问兴趣点p的可能性。可选的,所述步骤s33中acc@n的计算公式如下:其中,|l|表示测试集中总的测试实例个数,#hit@n表示整个测试集中推荐成功的次数,所有测试实例的平均值作为最终准确率的计算结果。由上,本发明的基于用户关系嵌入模型的下一个兴趣点推荐方法将偏好相似关系引入到推荐模型中,增强了用户关系的表示,解决了现有方法只考虑用户朋友关系的片面性导致推荐模型的局限性问题,有效提高了推荐模型的准确率。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下结合优选实施例,并配合附图,详细说明如下。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例的附图作简单地介绍。图1为本发明的基于用户关系嵌入模型的下一个兴趣点推荐方法的模型图;图2为本发明的基于用户关系嵌入模型的下一个兴趣点推荐方法的用户关系图;图3为本发明的实验模型对比图;其中,(a)为在gowalla数据集上模型准确率对比图;(b)为在ca数据集上模型准确率对比图。具体实施方式下面结合附图详细说明本发明的具体实施方式,其作为本说明书的一部分,通过实施例来说明本发明的原理,本发明的其他方面、特征及其优点通过该详细说明将会变得一目了然。在所参照的附图中,不同的图中相同或相似的部件使用相同的附图标号来表示。本事实例中,为了测试本发明利用两类用户关系对下一个兴趣点的推荐的准确性,本发明在gowalla数据集和ca数据集上进行实验,说明本发明的准确性。其中,gowalla数据集和ca数据集是全世界计算机领域英文文献数据集。ca数据集包括生活在美国加利福尼亚州的4163名使用者在foursquare应用上的签到记录,包括483813个签到信息、121142个不同的兴趣点。gowalla数据集包括2009年2月至2010年10月期间的196591个用户的6442890条签到记录,本发明提取在加利福尼亚州和内华达州两个地点的签到数据用于实验,因为这两个相邻的地区没有显著的文化差异。两个数据集都包括用户朋友关系数据,用户朋友关系在两个数据集中以一对无向边表示。对于数据集的预处理,我们移除不活跃的用户和兴趣点,保留至少被10个不同用户访问过的兴趣点和至少有10次签到记录的用户。表1给出了处理后的数据集信息。在实验评价中,每个用户签到记录的前70%作为训练集,最后20%作为测试集,其余的10%作为验证集数据用于模型调参。表1:实验数据集统计信息(数据处理后)数据集用户数兴趣点数签到数ca22483092109280gowalla57628028274476如图1至图3所示,本发明的基于用户关系嵌入模型的下一个兴趣点推荐方法,主要应用于当前热门的基于位置的服务(lbs)系统和空间兴趣点推荐领域,其整体处理流程包括如下步骤:步骤1:根据朋友关系和用户历史签到记录数据分别建立朋友关系表和偏好相似关系表,通过这两个表建立用户关系图,具体步骤如下:步骤1.1:建立朋友关系表,朋友关系表由数据集提供的用户朋友关系数据集建立。用户关系表中的每行表示两个用户在社交软件中为朋友关系。朋友关系表如表2所示:表2:朋友关系表useriduserid12211441说明:表中userid表示用户的编号,如表中第一行数值表示userid=1的朋友是userid=2。步骤1.2:建立偏好相似关系表,偏好相似关系表由数据集中每个用户历史访问过得兴趣点的记录建立。如果用户访问过某一个兴趣点,那么偏好关系表中相应位置的数值为1,否则为0。偏好关系表如表3所示:表3:偏好相似关系表poiuser1user2user3user4user5p110111p201010p311010说明:表中user1-user5表示不同的用户编号,p1-p3表示不同的兴趣点,图中的数值表示用户是否访问过该兴趣点。步骤1.3:建立用户关系图,用户关系图根据步骤1.1中的朋友关系表和步骤1.2中的偏好相似表得到。用户关系图为无向图,图中的不同的节点表示不同的用户,边上的权值表示用户关系的强弱。根据用户朋友关系表(表2),如果两个用户是朋友关系,我们就将图中相应的两个用户节点之间的边的权重增加1。需要注意的是:用户朋友表中如果两个用户是朋友关系(如user1-user2,user2-user1),他们在朋友关系中表示两条不同的数据,我们也只在用户关系图相应的边的权值加1。根据偏好相似关系表(表3),如果任意两个用户访问过同一个地点,那么图中相应边的权值也增加1。最终能够得到两类用户关系的用户关系图。用户关系图如图2所示。步骤2:根据建立的用户关系图采用随机游走算法得到用户关系序列。通过用户关系序列,利用word2vec词嵌入技术中的skip-gram语言模型对用户关系序列进行预训练学习,从而得到每一个用户的低纬嵌入向量。具体步骤如下:步骤2.1:得到用户关系序列。根据用户关系图,首先从图中的任意一个节点开始,利用n次随机游走算法在此节点上进行随机游走,随机游走的步长为c。通过随机游走算法,最终能够得到n条序列长度为c的用户关系序列。进一步地,所述步骤2.1中计算图中一个节点到另一个节点的随机游走算法的公式如下:其中,probability(ui|uj)表示图中节点i到节点j的转移概率,f(ui,uj)表示从ui到uj边的权值,um表示与ui有边相连的节点。需要注意的是,f(ui,uj)与f(uj,ui)不一定相同。步骤2.2:利用word2vec词嵌入技术对用户关系序列进行预训练。通过将用户关系序列中的用户看成是语言模型中的词,这样就能对用户关系序列进行预训练,得到每一个用户的低纬嵌入向量。利用skip-gram语言模型对用户关系序列进行预训练。进一步地,所述步骤2.2中利用skip-gram对用户关系进行训练的过程可描述如下:本发明使用基于hierarchicalsoftmax的skip-gram语言模型学习用户的嵌入向量表示。skip-gram模型用当前的用户预测序列中当前用户周围的用户。用户嵌入向量的训练过程是在用户关系序列中最大化预测其邻近用户的概率。通过这样的过程,用户关系将被引入到嵌入向量中。基于hierarchicalsoftmax的skip-gram语言模型的每个输入样本形式为(u,context(u)),其中u表示序列中的一个用户,context(u)是序列中与u邻近的用户,u的嵌入向量表示为xu,根节点到u所在的叶子节点的总路径长度表示为lu,表示用户u在路径中相应的哈夫曼树编码,在此基础上,用户u预测context(u)的可能性表示为:其中p(w|u)可表示为:其中,xut表示xu的转置操作。之后,用对数似然形式得到语料库中所有用户的联合概率为:其中u表示数据集中所有用户的集合,σ(·)是sigmoid函数,是对应于的参数,为了得到用户u的最优向量表示,需要将上述目标l最大化,因此,需要用函数l对和xu分别求偏导:用户的嵌入向量xu的更新公式可以写成:至此,可以得到用户低维嵌入向量表示,其中,η为模型训练时的学习率,被设置为0.025,滑动窗口大小设置为5,用户关系嵌入向量的长度设置为64维,通过以上嵌入过程,每个用户可以用1个64维的向量表示。步骤3:利用门控循环单元(gatedrecurrentunit,gru)结合步骤2.2得到的每一个用户的低纬嵌入向量以及用户的签到历史序列进行下一个兴趣点推荐。根据得到的用户嵌入向量对模型的用户嵌入层参数进行初始化,通过gru模型对用户的历史签到记录进行训练,利用训练后的gru模型给出用户最终的下一个兴趣点推荐结果列表,具体步骤如下:步骤3.1:gru模型训练。gru模型的每步输入对应着用户签到序列中的每次签到。用户的嵌入向量和签到兴趣点的嵌入向量分别由神经网络对应的不同的嵌入层得到。其中用户的嵌入层参数是由步骤2.2中预训练用户的嵌入向量初始化得到,并且用户嵌入层参数在神经网络模型的训练中无法进行训练。进一步地,所述步骤3.1中一个用户签到序列可定义为s={(u,p1,t1),(u,p2,t2),(u,p3,t3)..,其中u表示用户,p表示签到兴趣点,t表示签到时间。下面我们对gru模型的进行介绍:gru是循环神经网络(recurrentneuralnetwork,rnn)的一种变体,可以解决rnn网络中的长依赖问题,包括重置门(rt)和更新门(zt)两种类型的门控单元,没有存储单元,它们共同控制信息在神经网络中的流动状态。在t时刻,gru的状态更新由以下公式计算得到:其中,{u1,u2,u3,w1,w2,w3}∈rd×d和{b1,b2,b3}∈rd是神经网络需要训练的参数矩阵,ht-1表示前一时刻的隐层状态,为候选状态,ht表示隐藏层输出向量,向量表示用户在t时刻用户签到的输入向量。步骤3.2:利用gru模型进行下一个兴趣点推荐,得到用户历史签到序列,将序列数据送入训练后的gru模型后会得到一个输出向量,通过得到的输出向量与每一个兴趣点的嵌入向量内积的方式我们可以得到用户下一步访问每一个兴趣点可能性(分数)。然后(根据得到的分数)按排名顺序给出一个包含用户下一步将要访问的前10个兴趣点列表。进一步地,所述步骤3.2中给用户推荐下一步将要访问的兴趣点的计算公式如下:其中ht表示gru模型中t时刻隐藏层的输出,表示兴趣点p的嵌入向量,t表示向量转置,表示用户u在t+1时刻将会访问兴趣点p的可能性。步骤3.3:推荐准确率计算。acc@n评价方法经常用于评价推荐任务或者预测任务的准确率,因此我们选择acc@10作为本发明模型准确率的标准。只要用户下一个访问的兴趣点出现在含有top-10个兴趣点的列表中,我们就认为做出正确推荐,结果为1。进一步地,所述步骤3.3中acc@n的计算公式如下:其中,|l|表示测试集中总的测试实例个数,#hit@n表示整个测试集中推荐成功的次数(数量),所有测试实例的平均值作为最终准确率的计算结果。下面我们介绍模型参数更新的训练过程:我们应用广泛使用的贝叶斯个性化排序(bayesianpersonalizedranking,bpr)和时序反向传播算法(backpropagationthroughtime,bptt)来训练我们的模型参数。bpr算法是一种矩阵因式分解方法,它使用成对排序损失。bpr的基本假设是用户倾向于选择的项目比未选择的项目。在bpr算法中,给定一个用户访问过的兴趣点p和一个用户未访问过的兴趣点可以给出成对偏好概率为:其中θ表示所有需要学习的参数的集合,σ(·)是sigmoid函数,可以定义为:y=1/(1+e-x)。结合负对数似然,我们可以求解下列目标函数:其中λ是正则化系数。此外,利用bptt算法可以进一步学习gru中的参数。根据公式(11),给出推导即可计算出隐藏层中所有参数对应的梯度。本实施例中,我们将不采用用户关系嵌入的模型作为基线,与本发明中利用两类用户关系的嵌入模型的推荐算法进行对比,推荐用户的top-10个下一个兴趣点作为准确率计算的结果。其中模型的参数设置如下,gru神经网络隐藏层具有80个神经元,用户嵌入向量的维度和地点嵌入向量的维度都为64维,学习率为0.001。两个模型实验准确率对比结果如图3所示。图中横坐标表示模型训练的迭代次数,纵坐标显示的是模型的准确率。从图3可以看出,结合用户关系嵌入模型的下一个兴趣点推荐算法明显优于基线算法,说明本发明的模型能够充分学习到复杂的用户关系,进而利用结合用户关系给用户提供更为准确的下一个兴趣点推荐。同时,从图3中可以看出,应用本发明的模型能够使gru具有更快的收敛速度,在很少的迭代次数情况下就能达到较优的推荐效果,因此能够节省大量的时间成本,更具有现实的商业应用价值。在推荐系统中,一些研究已经证明社交关系/朋友关系可以有效提高推荐系统的准确率,现有的推荐系统方法只考虑用户的社交关系(即在社交软件中两个用户为朋友关系)。然而,在现实生活中,即使两个用户不是朋友关系,他们(如美食爱好者,运动爱好者)也分别具有相同的偏好,本发明把这种关系称为偏好相似关系。由于现有的推荐方法对用户关系考虑不充分,本发明提出了一个新颖的用户关系嵌入模型,该模型能够充分考虑这两类用户关系。为了有效的对用户关系建模,该模型首先对两类用户关系分别建立用户关系表,然后整合这两类用户关系表建立用户关系图。之后,根据建立的用户关系图,利用重启动随机游走算法得到用户关系序列,通过用户关系序列用word2vec词嵌入技术来学习用户低纬嵌入向量的表示。如果两个用户的用户关系很紧密,那么这两个用户对应的低纬嵌入向量在嵌入空间中也具有更近的距离。为了评价本发明提出的用户关系嵌入模型的有效性,本发明应用循环神经网络模型结合本发明提出的用户关系模型在两个公开的数据集上进行实验,实验结果表明,结合本发明提出的用户关系嵌入模型,在一定程度上提高了推荐系统的准确率和神经网络的收敛速度。以上所述是本发明的优选实施方式而已,当然不能以此来限定本发明之权利范围,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和变动,这些改进和变动也视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1