本发明属于机器学习领域,尤其涉及一种利用节点影响力来计算多关系网络图结构数据的表示学习方法。
背景技术:
近年来,随着社交网络的不断发展进步,人们产生并积累了越来越多的网络数据。各种各样的下游应用,都对这些数据的处理提出了准确性、稳定性、高效性等方面的要求。尤其在最为流行的链路预测以及节点分类任务上,有效地对网络数据进行量化处理,可以更加方便地应用各种现成的机器学习算法,来提高准确性和速度。因此,设计一种高效的表示学习方法来对网络数据进行量化非常必要。
较早的表示学习方法主要基于矩阵特征向量计算。主要有局部线性表示(localllylinearembedding)、拉普拉斯特征表(laplaceeigenmap)等方法,将最优化问题转化为某个关系矩阵的特征向量计算问题。但是,这样的算法存在复杂度高、计算量大的问题,尤其是在计算大规模矩阵的特征向量时非常耗时。
最近流行的网络表示方法借鉴了自然语言处理领域的词向量(word2evc)算法,具体可以分为两个步骤,一是通过对网络数据进行随机游走生成类似语句的序列,二是应用基于浅层神经网络的算法来学习节点的表示向量。这类算法主要有深度游走(deepwalk),节点向量(node2vec)等等。
上述的这些主流算法主要针对同构网络,也就是网络数据中节点和边的类型都只有一种。但在实际数据中,网络数据节点之间可能存在多种关系类型,不同关系之间存在较大差异。比如考虑社交网络中两个人物节点张三和李四,他们之间即可以存在朋友关系,也可以存在合作关系,这两种关系就存在差异,不能等同对待。此外传统生成节点序列的游走方法参数固定,也就是都是采用预先设置好的值,不能根据节点自身性质进行灵活调节,这样导致整个网络特征信息的缺失。
技术实现要素:
根据上述发展现状,本发明的目的在于提出一种基于节点影响力的多关系网络数据量化表示方法。本发明能够通过计算不同关系层中节点的影响力,以此自适应地为随机游走设置各种游走参数,包括游走长度、游走次数、游走时节点转移概率,指导游走;之后再通过计算关系权重并根据不同关系层的权重进行融合,融合不同关系层的游走序列,最大化节点邻居的出现概率,得到最终的节点表示。
为了达到上述目的,本发明采用了以下方案:
一种基于节点影响力的多关系网络数据量化表示方法,本发明首先为各关系层节点计算影响力,之后,本发明利用所得到的节点影响力来自适应地为随机游走设置参数,包括游走长度、游走次数、节点转移概率等。每一节点都分别对应一游走参数,节点的游走长度和次数的设置值均正比于该节点影响力大小,也就是说节点的影响力越大,从该节点开始进行游走的长度就会越长,该节点被游走到的次数也会越多。节点转移概率则考虑两个节点之间的相似度,两个节点越相似,两者之间的转移概率也会越大,同时也会考虑自身影响力大小的影响,对影响力过大的节点稍加惩罚,避免过多地经过该节点。之后,本发明根据之前计算得到的参数,进行游走,得到游走序列,再根据不同关系层的权重进行联合训练。权重的初始值设置可以简单正比于该层节点影响力的总和。然后训练的目标是最大化所得到的序列中,节点周围邻居节点的出现概率,以此构造损失函数,利用随机梯度下降的方法来进行优化,从而得到最终的节点表示向量。
本发明的多关系网络可以是社交网络,引文网络或者电影评论网络等。在社交网络中,节点代表用户,节点之间的关系可以有朋友关系,合作关系等;所有的朋友关系为一层网络,合作关系为另一层网络。如果是电影评论网络,则节点为用户,节点之间的关系可以有互为好友关系,或者共同为某一部电影点过赞的关系。
本发明节点影响力的计算主要包括两部分,一部分来自节点周围的邻居节点,还有一部分来自节点自身,将这两部分融合处理来得到节点最终的影响力数值。周围邻居节点的影响力计算,因为节点的度,即节点所连接的邻居节点数量,通常都呈现非均匀分布,所以采用信息熵的形式进行计算。节点自身影响力的计算,本发明通过对它自身的度数取对数来进行量化。
进一步所述熵的计算,本发明对周围邻居节点的度预先归一化,再计算熵,进行累加。
进一步所述节点自身影响力的计算,本发明使用对数函数来进行量化,同时考虑到节点度数为1的情况,会出现取对数为0的结果,本发明对所有度的值乘上一个设定系数,一般为2,以避免在取对数时出现0的情况。
进一步所述节点影响力的计算,将节点周围邻居节点的影响力值与节点自身影响力值相乘,得到节点最终的影响力值。
所述随机游走参数游走长度、游走次数的设置,都正比于节点影响力,在实现时,为了避免游走长度、游走次数出现极大、极小值,根据预先设置好的最大、最小值,对过大部分进行截断,过小则用最小值替代。
进一步所述正比于节点影响力的计算,通过使用影响力数值乘上预设的基础游走长度或者基础游走次数得到。
所述节点υi至节点υj转移概率的计算,正比于υi和υj之间的相似度,反比于υi和υj自身影响力的大小。
进一步所述节点之间的相似度,是两个节点共同邻居数量的大小。
进一步所述节点转移概率反比于节点自身影响力的计算,具体为与节点自身影响力大小的β次幂成反比。
所述网络中不同关系层的权重正比于该层节点影响力的总和,并作为该层网络损失函数系数的初始值,也就是说联合训练的最终最小化的目标函数具体公式为
进一步所述每一关系层网络的损失函数,本发明使用p(υi|υj)表示υi出现在υj周围的概率,采用跳词(skip-gram)模型方法,最大化一个节点周围邻居节点出现的概率,损失函数具体为
进一步所述损失函数的变换,将它转变为乘积形式
进一步所述节点周围邻居出现概率的计算方法,对两个节点表示向量的内积进行归一化指数函数(softmax)的计算,具体公式为
进一步所述损失函数连乘形式的优化,本发明采用负采样的方法进行加速优化,选择ns个负例样本,而不是对所有的样本求内积和,避免了大量的计算。这样损失函数的形式就可以转变为
进一步所述负例样本选择的方法,本发明按照正比于节点度数的3/4次幂的概率进行采样,即
与现有技术相比,本发明的积极效果为:
通过对不同关系层网络分别计算节点影响力来指导随机游走,可以更好地捕捉到节点在不同关系层中的特性,同时关系层赋予不同权重也能更好地保留不同关系层之间的区别,从而提高所获得的节点表示向量的性能,继而在各种应用任务中取得更佳性能。
本方法可以利用节点影响力,为游走采样设定更加灵活的参数,这样可以更加充分地挖掘同一节点在不同关系层中的特性,同时也能够更好地利用关系之间的联系,得到的节点表示向量能在各种下游任务,(包括但不局限于链路预测,节点分类),均取得不错的效果。
附图说明
图1为多层关系网络示意图;
图2为基于节点影响力的随机游走算法流程图;
图3为多关系网络嵌入算法流程图。
具体实施方式
为了使本发明的目的、方案及优点更加清楚明白,以下以在真实数据集上进行的实验为例,对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
以ckm数据集为例,描述基于节点影响力的多关系网络表示学习的具体实施步骤。多关系网络如附图1所示,左侧子图表示原始社交网络,多种关系混在一起,图中不同类型的连接分别代表不同的关系,将其中的每一种关系都单独拎出来,可以得到右侧的单关系子图。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
ckm数据集是一个有向无权重的社交网络数据集,它共有三种关系,分别基于以下三个问题进行构建:
·当你需要有关治疗问题的信息或建议时,你通常会向谁求助?
·在平常的一周,比如上周,你最常和哪三四位医生讨论病例或治疗方法?
·你最常在社交场合看到的三个朋友是谁?
本实施例中,共进行两个任务,分别为链路预测与节点分类。首先描述链路预测任务的实验设置。链路预测任务的目标就是预测两个节点之间的链接是否成立。本实例将ckm数据集的每一层关系网络都分为包含80%节点数据的训练数据集以及剩余的20%节点数据的测试数据集。测试数据中还包括另外采样的与之前20%节点数据同样数量的测试负例数据集。整个实验过程采用五折交叉的方法,计算多次试验的平均值,作为最终的结果。评价指标使用准确率。
本实施例首先分别为每一关系层中的节点i计算影响力。对于节点i来说,影响力分为两部分,一部分来自于它的邻居节点,本发明用exf(i)表示。另一部分来自于它自身。与它自身度数相关,所以最终总的影响力数值为i(i)=log(αdi)exf(i),这里本发明在具体实现时,一般选取参数α的值为2。
之后,根据节点影响力数值为每个节点设置游走参数。游走长度、游走次数分别为基础游走长度值和基础游走次数值与节点影响力数值的乘积,同时做阶段处理,删去过大或者过小的部分。游走节点之间的转移概率,也就是进行随机游走时节点周围邻居被采样到的概率,正比于节点之间的相似度,反比于节点自身影响力的大小。节点之间的相似度使用两个节点之间共同邻居数量的大小来度量。本实施例中的基于节点影响力的游走算法如附图2所示。
本实例在得到所有的节点游走序列后,开始进行训练,整个训练过程如附图3所示。设置迭代最大轮数进行训练,更新节点表示向量。最小化损失函数。本发明训练的目标是使得目标节点周围的邻居节点出现的概率最大化,通过借鉴跳词(skip-gram)模型的方法,本实例在每一关系层中需要最小化的损失函数为
为了融合各个不同关系层的独特性,本发明将不同关系层中节点影响力总和之比作为最终各层损失函数的比例系数的初始值,以此为基础进行微调。最终需要最小化的损失函数为
所述方法在ckm数据集中进行链路预测任务时取得了最好的实验效果,同时多次得到的实验结果标准差较小,说明本发明鲁棒性较高,效果稳定。
本实例实施的另一个任务时节点分类任务,这是一个多标签分类任务。ckm数据集中每个节点属于四个社区中的某一个。对每个节点进行训练的方法与本实例在链路预测中所做的一样在得到所有节点的向量表示后,因为ckm数据集本身节点数不多,所以本实例使用40%和50%的节点数据作为训练集,对测试数据节点计算分类的准确性。本实例所采用的分类方法为机器学习工具包sklearn提供的支持感知机(svm)分类器,支持感知机的设置可以自行设置,本实例中使用核函数为径向基核函数的支持向量感知机分类器。
本实例在节点分类任务中也取得了比传统表示学习方法更优异的结果,同时也显示出了更强的稳定性。
以上所述为本发明的一个实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。