1.本发明涉及数据挖掘技术领域,尤其涉及一种好友推荐方法、装置、设备和存储介质。
背景技术:2.随着时代的进步,手机、电脑等网络终端逐渐走进每个人的生活中,用户每天的出行轨迹中都包含了大量的兴趣点(points-of-interest,poi)信息。一个常见的生活场景是:几位好友相约前往一家餐馆用餐,并在网络上留下关于这家餐馆的评论。这样的信息我们常常把它归为位置社交网络(location-based social networks,lbsn)。位置社交网络不仅反映了用户的历史访问轨迹,同样也反映了用户的部分社交网络,这其中就隐藏着非常丰富的时空信息。给用户推荐现实生活中可能存在的好友不仅可以帮助用户扩展社交圈子,同时便于商家进行精准广告推送,还有利于城市管理者了解城市中的人口聚居和流动情况,因此从已有的用户位置社交网络中给用户推荐新的好友一直是一项重要的研究内容。
3.目前已有的工作主要围绕着用户和兴趣点之间的关系进行,以前的一些方法主要是从位置社交网络数据中挖掘出用户的爱好,然后通过用户爱好是否相同来直接简单粗暴地判断他们是否可能成为好友。随着深度学习技术的发展,大量的研究者试图使用深度学习的方法,建立关于用户和兴趣点之间的深度学习网络从而进行好友推荐。但是这些方法大多使用的是深度学习的基础知识,未能深度统一建模用户、兴趣点、时间这些因素。
4.在《social link inference via multiview matching network from spatiotemporal trajectories》(zhang w,lai x,wang j,ieee transactions on neural networks and learning systems,2020)中,通过融合所有数据的不同的视图信息来分别从时间、空间、社交网络三个视图下对应设置时间序列匹配模块、位置匹配模块和关系匹配模块来挖掘时空关系,最后融合三个模块所挖掘出来的信息来判断用户是否为好友。该方法虽然从时间、空间、社交网络三个视图下对应设置时间序列匹配模块,但却把这三个要素割裂开来,特别是社交网络与时空信息,使得模型忽略了这些要素之间的互相影响。虽然模型设置的三个模块可能从不同视图挖掘出位置社交网络的各方面潜在信息特征,但是这种相互割裂开来的做法还是有一定的弊端。
5.在《graph convolutional networks on user mobility heterogeneous graphs for social relationship inference》(wu y,lian d,jin s,et al)中,通过把位置社交网络建模成为一个三层的异质图:用户层、兴趣点层和用户—兴趣点交互层。用户层中用户节点之间的边权值为用户之间的见面次数,兴趣点层中兴趣点之间的边权值为两个兴趣点在所有用户轨迹中连续出现的次数。用户—兴趣点交互层中用户与兴趣点之间的边权值为用户访问这个兴趣点的次数。该方法把位置社交网络建模成异质图,但是在它所建模的异质图中,节点与节点之间的边(连接关系)只存在一种,如用户与兴趣点之间的边只存在访问签到这一种关系,然而现实世界中,兴趣点与用户之间的关系是多样的。同时,该方法中,
兴趣点之间的关系也仅仅局限于在用户轨迹的接连出现的次数。因此,该方法中的异质图的数据表示能力不足,无法更加深入地挖掘其中的时空关系信息。
技术实现要素:6.本发明所要解决的技术问题是:提供一种好友推荐方法、装置、设备和存储介质,可很好地体现出位置社交网络不同要素之间复杂的连接关系,便于更加深入地挖掘其中的时空关系信息,从而可提高推荐准确性。
7.第一方面,本发明提供了一种基于位置社交网络的好友推荐方法,包括:获取位置社交网络数据,并根据所述位置社交网络数据,构建社交异质多重图,所述社交异质多重图中的节点包括用户节点和兴趣点节点,当两个节点之间存在边时,所述两个节点之间存在至少一种边类型的边;将所述社交异质多重图输入训练好的异质多重图神经网络模型,输出各节点的最终特征向量;分别计算各用户节点的最终特征向量与其他用户节点的最终特征向量之间的相似度,并根据所述相似度进行好友推荐。
8.第二方面,本发明还提供了一种基于位置社交网络的好友推荐装置,包括:构建模块,用于获取位置社交网络数据,并根据所述位置社交网络数据,构建社交异质多重图,所述社交异质多重图中的节点包括用户节点和兴趣点节点,当两个节点之间存在边时,所述两个节点之间存在至少一种边类型的边;输入模块,用于将所述社交异质多重图输入训练好的异质多重图神经网络模型,输出各节点的最终特征向量;推荐模块,用于分别计算各用户节点的最终特征向量与其他用户节点的最终特征向量之间的相似度,并根据所述相似度进行好友推荐。
9.第三方面,本发明还提供了一种电子设备,所述电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面提供的基于位置社交网络的好友推荐方法。
10.第四方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面提供的基于位置社交网络的好友推荐方法。
11.本发明的有益效果在于:通过构建社交异质多重图,可以使得位置社交网络数据成为一个整体,以便在后续更加深入地挖掘其中的时空关系信息,从而更好地辅助后续的好友推荐任务的实现;通过异质多重图神经网络模型,从社交异质多重图中挖掘出潜在的时空数据信息,聚合相连节点及其相连边上的信息,最终输出各节点的特征向量;最后通过计算特征向量之间的相似度来进行好友推荐,可以提高推荐的准确性。
附图说明
12.图1为本发明提供的一种基于位置社交网络的好友推荐方法的流程图;图2为本发明提供的一种基于位置社交网络的好友推荐装置的结构示意图;
图3为本发明提供的一种电子设备的结构示意图;图4为本发明实施例一的异质多重图神经网络模型的结构与流程的示意图;图5为简单图、异质简单图和异质多重图的示意图;图6为本发明实施例一的社交异质多重图的示意图;图7为本发明实施例一的异质多重图神经网络模型与现有推荐模型的对比示意图。
具体实施方式
13.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
14.在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子计算机程序等等。
15.此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本技术的范围的情况下,可以将第一信息为第二信息,且类似地,可将第二信息称为第一信息。第一信息和第二信息两者都是信息,但其不是同一信息。术语“第一”、“第二”等而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
16.如图1所示,一种基于位置社交网络的好友推荐方法,包括:s101:获取位置社交网络数据,并根据所述位置社交网络数据,构建社交异质多重图,所述社交异质多重图中的节点包括用户节点和兴趣点节点,当两个节点之间存在边时,所述两个节点之间存在至少一种边类型的边;s102:将所述社交异质多重图输入训练好的异质多重图神经网络模型,输出各节点的最终特征向量;s103:分别计算各用户节点的最终特征向量与其他用户节点的最终特征向量之间的相似度,并根据所述相似度进行好友推荐。
17.其中,异质多重图神经网络模型可包括特征转换模块、边级注意力聚合模块和语义级注意力聚合模块;所述特征转换模块用于将所述社交异质多重图中各边的权值向量转换为纬度相同的权值向量;所述边级注意力聚合模块,用于计算各节点对应各边类型的边的边级注意力向量;所述语义级注意力聚合模块用于计算各节点类型对应各边类型的注意力权值,并根据所述各节点类型对应各边类型的注意力权值,分别对各节点对应各边类型的边的边级注意力向量进行加权求和,得到各节点的特征向量。
18.本发明通过构建社交异质多重图,可以使得位置社交网络数据成为一个整体,可
在后续更加深入地挖掘其中的时空关系信息,从而更好地辅助后续的好友推荐任务的实现;通过异质多重图神经网络模型,从社交异质多重图中挖掘出潜在的时空数据信息,学习用户节点在向量空间中的表示,聚合相连节点及其相连边上的信息,最终输出各节点的特征向量,服务于后续的好友推荐任务;最后通过计算特征向量之间的相似度来进行好友推荐,可以提高推荐的准确性。
19.在一个可选的实施例中,所述位置社交网络数据包括用户的好友关系和历史访问轨迹以及兴趣点的位置和类别,所述历史访问轨迹包括用户访问过的兴趣点及其对应的访问时间,所述社交异质多重图中的节点类型包括用户和兴趣点,边类型包括朋友、签到、同社区、同类别和共现;所述步骤s101,包括:将一天划分多个预设时长的第一时间段;分别根据各用户的历史访问轨迹中的各兴趣点的位置,计算轨迹中心点位置,作为各用户的家庭住址;构建与各用户和各兴趣点一一对应的用户节点和兴趣点节点,并分别生成各节点的节点向量;若两个用户之间存在好友关系,则在所述两个用户对应的用户节点之间构建边类型为朋友的边,并根据所述两个用户的历史访问轨迹,分别统计所述两个用户在各第一时间段内的见面次数,作为所述边类型为朋友的边的权值向量;若一用户的历史访问轨迹中存在一兴趣点,则在所述一用户对应的用户节点和所述一兴趣点对应的兴趣点节点之间构建边类型为签到的边,并分别统计所述一用户在各第一时间段内访问所述一兴趣点的次数,作为所述边类型为签到的边的权值向量;若一用户的家庭住址与一兴趣点之间的距离小于预设的距离阈值,则在所述一用户对应的用户节点和所述一兴趣点对应的兴趣点节点之间构建边类型为同社区的边,并将所述一用户的家庭住址与一兴趣点之间的距离作为所述边类型为同社区的边的权值向量;若两个兴趣点属于同一类别,则在所述两个兴趣点对应的兴趣点节点之间构建边类型为同类别的边,并将所述两个兴趣点之间的距离作为所述边类型为同类别的边的权值向量;若两个兴趣点同时存在于同一用户的历史访问轨迹中,则在所述两个兴趣点对应的兴趣点节点之间构建边类型为共现的边,并将所述两个兴趣点的共现次数作为所述边类型为共现的边的权值向量。
20.本发明采用了异质多重图来对位置社交网络数据进行建模,在异质多重图中不仅可以存储多种节点和多种连接关系,更重要的是还可以存储两个节点中可能存在的多种相互连接关系,而现有的简单图和异质简单图都无法捕捉处理这种信息,即异质多重图可以很好地解决异质简单图的数据表示能力不足的问题,可以表现出不同要素之间复杂的连接关系,更广泛适用于真实世界的各种数据建模。
21.在一个可选的实施例中,所述根据所述两个用户的历史访问轨迹,分别统计所述两个用户在各第一时间段内的见面次数,作为所述边类型为朋友的边的权值向量,包括:根据所述两个用户的历史访问轨迹,判断所述两个用户是否访问过同一兴趣点;若否,则将所述两个用户在各第一时间段内的见面次数均设为0;
若是,则分别获取所述两个用户对应所述同一兴趣点的访问时间,并计算访问时间差;若所述访问时间差小于预设的见面时差阈值,则令所述两个用户在对应所述同一兴趣点的访问时间所属的第一时间段的见面次数加一。
22.从上述描述可知,若两个用户访问同一个兴趣点的时间差小于预设的见面时差阈值,则认为这两个用户在这个兴趣点有一次见面事件。优选地,见面时差阈值可设为1小时。
23.在一个可选的实施例中,所述步骤s102,包括:s1021:将所述社交异质多重图输入异质多重图神经网络模型,输出各节点的特征向量;s1022:根据预设的训练集中的各用户节点对的好友关系以及各用户节点对中的两个用户节点的特征向量之间的相似度,计算各用户节点对的损失值,并根据所述训练集中的各用户节点对的损失值,计算模型损失值;s1023:根据所述模型损失值,通过反向传播算法更新所述异质多重图神经网络模型,并继续执行步骤s1021,直至达到预设的训练结束条件;s1024:获取达到预设的训练结束条件时所述异质多重图神经网络模型输出的各节点的特征向量,作为各节点的最终特征向量。
24.本发明使用社交异质多重图对异质多重图神经网络模型进行训练,使得模型可以不断自我更新其中的可学习参数,最终到达较好的学习效果;当达到训练结束条件时,如训练了预设训练次数,获取停止训练时异质多重图神经网络模型输出的最终特征向量,可较好地表示各节点聚合其相邻节点及相连边上的信息后的信息。
25.在一个可选的实施例中,所述步骤s1021,包括:s10211:分别对所述社交异质多重图中各边的权值向量进行特征转换,得到特征转换后的权值向量,各边特征转换后的权值向量的维度相同;s10212:获取与一节点通过同一边类型的边相连的节点,作为所述一节点对应所述同一边类型的第一节点;s10213:根据所述一节点的节点向量、各所述第一节点的节点向量、所述一节点与各所述第一节点之间的所述同一边类型的边的权值向量以及k个第一可学习参数向量,分别计算所述一节点对应所述同一边类型的边关于各第一可学习参数向量的边级注意力向量,并进行拼接,得到所述一节点对应所述同一边类型的边的边级注意力向量;s10214:根据节点类型与所述一节点相同的各节点对应各边类型的边级注意力向量、所述一节点的节点类型对应的第二可学习向量参数、可学习的第二全连接层的权重和偏差,计算所述一节点的节点类型对应各边类型的注意力权值;s10215:根据所述一节点的节点类型对应各边类型的注意力权值,对所述一节点对应各边类型的边的边级注意力向量进行加权求和,得到所述一节点的特征向量。
26.本发明采用边级注意力机制与语义级注意力机制的两级注意力机制,边级注意力机制可以很好地聚合来自同一类型的边上所传播过来的信息,并且在聚合时也聚合了边上的特征;语义级注意力机制可以很好地聚合不同类型的边传播过来的信息。
27.在一个可选的实施例中,所述步骤s10211具体为:根据特征转换公式,对所述社交异质多重图中的一边的权值向量进行特征转换,
得到所述一边特征转换后的权值向量,所述特征转换公式为h
e’=σ(wr⋅
he+br),h
e’为所述一边特征转换后的权值向量,σ( )为激活函数,he为所述一边的权值向量,wr为可学习的所述一边的边类型对应的第一全连接层的权重,br为可学习的所述一边的边类型对应的第一全连接层的偏差。
28.由于社交异质多重图中存在多种类型的边,每种类型的边上的权值向量的维度可能不同,为了方便异质多重图神经网络模型的学习,使用全连接层把这些边上的特征都映射到同一特征空间中,同时通过不同的全连接层把不同类型的边的特征维度相统一。
29.在一个可选的实施例中,所述步骤s10213,包括:根据所述一节点的节点向量、所述一节点对应所述同一边类型的一第一节点的节点向量、所述一节点与所述一第一节点之间的所述同一边类型的边的权值向量、所述一节点对应所述同一边类型的各第一节点的节点向量、所述一节点与所述各第一节点之间的所述同一边类型的边的权值向量以及一第一可学习参数向量,计算所述一节点与所述一第一节点之间的所述同一边类型的边关于所述一第一可学习参数向量的边级注意力;根据所述一节点与所述各第一节点之间的所述同一边类型的边关于所述一第一可学习参数向量的边级注意力、所述各第一节点的节点向量以及所述一节点与所述各第一节点之间的所述同一边类型的边的权值向量,计算所述一节点对应所述同一边类型的边关于所述一第一可学习参数向量的边级注意力向量;对所述一节点对应所述同一边类型的边关于k个第一可学习参数向量的边级注意力向量进行拼接,得到所述一节点对应所述同一边类型的边的边级注意力向量。
30.具体地,根据边级注意力计算公式,计算所述一节点与所述一第一节点之间的所述同一边类型的边关于一第一可学习参数向量的边级注意力,所述边级注意力计算公式为其中,为所述一节点i与所述一第一节点j之间的所述同一边类型r的边关于一第一可学习参数向量的边级注意力,leakeyrelu( )为激活函数,若x≥0,则leakeyrelu(x)=x,反之则leakeyrelu(x)=negative_slope
×
x,negative_slope为预设的函数值,||表示向量拼接操作,hi为所述一节点i的节点向量,hj为所述一第一节点j的节点向量,n
ir
表示所述一节点i对应所述同一边类型r的第一节点集合,hn为所述第一节点集合中的第一节点n的节点向量。
31.为所述一节点i与所述一第一节点j之间的所述同一边类型r的边的权值向
量,为所述一节点i与所述第一节点n之间的所述同一边类型r的边的权值向量;根据边级注意力向量计算公式,计算所述一节点对应所述同一边类型的边关于所述一第一可学习参数向量的边级注意力向量,所述边级注意力向量计算公式为其中,为所述一节点i对应所述同一边类型r的边关于所述一第一可学习参数向量的边级注意力向量,σ( )为激活函数,为所述一节点i与第一节点n之间的所述同一边类型r的边关于所述一第一可学习参数向量的边级注意力;根据拼接公式拼接得到所述一节点对应所述同一边类型的边的边级注意力向量,所述拼接公式为其中,为所述一节点i对应所述同一边类型r的边关于第k个第一可学习参数向量的边级注意力向量,k=1,2,
…
,k。
32.采用多头注意力机制,通过重复计算k次,每次的第一可学习参数向量不共享,最后再把所有的结果进行拼接,使得模型可以在不同的表示子空间里学习到相关的信息,从而提升最终的效果。
33.在一个可选的实施例中,所述步骤s10214具体为:根据注意力权值计算公式,计算所述一节点的节点类型对应一边类型的注意力权值,所述注意力权值计算公式为
其中,β
ri
为所述一节点i的节点类型ai对应一边类型ri的注意力权值,ri∈{r1,r2,
…
,r
p
},{r1,r2,
…
,rp}为与所述一节点i相连的边的边类型集合,p为与所述一节点i相连的边的边类型总数,v
ai
为所述社交异质多重图中节点类型为ai的节点集合,|v
ai
|为所述社交异质多重图中节点类型为ai的节点的总个数,q
kt
为所述一节点i的节点类型ai对应的第二可学习向量参数,tanh( )为激活函数,w和b分别为可学习的第二全连接层的权重和偏差,为节点类型为ai的节点v对应边类型为ri的边的边级注意力向量。
34.在一个可选的实施例中,所述步骤s10215具体为:根据加权求和公式,计算所述一节点的特征向量,所述加权求和公式为其中,β
rj
为所述一节点的节点类型对应边类型rj的注意力权值,为所述一节点i对应边类型为rj的边的边级注意力向量。
35.通过语义级注意力信息聚合,把来自不同边类型的边的语义信息聚合到一起形成最终的节点特征向量表示。
36.在一个可选的实施例中,所述步骤s1022,包括:获取预设的训练集,所述训练集中包括预设比例的正样本和负样本,所述正样本为所述社交异质多重图中存在好友关系的用户节点对,所述负样本为所述社交异质多重图中不存在好友关系的用户节点对;计算所述训练集中一用户节点对的中的两个用户节点的特征向量之间的余弦相似度;根据损失值计算公式,计算所述一用户节点对的损失值,所述损失值计算公式为l(ui,uj)=-(y
i,j
∙
log(s(ui,uj))+(1-y
i,j
)
∙
log(1-s(ui,uj))),y
i,j
表示所述一用户节点对中的两个用户节点ui和uj是否存在好友关系,若存在好友关系,则y
i,j
=1,反之则y
i,j
=0,s(ui,uj)为所述一用户节点对中的两个用户节点的特征向量之间的余弦相似度;对所述训练集中的各用户节点对的损失值进行累加,得到模型损失值。
37.通过上述损失函数的计算,使得异质多重图神经网络模型可以不断自我更新其中的可学习参数,最终达到较好的学习效果。
38.在一个可选的实施例中,所述步骤s103,包括:根据所述社交异质多重图,获取与一用户节点不存在好友关系的用户节点,作为所述一用户节点对应的候选好友节点;分别计算所述一用户节点的最终特征向量与其对应的各候选好友节点的最终特征向量之间的余弦相似度,并根据所述余弦相似度对所述各候选好友节点进行降序排序,得到所述一用户节点的好友推荐序列;根据所述一用户节点的好友推荐序列,为所述一用户节点进行好友推荐。
39.可以为在位置社交网络中还未建立好友关系的用户推荐现实生活中可能存在的好友,即为位置社交网络中的用户推荐潜在的好友。本发明最终所学习出来的用户向量表示,使得可以给用户推荐多个好友而不用受到数量限制,即最终的推荐好友数是可以根据需求动态调整的,只需要在已经排好序的候选好友中依次推荐即可。
40.如图2所示,本发明还提供了一种基于位置社交网络的好友推荐装置,包括:构建模块201,用于获取位置社交网络数据,并根据所述位置社交网络数据,构建社交异质多重图,所述社交异质多重图中的节点包括用户节点和兴趣点节点,当两个节点之间存在边时,所述两个节点之间存在至少一种边类型的边;输入模块202,用于将所述社交异质多重图输入训练好的异质多重图神经网络模型,输出各节点的最终特征向量;推荐模块203,用于分别计算各用户节点的最终特征向量与其他用户节点的最终特征向量之间的相似度,并根据所述相似度进行好友推荐。
41.如图3所示,本发明还提供了一种电子设备,所述电子设备包括:一个或多个处理器301;存储装置302,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器301执行,使得所述一个或多个处理器301实现如上所述的基于位置社交网络的好友推荐方法。
42.本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的基于位置社交网络的好友推荐方法。
43.实施例一请参照图4-7,本发明的实施例一为:一种基于位置社交网络的好友推荐方法,旨在深度建模位置社交网络不同要素之间复杂的连接关系从而为真实世界中的用户推荐可能存在的好友。
44.本方法基于异质多重图,异质多重图与传统的图结构不同点主要体现在两方面:1)图中的节点的类型可以多样化,在本实施例中即包含用户和兴趣点两类节点。2)节点之间的连接关系(边)种类可以多样化,比如兴趣点与兴趣点之间存在多种关系的边来表示它们之间的不同语义关系。通过异质多重图这样的结构方式来建模位置社交网络可以使得整个数据成为一个整体,可以在后续更加深入地挖掘其中的时空关系信息,从而更好地辅助进行好友推荐的任务。
45.同时,本实施例提出了一种新的异质多重图神经网络模型,旨在从异质多重图中挖掘出潜在的时空数据信息,目的是学习用户节点在向量空间中的表示,服务于后续的好友推荐任务。
46.本实施例的异质多重图神经网络模型的整体结构与流程如图4所示。
47.首先,根据位置社交网络(lbsn)中的数据,构建社交异质多重图。本实施例中,位置社交网络数据可来源于第三方平台(如美食推荐及评分平台,可以记录用户对商家的签到打卡信息,并可以发表评论或者分享帖子给好友),因此,位置社交网络数据可包含以下信息:1、用户的社交网络,即用户与用户之间的好友关系;2、用户访问商家兴趣点的信息,如某个用户在某个时间点访问了某个商家;3、商家兴趣点的自身信息,包括商家的类别(如餐饮类)和位置信息,这里的位置信息使用经纬度来表示。
48.如图5所示,传统的简单图主要是指只包含一种节点一种类型的边的图,但是在现实世界数据中往往数据中节点有不同的类别(如学术网络图),这种需求让异质简单图数据取得了快速的进展。目前为止大多数研究者所设计的异质简单图虽然在可以包含不同类型的节点,同时不同类型节点之间的边也可以不同,但是在这种异质简单图中两个节点只存在一种边,这种形式就限定了异质简单图的数据表示能力不足。
49.而本实施例中,提出了异质多重图的概念,异质多重图与异质简单图的区别在于两个节点之间可以存在多种类型的边,同时也可以有环边(边两端的节点为同一个节点)。
50.异质多重图的具体概念如下:异质多重图是由一对不相交的集合g=(ν,ε)(ν称为顶点集合,ε为边集合)、节点类型映射ν
→
a(a为节点类型)、边类型映射ε
→
r(r为边类型)、多重图映射ε
→
ν∪[ν]2构成。其中,节点类型数加边类型数必须大于2,即|a|+|r|》2。此外,由于存在多重图映射,使得每条边可以指定一个或两个顶点,所以多重图中可以有重边和环边。即如果x和y是边e的端点,还是可以记为e=xy,但是x和y可能不能唯一地确定e了。
[0051]
对于位置社交网络,定义其中的信息如下:u={u1,u2,
…
,um}是m个用户的集合,v={v1,v2,
…
,vn}是n个兴趣点的集合。
[0052]
对于一个用户ui,其历史访问轨迹为,其中表示兴趣点vj被用户ui在时间tj时访问签到。以及表示所有用户的历史轨迹。另外使用(ui,uj)来表示用户ui和uj之间存在好友关系。
[0053]
则基于位置社交网络数据的好友推荐任务可以描述为:对于一对用户ui和uj,已知他们的社交网络与历史轨迹,训练一个模型f来评估用户ui和uj是好友的可能性
ŷ
:f(ui,uj)
→
ŷ
∈[0,1],其中可能性的得分介于0到1之间。
[0054]
如图6所示,本实施例的社交异质多重图中包含两类型节点:用户与兴趣点,以及五种类型的边:朋友、签到、同社区、同类别和共现。
[0055]
首先,对于位置社交网络中见面事件和兴趣点的共现等问题进行定义:见面事件:如果两个用户ui和uj分别在时间ti和时间tj访问了某个兴趣点,且其访问的时间差小于预设的见面时差阈值τ,即|t
i-tj|《τ,则认定这两个用户在该兴趣点有一次见面事件。本实施例中,见面时差阈值τ设定为1小时。
[0056]
兴趣点共现:如果两个兴趣点vi和vj在同一个用户um的轨迹h
um
中出现,则认定这两个兴趣点有一次共现,如果多次出现,则此处记录的共现次数翻倍,表示这两个兴趣点有比
较强的关系。
[0057]
同时,定义用户的家庭住址为用户的历史访问轨迹中所有兴趣点的位置的中心位置,即计算历史访问轨迹中所有兴趣点的经纬度的平均值,作为用户的家庭住址的经纬度。
[0058]
另外,本实施例中,把一天24个小时分别四个时间段,其中,5:00-10:00为上午,10:00-15:00为中午,15:00-22:00为下午及傍晚,22:00-5:00为夜间。
[0059]
然后,对社交异质多重图中的节点及相应的边进行定义:节点:所有的用户和兴趣点构成社交异质多重图中的节点。随机初始化使用长度为128的向量来表示每个节点。
[0060]
朋友(边):存在于用户与用户之间。如果两个人是好友,则在社交异质多重图中存在一条“朋友”的边连接这两个用户节点。其中边上的权值向量为这两个人分别在上述四个时间段内的见面事件次数。
[0061]
签到(边):存在于用户与兴趣点之间。如果在用户的历史访问轨迹中出现了某个兴趣点,则在社交异质多重图中存在一条“签到”的边连接该用户节点与该兴趣点节点。其中边上的权值向量为该用户在上述四个时间段中分别访问这个兴趣点的次数。
[0062]
同社区(边):存在于用户与兴趣点之间。如果用户的家庭住址与兴趣点的位置之间的距离小于设定的距离阈值d,即认为该用户与该兴趣点处于同一社区,在社交异质多重图中存在一条“同社区”的边连接该用户节点和该兴趣点节点。其中边上的权值向量即为该用户的家庭住址与该兴趣点的位置之间的距离(单位km)。本实施例中的距离阈值d为1.5km。
[0063]
同类别(边):存在于兴趣点与兴趣点之间。如果两个兴趣点属于同一类别,即类别相同,则在社交异质多重图中存在一条“同类别”的边连接这两个兴趣点节点。其中边上的权值向量为这两个兴趣点之间的距离(km)。
[0064]
共现(边):存在于兴趣点与兴趣点之间。如果两个兴趣点在同一用户的历史访问轨迹中出现,则认为两个兴趣点有一次共现,在社交异质多重图中有一条“共现”的边来连接这两个兴趣点节点。其中边上的权值向量即为这两个兴趣点节点共现的次数。
[0065]
通过以上定义,即可根据位置社交网络数据,构建社交异质多重图。
[0066]
构建完社交异质多重图后,将社交异质多重图输入异质多重图神经网络模型。
[0067]
由于社交异质多重图中存在五种边,这些边的权值向量都代表了不一样的语义关系。为了方便模型的学习,使用全连接层把这些边上的权值向量都映射到同一特征空间中,同时通过不同的全连接层把不同边类型的边的权值向量维度相统一。
[0068]
具体地,特征转换公式为,其中,σ( )为激活函数,本实施例中选用的是relu激活函数(f(x)=max(0,x));he为边e上的权值向量,h
e’为边e特征转换后的权值向量,wr为可学习的边e的边类型对应的第一全连接层的权重(矩阵形式),br为可学习的边e的边类型对应的第一全连接层的偏差(bias)。也就是说,不同边类型的边对应不同的第一全连接层,同一边类型的边共享同一个第一全连接层,每个第一全连接层的权重和参数会随着异质多重图神经网络模型的训练而更新。对于初始值,使用xavier正态分布来初始化(即xavier初始化方法中服从正态分布),在初始化中涉及到的增益值gain为根号2。
[0069]
权值向量维度统一后,进行特征传递与聚合。在本过程中主要包含两大块的内容:
边级注意力信息聚合和语义级注意力信息聚合。图神经网络中的基本思想就是节点需要聚合来自其相邻的节点所传递来的信息,从而更新自己的信息。由于在异质多重图中不仅存在不同类型的节点,也存在不同类型的边,同时两个节点之间也可能存在多种边,因此将信息特征传递与聚合的过程分成两部分:首先节点先聚合来自同一类型的边的节点的信息(边级注意力),然后再聚合来自不同类型的节点的信息(语义级注意力)。因为一种类型的边的两端节点是固定的,所以经过这样的两阶段信息聚合,节点就可以聚合到所有的相连的节点及其边上的信息。
[0070]
对于边级注意力信息聚合,由于一个节点可能会与多种类型的节点有多种类型的边,因此先使用边级注意力来聚合来自同一类边的信息。
[0071]
假设节点i和节点j之间通过边相连,r表示该边的边类型,该边的权值向量为,节点i的节点向量为hi,节点j的节点向量为hj。
[0072]
通过边级注意力计算公式来计算节点j通过这条边类型为r的边对节点i的影响程度,即节点i与节点j之间的边的边级注意力,边级注意力计算公式为:其中,leakeyrelu( )也是激活函数的一种,具体公式为:其他negative_slope为预设的函数值,本实施例中,取pytorch库中的函数默认值1e-2(表示10的负2次方,即0.01)。
[0073]
为第一可学习参数向量,会随着异质多重图神经网络模型的训练而更新,||表示向量拼接操作。
[0074]
表示所有与节点i通过边类型为r的边相连的节点的集合,hn为该集合中的节点n的节点向量,为节点i与节点n之间边类型为r的边,为该边的权值向量。
[0075]
再通过边级注意力向量计算公式,计算对于第一可学习参数向量,节点i对应
边类型为r的边的边级注意力向量,边级注意力向量计算公式为:其中,σ( )为relu激活函数,为节点i与节点n之间的边的边级注意力,节点n为集合n
ir
中的节点。
[0076]
本实施例采用多头注意力机制,即分别根据k个不同的第一可学习参数向量,重复执行上述计算,再把这k次计算得到的节点i对应边类型为r的边的边级注意力向量拼接起来,拼接公式为:其中,为所述节点i对应边类型r的边关于第k个第一可学习参数向量的边级注意力向量,k=1,2,
…
,k;即为节点i通过边类型为r的边所聚合到的所有信息,即节点i对应边类型r的边的边级注意力向量。
[0077]
通过重复计算k次,每次的第一可学习参数向量不共享,最后再把所有的结果进行拼接,使得模型可以在不同的表示子空间里学习到相关的信息,从而提升最终的效果。
[0078]
假设有多个边类型{r1,r2,
…
,r
p
}的边与节点i相连,则在进行边级注意力信息聚合后,会相应地得到,这些边级注意力向量分别代表来自不同边类型的边的信息,这里面就包含着丰富的语义信息。接着通过语义级注意力信息聚合,把这些来自不同边类型的边的语义信息聚合到一起形成最终的节点特征向量表示。
[0079]
假设节点i的节点类型为ai,ai∈a,通过注意力权值计算公式,计算节点类型ai对应边类型ri的注意力权值β
ri
,ri∈{r1,r2,
…
,r
p
},注意力权值计算公式为:其中,v
ai
为社交异质多重图中节点类型为ai的节点集合,|v
ai
|为该节点集合中的
节点总个数,也即社交异质多重图中节点类型为ai的节点的总个数;tanh( )也是激活函数中的一种;为节点类型为ai的节点v对应边类型为ri的边的边级注意力向量,节点v∈v
ai
;为节点类型ai对应第二可学习向量参数,w和b分别为可学习的第二全连接层的权重和偏差,、w和b均会随着异质多重图神经网络模型的训练而更新。
[0080]
β
ri
即表示边类型为ri的边对节点类型为ai的节点的重要影响程度,通过计算出节点类型ai对应各边类型{r1,r2,
…
,r
p
}的注意力权值,再对节点i对应各边类型的边的边级注意力向量进行加权求和,即可得到节点i的特征向量,加权求和公式为:通过上述的多次信息特征传递与聚合,得到了新的节点向量表示,接下来将使用最小化损失函数的方式来指导调整整个网络模型中的权重参数。
[0081]
对于两个用户节点ui和uj,使用这两个用户节点的特征向量和的余弦相似度s(ui,uj)来表示这两个用户是好友的可能性得分,即相似度越高,则这两个用户越可能是好友。
[0082]
余弦相似度计算公式为:本实施例中,使用交叉熵损失函数来训练整个模型,具体地,预先创建训练集,训练集中包括预设比例的正样本和负样本,正样本为社交异质多重图中存在好友关系的用户节点对(即通过“朋友”的边相连的两个用户节点),负样本为所述社交异质多重图中不存在好友关系的用户节点对;然后通过交叉熵损失函数来计算训练集中各用户节点对的损失值,最后进行累加,得到模型损失值。
[0083]
交叉熵损失函数的计算公式为:其中,l(ui,uj)为用户节点对ui和uj的损失值;y
i,j
表示用户节点对中的两个用户
节点ui和uj是否存在好友关系,若存在好友关系,则y
i,j
=1,反之则y
i,j
=0。s(ui,uj)为该用户节点对中的两个用户节点的特征向量之间的余弦相似度。
[0084]
通过上述损失函数的计算后,根据模型损失值,通过反向传播算法(bp算法)训练异质多重图神经网络模型,即通过计算损失值与所有可学习参数的导数,来更新异质多重图神经网络模型中可学习的参数。所有的可学习参数都更新完毕一次后称为一个epoch,即训练了一次。本实施例中,训练结束条件为达到了7000次训练,即经过7000个epoch后,则停止对异质多重图神经网络模型的训练。
[0085]
接着获取异质多重图神经网络模型最后一次输出的各节点的特征向量,作为各节点的最终特征向量。
[0086]
最后,分别计算各用户节点的最终特征向量与其他用户节点的最终特征向量之间的余弦相似度,并根据余弦相似度进行好友推荐。本实施例中,好友推荐的方法是计算某个用户节点的最终特征向量和与其不存在好友关系的所有用户节点(即该用户节点对应的候选好友节点)的最终特征向量之间的余弦相似度,然后根据预先相似度对这些候选好友节点进行降序排序,若要为该用户节点推荐m个好友,则选取前m个候选好友节点进行推荐。
[0087]
本实施例最终所学习出来的用户向量表示,使得可以给用户推荐多个好友而不用受到数量限制(最大数为整个网络中的所有候选好友用户数),即最终的推荐好友数m是可以根据需求动态调整的,只需要在已经排好序的候选好友中依次推荐即可。
[0088]
另外,在上述过程中,通过上述损失函数的计算及训练,可以使得异质多重图神经网络模型不断自我更新其中的可学习参数,最终达到较好的学习效果。
[0089]
使用area under the roc curve (auc)以及平均准确率(ap)来评价模型的性能。位置社交网络中常用的好友关系推荐模型有lbsn2vec、metapath2vec、gat、heter-gcn、mvmn、han。在foursquare数据集中选用了6个城市的数据(纽约nyc、东京tky、伊斯坦布尔ist、雅加达jk、吉隆坡kl和圣保罗sp),对数据集中的社交网络划分80%作为训练集,20%作为测试集。最终的对比实验结果如图7所示。
[0090]
从图7中可以看出,本实施例可以大幅度提升在好友推荐任务上的模型性能,不仅auc指标,亦或是平均准确率ap指标,本实施例的模型效果在世界范围内的多个城市数据上对比现有的技术方案都有大幅度的提高。
[0091]
本实施例通过构建社交异质多重图,在异质多重图中不仅可以存储多种节点和多种连接关系,还可以存储两个节点中可能存在的多种相互连接关系,从而使得位置社交网络数据可以成为一个整体,便于后续更加深入地挖掘其中的时空关系信息。
[0092]
采用边级注意力机制与语义级注意力机制的两级注意力机制,边级注意力机制可以很好地聚合来自同一类型的边上所传播过来的信息,同时在计算边级注意力向量时不仅考虑所连接的节点的节点向量的情况,还考虑到了边上的特征(权值向量)对两个节点之间的连接影响,同样在聚合信息时也聚合了边上的特征,而现有的图神经网络没有考虑边上特征对连接关系的影响。语义注意力机制则可以地很好解决不同类型的边传播过来的信息如何在节点上聚合的问题。
[0093]
实施例二请参照图2,本发明的实施例二为:一种基于位置社交网络的好友推荐装置,可执行本发明实施例一所提供的基于位置社交网络的好友推荐方法,具备执行方法相应的功能
模块和有益效果。该装置可以由软件/或硬件实现,具体包括:构建模块201,用于获取位置社交网络数据,并根据所述位置社交网络数据,构建社交异质多重图,所述社交异质多重图中的节点包括用户节点和兴趣点节点,当两个节点之间存在边时,所述两个节点之间存在至少一种边类型的边;输入模块202,用于将所述社交异质多重图输入训练好的异质多重图神经网络模型,输出各节点的最终特征向量;推荐模块203,用于分别计算各用户节点的最终特征向量与其他用户节点的最终特征向量之间的相似度,并根据所述相似度进行好友推荐。
[0094]
在一个可选的实施方式中,所述位置社交网络数据包括用户的好友关系和历史访问轨迹以及兴趣点的位置和类别,所述历史访问轨迹包括用户访问过的兴趣点及其对应的访问时间,所述社交异质多重图中的节点类型包括用户和兴趣点,边类型包括朋友、签到、同社区、同类别和共现;所述构建模块201,包括:划分单元,用于将一天划分多个预设时长的第一时间段;第一计算单元,用于分别根据各用户的历史访问轨迹中的各兴趣点的位置,计算轨迹中心点位置,作为各用户的家庭住址;第一构建单元,用于构建与各用户和各兴趣点一一对应的用户节点和兴趣点节点,并分别生成各节点的节点向量;第二构建单元,用于若两个用户之间存在好友关系,则在所述两个用户对应的用户节点之间构建边类型为朋友的边,并根据所述两个用户的历史访问轨迹,分别统计所述两个用户在各第一时间段内的见面次数,作为所述边类型为朋友的边的权值向量;第三构建单元,用于若一用户的历史访问轨迹中存在一兴趣点,则在所述一用户对应的用户节点和所述一兴趣点对应的兴趣点节点之间构建边类型为签到的边,并分别统计所述一用户在各第一时间段内访问所述一兴趣点的次数,作为所述边类型为签到的边的权值向量;第四构建单元,用于若一用户的家庭住址与一兴趣点之间的距离小于预设的距离阈值,则在所述一用户对应的用户节点和所述一兴趣点对应的兴趣点节点之间构建边类型为同社区的边,并将所述一用户的家庭住址与一兴趣点之间的距离作为所述边类型为同社区的边的权值向量;第五构建单元,用于若两个兴趣点属于同一类别,则在所述两个兴趣点对应的兴趣点节点之间构建边类型为同类别的边,并将所述两个兴趣点之间的距离作为所述边类型为同类别的边的权值向量;第六构建单元,用于若两个兴趣点同时存在于同一用户的历史访问轨迹中,则在所述两个兴趣点对应的兴趣点节点之间构建边类型为共现的边,并将所述两个兴趣点的共现次数作为所述边类型为共现的边的权值向量。
[0095]
在一个可选的实施方式中,所述输入模块202,包括:第一输出单元,用于将所述社交异质多重图输入异质多重图神经网络模型,输出各节点的特征向量;损失值计算单元,用于根据预设的训练集中的各用户节点对的好友关系以及各用
户节点对中的两个用户节点的特征向量之间的相似度,计算各用户节点对的损失值,并根据所述训练集中的各用户节点对的损失值,计算模型损失值;训练单元,用于根据所述模型损失值,通过反向传播算法更新所述异质多重图神经网络模型,并继续执行所述第一输出单元,直至达到预设的训练结束条件;第二输出单元,用于获取达到预设的训练结束条件时所述异质多重图神经网络模型输出的各节点的特征向量,作为各节点的最终特征向量。
[0096]
在一个可选的实施方式中,所述第一输出单元,包括:特征转换单元,用于分别对所述社交异质多重图中各边的权值向量进行特征转换,得到特征转换后的权值向量,各边特征转换后的权值向量的维度相同;第一获取单元,用于获取与一节点通过同一边类型的边相连的节点,作为所述一节点对应所述同一边类型的第一节点;边级注意力向量计算单元,用于根据所述一节点的节点向量、各所述第一节点的节点向量、所述一节点与各所述第一节点之间的所述同一边类型的边的权值向量以及k个第一可学习参数向量,分别计算所述一节点对应所述同一边类型的边关于各第一可学习参数向量的边级注意力向量,并进行拼接,得到所述一节点对应所述同一边类型的边的边级注意力向量;注意力权值计算单元,用于根据节点类型与所述一节点相同的各节点对应各边类型的边级注意力向量、所述一节点的节点类型对应的第二可学习向量参数、可学习的第二全连接层的权重和偏差,计算所述一节点的节点类型对应各边类型的注意力权值;加权求和单元,用于根据所述一节点的节点类型对应各边类型的注意力权值,对所述一节点对应各边类型的边的边级注意力向量进行加权求和,得到所述一节点的特征向量。
[0097]
在一个可选的实施方式中,所述特征转换单元,具体用于根据特征转换公式,对所述社交异质多重图中的一边的权值向量进行特征转换,得到所述一边特征转换后的权值向量,所述特征转换公式为h
e’=σ(wr⋅
he+br),h
e’为所述一边特征转换后的权值向量,σ( )为激活函数,he为所述一边的权值向量,wr为可学习的所述一边的边类型对应的第一全连接层的权重,br为可学习的所述一边的边类型对应的第一全连接层的偏差。
[0098]
在一个可选的实施方式中,所述边级注意力向量计算单元,包括:边级注意力计算单元,用于根据所述一节点的节点向量、所述一节点对应所述同一边类型的一第一节点的节点向量、所述一节点与所述一第一节点之间的所述同一边类型的边的权值向量、所述一节点对应所述同一边类型的各第一节点的节点向量、所述一节点与所述各第一节点之间的所述同一边类型的边的权值向量以及一第一可学习参数向量,计算所述一节点与所述一第一节点之间的所述同一边类型的边关于所述一第一可学习参数向量的边级注意力;向量计算单元,用于根据所述一节点与所述各第一节点之间的所述同一边类型的边关于所述一第一可学习参数向量的边级注意力、所述各第一节点的节点向量以及所述一节点与所述各第一节点之间的所述同一边类型的边的权值向量,计算所述一节点对应所述同一边类型的边关于所述一第一可学习参数向量的边级注意力向量;拼接单元,用于对所述一节点对应所述同一边类型的边关于k个第一可学习参数
向量的边级注意力向量进行拼接,得到所述一节点对应所述同一边类型的边的边级注意力向量。
[0099]
在一个可选的实施方式中,所述损失值计算单元,包括:第二获取单元,用于获取预设的训练集,所述训练集中包括预设比例的正样本和负样本,所述正样本为所述社交异质多重图中存在好友关系的用户节点对,所述负样本为所述社交异质多重图中不存在好友关系的用户节点对;第二计算单元,用于计算所述训练集中一用户节点对的中的两个用户节点的特征向量之间的余弦相似度;第三计算单元,用于根据损失值计算公式,计算所述一用户节点对的损失值,所述损失值计算公式为l(ui,uj)=-(y
i,j
∙
log(s(ui,uj))+(1-y
i,j
)
∙
log(1-s(ui,uj))),y
i,j
表示所述一用户节点对中的两个用户节点ui和uj是否存在好友关系,若存在好友关系,则y
i,j
=1,反之则y
i,j
=0,s(ui,uj)为所述一用户节点对中的两个用户节点的特征向量之间的余弦相似度;累加单元,用于对所述训练集中的各用户节点对的损失值进行累加,得到模型损失值。
[0100]
在一个可选的实施方式中,所述推荐模块203,包括:第三获取单元,用于根据所述社交异质多重图,获取与一用户节点不存在好友关系的用户节点,作为所述一用户节点对应的候选好友节点;第四计算单元,用于分别计算所述一用户节点的最终特征向量与其对应的各候选好友节点的最终特征向量之间的余弦相似度,并根据所述余弦相似度对所述各候选好友节点进行降序排序,得到所述一用户节点的好友推荐序列;好友推荐单元,用于根据所述一用户节点的好友推荐序列,为所述一用户节点进行好友推荐。
[0101]
实施例三请参照图3,本发明的实施例三为:一种电子设备,所述电子设备包括:一个或多个处理器301;存储装置302,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器301执行,使得所述一个或多个处理器301实现如上所述的基于位置社交网络的好友推荐方法实施例中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0102]
实施例四本发明的实施例四提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的基于位置社交网络的好友推荐方法实施例中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0103]
综上所述,本发明提供的一种好友推荐方法、装置、设备和存储介质,通过构建社交异质多重图,在异质多重图中不仅可以存储多种节点和多种连接关系,还可以存储两个节点中可能存在的多种相互连接关系,从而使得位置社交网络数据可以成为一个整体,便于后续更加深入地挖掘其中的时空关系信息。提出一种新的异质多重图神经网络模型,采用边级注意力机制与语义级注意力机制的两级注意力机制,边级注意力机制可以很好地聚
合来自同一类型的边上所传播过来的信息,并且在聚合时也聚合了边上的特征;语义级注意力机制可以很好地聚合不同类型的边传播过来的信息;获取停止训练时异质多重图神经网络模型输出的最终特征向量,可较好地表示各节点聚合其相邻节点及相连边上的信息后的信息。最后通过计算用户节点的特征向量之间的相似度来进行好友推荐,可以为在位置社交网络中还未建立好友关系的用户推荐现实生活中可能存在的好友,且保证推荐的准确性。
[0104]
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、随机存取存储器(randomaccess memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0105]
值得注意的是,上述装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0106]
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。