mfcstretchblt拷贝大图再拷贝小图_组内成果 | 大图单源SimRank精确查询算法

65dc8a481d729fefc49ac6a19157fedf.png

本期专栏给大家介绍一篇我们组发表于ACM SIGMOD 2020的论文,是一篇关于大图上单源SimRank精确查询的算法论文,由中国人民大学和北京理工大学合作完成,第一作者为中国人民大学博士生王涵之,通讯作者为中国人民大学魏哲巍教授。论文具体信息如下:

论文链接,Technical Report,ExactSim代码

40b1a4884cb7108fc7b8cc20da08c48f.png

专栏作者 | 王涵之,中国人民大学信息学院


前言:SimRank作为图节点相似度衡量方向的代表性算法,在链接预测、网络分析等领域均有广泛应用。然而,SimRank定义式对应的Power Method算法受限于其高昂的计算复杂度而无法应用于大规模图集,近年来提出的SimRank近似算法也因为缺乏精确结果(ground truths)而无法评估其性能的优劣。针对这一问题,本篇论文提出了首个支持大规模图集上单源SimRank精确计算的算法ExactSim,该算法可以在一小时内返回拥有十亿条边的超大规模图集上的单源SimRank的ground truths,打破了SimRank提出以来无法获得大图上单源结果准确值的困境,为SimRank近似算法的性能评估提供了依据,避免了现有的小图上比精度、大图上比效率的不合理近似算法评估现象出现。

关键词:单源SimRank,精确计算,理论保证

一、SimRank介绍:

SimRank的概念最初由Glen Jeh和Jennifer Widom在2002年提出[1],用于衡量图上两个节点之间的相似度。SimRank的直观思想可总结为以下两点:

  • 一个节点和其本身的相似度最大。
  • 如果两个节点各自的“邻居”节点是相似的,则这两个节点之间也具有相似性。

其具体定义如下:

equation?tex=%5Cbegin%7Bequation%7D++s%28u%2C+v%29+%3D+%5Cbegin%7Bcases%7D+1%2C+%26+%5Ctext%7Bfor+%24u+%3D+v%24%3B%7D%5C%5C+%5Cdisplaystyle+%5Cfrac%7Bc%7D%7B%7CI%28u%29%7C%7CI%28v%29%7C%7D%5Csum_%7Bx%5Cin+I%28u%29%7D%5Csum_%7By%5Cin+I%28v%29%7D+s%28x%2Cy%29%2C+%26+%5Ctext%7Bfor+%24u%5Cneq+v%24.%7D+%5Cend%7Bcases%7D+%5Cend%7Bequation%7D

其中,

equation?tex=u%E3%80%81v 表示两个节点,
equation?tex=s%28u%2Cv%29 表示节点
equation?tex=u%E3%80%81v 之间的SimRank相似度,
equation?tex=c 是一个介于0、1之间的常数,也称为“衰减因子”。根据定义,不同节点
equation?tex=u
equation?tex=v 的SimRank相似度取决于他们入邻居之间的SimRank相似度。

在计算任意两个节点

equation?tex=u%E3%80%81v 之间的相似度时,SimRank不仅考虑了
equation?tex=u
equation?tex=v 一阶邻居之间的相似性,还借助递归定义,考虑了多层邻居之间的相似度,这使得SimRank成为计算图节点相似度的重要方法之一。

本篇论文关心单源SimRank的查询问题,即给定图上某一节点

equation?tex=u 作为源节点,返回图上所有节点与源节点
equation?tex=u 的SimRank值(注:SimRank具有对称性,即
equation?tex=s%28u%2Cv%29%3Ds%28v%2Cu%29 ).

二、问题定义:

Power Method: SimRank的定义式给出了一种迭代计算的方法,我们称其为SimRank计算的Power Method,其在每一轮迭代中都依次更新图上所有节点对之间的SimRank值,由于衰减因子

equation?tex=c 的存在,图上节点对的SimRank更新幅度会随着迭代次数的增加而逐渐减小,重复迭代多轮,直至SimRank结果收敛于可接受误差内。但是,由于Power Method的每一轮迭代,都需要对图上所有节点对的SimRank值进行更新,因此,每轮迭代都需要消耗
equation?tex=O%5Cleft%28+m%5E2+%5Cright%29 的时间复杂度(
equation?tex=n为图上的节点数,
equation?tex=m 为图上的边数),要想使Power Method的计算结果误差不超过绝对误差
equation?tex=%5Cvarepsilon ,需要进行
equation?tex=O%5Cleft%28+%5Clog+%5Cleft%28+%5Cfrac%7B1%7D%7B%5Cvarepsilon%7D%5Cright%29%5Cright%29 轮迭代,因此Power Method的时间复杂度为
equation?tex=O%5Cleft%28+m%5E2%5Clog+%5Cleft%28%7B1+%5Cover+%5Cvarepsilon%7D%5Cright%29+%5Cright%29 。此外,还需要消耗
equation?tex=O%28n%5E2%29 的空间复杂度来存储图上所有节点对间的SimRank值,以供每次迭代循环时使用。如此高昂的时间和空间消耗使得Power Method只能用于计算小图上的SimRank结果,而无法应用于大图。

单源SimRank近似算法:为了提高SimRank计算的可扩展性,近年来,很多研究者陆续提出了多种针对单源SimRank的近似算法,希望可以改进单源SimRank计算的时间和空间消耗,以期得到大图上的单源SimRank近似结果。根据算法的设计思路,我们可以将这些近似算法分为三类:基于线性加和式(Linearization)的方法,基于蒙特卡罗采样(Monte Carlo Sampling)的算法,和基于Local Push的算法。图 1 中对应列出了各类方法下部分有代表性的算法,有些算法同时使用了两类方法。

8e2ac268d3c60894447d2c2d62ac849e.png
图1: 部分单源SimRank近似算法整理

分析这些近似算法,我们发现,基于线性加和式(Linearization)的算法SimMat和ParSim修改了SimRank线性加和式中修正矩阵

equation?tex=%5Ctextbf%7BD%7D 的表达含义(下文会详细论述修正矩阵
equation?tex=%5Ctextbf%7BD%7D 的含义),从而造成了较大的结果误差。而其余算法的查询或预处理时间复杂度中,都包含因式
equation?tex=O%5Cleft%28+%5Cfrac%7Bn+%5Clog+n%7D%7B%7B%5Cvarepsilon%7D%5E2%7D%5Cright%29 (表 2)。其中,
equation?tex=n 为图结构上的节点数,
equation?tex=%5Cvarepsilon 为绝对误差参数。观察因式
equation?tex=O%5Cleft%28+%5Cfrac%7Bn+%5Clog+n%7D%7B%7B%5Cvarepsilon%7D%5E2%7D%5Cright%29,其将较大的
equation?tex=n和较小的
equation?tex=%7B%5Cvarepsilon%7D%5E2 同时放到了分子和分母,这使得对于较大的图结构(即较大的
equation?tex=n )和较严苛的误差要求(即较小的绝对误差参数
equation?tex=%5Cvarepsilon ),
equation?tex=O%5Cleft%28+%5Cfrac%7Bn+%5Clog+n%7D%7B%7B%5Cvarepsilon%7D%5E2%7D%5Cright%29的值会变得很大,从而导致含有该因式的算法都无法在有效时间内得到大规模图结构上单源SimRank的低误差计算结果。如,对于大规模图数据集Twitter,其节点数
equation?tex=n%3D4+%5Ctimes+10%5E7 ,如果我们想以
equation?tex=%5Cvarepsilon%3D10%5E%7B-7%7D 的绝对误差计算单源SimRank的结果,则
equation?tex=%5Cfrac%7Bn+%5Clog+n%7D%7B%7B%5Cvarepsilon%7D%5E2%7D%5Capprox+10%5E%7B23%7D ,如此高昂的时间消耗很难满足实际应用的需要。因此,到目前为止,对于大规模图集,还没有可以在有效时间内以
equation?tex=%5Cvarepsilon%3D10%5E%7B-7%7D 或更低误差得到单源SimRank结果的算法。

89d837b1e248d3efccc493ed9b7f9511.png
表 2: 部分单源SimRank近似算法的时间复杂度

值得注意的是,这里之所以希望得到

equation?tex=%5Cvarepsilon%3D10%5E%7B-7%7D 的绝对误差,原因在于:如果我们以float类型(精度为
equation?tex=10%5E%7B-7%7D )变量存储单源SimRank的计算结果,则
equation?tex=%5Cvarepsilon%3D10%5E%7B-7%7D 的绝对误差会被“淹没”在float类型的精度上限中。因此,以
equation?tex=%5Cvarepsilon%3D10%5E%7B-7%7D 的绝对误差计算得到的单源SimRank结果在float存储类型中,与真实值(ground truths)的数值完全相同。我们可以将
equation?tex=%5Cvarepsilon%3D10%5E%7B-7%7D 的单源SimRank结果看作ground truths,用于评估其他近似算法的性能表现。

Motivation: 大图上缺乏单源SimRank的精确计算结果的现状会带来很多问题:

  • 无法客观比较各近似算法的性能优劣,进而引发了在小图上比较算法准确性,在大图上比较算法运行速度的不合理现象出现。(例如,评估基于蒙特卡罗采样的两个近似算法,如果其中一个算法在小、大图上都从源节点出发产生固定条数的随机游走;另一个算法的随机游走条数根据图大小进行调整,小图上只产生较少的随机游走,大图上产生较多的随机游走。则即使第一个算法在小图上的结果准确率高于第二个算法、在大图上的计算速度远小于第二个算法,我们也无法得到算法 1 的性能表现较算法 2 更好的结论,这是因为如果算法 1 在大图上也只产生与小图上同样条数的随机游走,则在大图上的估计误差会远大于小图。
  • 无法准确探知SimRank的分布和性质。

三、ExactSim算法:

针对上述问题,本篇论文提出了一种可以得到大图上单源SimRank精确解的算法ExactSim,其时间复杂度为

equation?tex=O+%5Cleft%28%5Cfrac%7B%5Clog+%7Bn%7D%7D%7B%7B%5Cvarepsilon%7D%5E2%7D%2Bm%5Ccdot+%7B%5Clog%7D+%7B1+%5Cover+%5Cvarepsilon%7D+%5Cright%29 ,避免了较大的
equation?tex=n和较小的
equation?tex=%7B%5Cvarepsilon%7D%5E2 同时出现在时间复杂度的分子和分母,可以在有效时间内得到大图上绝对误差
equation?tex=%5Cvarepsilon%3D10%5E%7B-7%7D 的单源SimRank估计结果,即可以得到大图上单源SimRank结果的ground truths。

High-level ideas: ExactSim的设计思路中结合了算法 Linearization[2]和 PRSim[3]的思想,首先使用PRSim提出的针对修正矩阵

equation?tex=%5Ctextbf%7BD%7D 的优化采样方法得到矩阵
equation?tex=%5Ctextbf%7BD%7D 的估计,再借助线性加和式完成单源SimRank的计算:
equation?tex=%5Chat%7BS%7D+%5Ccdot+%5Cvec%7Be_u%7D%3D%5Csum_%7B%5Cell%3D0%7D%5EL+c%5E%5Cell+%5Cleft%28P%5E%5Ctop+%5Cright%29%5E%5Cell+D+P%5E%5Cell+%5Ccdot+%5Cvec%7Be_u%7D+。 这里,
equation?tex=%5Cvec%7Be_u%7D 是一个第
equation?tex=u 维为1的one-hot向量,对应源节点
equation?tex=u
equation?tex=%5Chat%7BS%7D%5Ccdot+%5Cvec%7Be_u%7D 为源节点
equation?tex=u 对应的单源SimRank向量,
equation?tex=P 为图结构的(逆)概率转移矩阵,
equation?tex=c 为SimRank定义式中的衰减因子,
equation?tex=%5Ctextbf%7BD%7D 为对角修正矩阵。可以看到,在该线性加和式中,除了修正矩阵
equation?tex=%5Ctextbf%7BD%7D ,其他因子都是已知的。在得到了矩阵
equation?tex=%5Ctextbf%7BD%7D 的估计值之后,我们可以在
equation?tex=O+%5Cleft%28m%5Ccdot+%7B%5Clog%7D+%7B1+%5Cover+%5Cvarepsilon%7D+%5Cright%29 的时间复杂度下完成该线性加和式的计算。对于修正矩阵
equation?tex=%5Ctextbf%7BD%7D ,我们可以从随机游走的角度理解其含义:节点
equation?tex=u%E3%80%81v 间的SimRank值
equation?tex=s%28u%2Cv%29 等于从节点
equation?tex=u
equation?tex=v 出发的两条
equation?tex=%5Csqrt%7Bc%7D -游走相遇的概率,进一步可以将其写成如下形式的概率加和:

equation?tex=s%28u%2Cv%29%3D%5Csum_%7B%5Cell%3D0%7D%5E%7B%5Cinfty%7D%5Csum_%7Bk%3D1%7D%5E%7Bn%7D%5CPr%5C%7B%E4%BB%8E%E8%8A%82%E7%82%B9u+%E5%92%8Cv+%E5%87%BA%E5%8F%91%E7%9A%84%E4%B8%A4%E6%9D%A1+%5Csqrt%7Bc%7D+-%E6%B8%B8%E8%B5%B0%E5%9C%A8%E7%AC%AC+%5Cell++%E6%AD%A5%E9%A6%96%E6%AC%A1%E7%9B%B8%E9%81%87%E4%BA%8E%E8%8A%82%E7%82%B9k%5C%7D

equation?tex=%3D%5Csum_%7B%5Cell%3D0%7D%5E%7B%5Cinfty%7D%5Csum_%7Bk%3D1%7D%5E%7Bn%7Dc%5El+%5Ccdot+%5Cleft%28P%5E%7B%5Ctop%7D%5Cright%29%5E%5Cell+%28u%2Ck%29+%5Ccdot+%5Cleft%28P%5E%7B%5Ctop%7D%5Cright%29%5E%5Cell+%28v%2Ck%29+%5Ccdot+D%28k%2Ck%29

这里

equation?tex=%5Csqrt%7Bc%7D -游走是一种特殊的随机游走,在每一步游走中,都会以
equation?tex=%281-%5Csqrt%7Bc%7D%29 的概率停止在当前节点,以
equation?tex=%5Csqrt%7Bc%7D 的概率随机走向当前节点的任意入邻居。在上式中,
equation?tex=P%5E%5Ctop%28u%2Ck%29%E3%80%81P%5E%5Ctop%28v%2Ck%29 为概率转移矩阵
equation?tex=P 的对应项,表示节点
equation?tex=u%E3%80%81v 沿入边转移到节点
equation?tex=k 的概率,
equation?tex=D%28k%2Ck%29 为从节点
equation?tex=k 出发的两条
equation?tex=%5Csqrt%7Bc%7D -游走不曾相遇的概率。因此,
equation?tex=D%28k%2Ck%29是为了保证两条随机游走“首次相遇”成立,避免重复计算,因此,我们将对角矩阵
equation?tex=%5Ctextbf%7BD%7D 称为概率修正矩阵。如前所述,算法SimMat和ParSim修改了SimRank线性加和式中修正矩阵
equation?tex=%5Ctextbf%7BD%7D 的表达含义,用
equation?tex=c%5Ccdot+%5Ctextbf%7BI%7D
equation?tex=%5Ctextbf%7BI%7D 为单位阵)代替了修正矩阵
equation?tex=%5Ctextbf%7BD%7D ,从而产生了绝大的误差。

PRSim[3]算法中提出了一种快速估计矩阵

equation?tex=%5Ctextbf%7BD%7D 对角线上各元素的方法,即从图上每个节点
equation?tex=k+%28%5Cforall+k+%5Cin+V%29 处产生一定数量的
equation?tex=%5Csqrt%7Bc%7D -游走对,用这些游走对中不曾相遇的比例作为
equation?tex=D%28k%2Ck%29 的估计值。整个估计过程中共产生
equation?tex=O+%5Cleft%28+%5Cfrac%7B%5Clog+%7Bn%7D%7D%7B%7B%5Cvarepsilon%7D%5E2%7D%5Cright%29
equation?tex=%5Csqrt%7Bc%7D -游走对,并按照从节点
equation?tex=u 出发的
equation?tex=%5Csqrt%7Bc%7D -游走停止在各节点的概率比例分配这些游走对。因此,ExactSim的时间复杂度由两部分组成:矩阵
equation?tex=%5Ctextbf%7BD%7D 的估计和线性加和式的计算,为
equation?tex=O+%5Cleft%28%5Cfrac%7B%5Clog+%7Bn%7D%7D%7B%7B%5Cvarepsilon%7D%5E2%7D%2Bm%5Ccdot+%7B%5Clog%7D+%7B1+%5Cover+%5Cvarepsilon%7D+%5Cright%29

Optimization: 在此基础上,本篇论文还提出了三种优化方法,用来进一步降低单源SimRank的计算时间和空间消耗。具体为:

  1. 矩阵
    equation?tex=%5Ctextbf%7BD%7D
    的局部确定性计算:为了提高矩阵
    equation?tex=%5Ctextbf%7BD%7D 估计的准确程度,本篇论文提出,可以先确定性地算出前几层的不再相遇概率(即从节点
    equation?tex=k 出发的两条
    equation?tex=%5Csqrt%7Bc%7D -游走在前
    equation?tex=%5Cell%28k%29 步不曾相遇的概率),再借助蒙特卡罗采样的方法估计得到其他层的不再相遇概率(即从节点
    equation?tex=k 出发的两条
    equation?tex=%5Csqrt%7Bc%7D -游走在
    equation?tex=%3E%5Cell%28k%29 步不曾相遇的概率),进而降低蒙特卡罗采样的方差。
  2. 矩阵
    equation?tex=%5Ctextbf%7BD%7D
    采样估计时游走对的分配优化:在矩阵
    equation?tex=%5Ctextbf%7BD%7D 的估计过程中,总共需要产生
    equation?tex=O+%5Cleft%28%5Cfrac%7B%5Clog+%7Bn%7D%7D%7B%7B%5Cvarepsilon%7D%5E2%7D%5Cright%29
    equation?tex=%5Csqrt%7Bc%7D -游走对,基础ExactSim按照从节点
    equation?tex=u 出发的
    equation?tex=%5Csqrt%7Bc%7D -游走停止在各节点的概率比例分配这些游走对,而优化算法提出可以按照各点停止概率平方比例进行分配,借助理论分析可以证明这样分配游走对时,蒙特卡罗采样的方差更小。
  3. 线性化加和时向量的稀疏存储:优化算法指出,在线性化加和过程的每轮迭代中,不需要将
    equation?tex=P%5E%5Cell+%5Ccdot+%5Cvec%7Be_u%7D 向量的每一维都进行存储,只需要存储其中大于绝对误差参数
    equation?tex=%5Cvarepsilon 的项即可。理论分析保证稀疏存储的操作在减少空间消耗的同时也不会放宽误差界。

四、实验评估:

本篇论文综合评估了所提算法ExactSim在小图和大图上的性能表现情况,并将ExactSim与各类单源SimRank计算方法中的state-of-the-art算法进行比较,即:基于线性加和式的最优算法Linearization[2]和ParSim[4]、基于蒙特卡罗采样的最优算法MC[5]、和基于Local Push的最优算法PRSim[3]。

数据集信息:

c7f8a9c671351095a416a9acd48d6c03.png

评价指标:

  • equation?tex=MaxError%3D%5Cmax_%7B%5Cforall+v+%5Cin+V%7D+%7C+s%28u%2Cv%29-%5Chat%7Bs%7D%28u%2Cv%29%7C

其中,

equation?tex=u 为源节点,
equation?tex=s%28u%2Cv%29 为节点
equation?tex=u%E3%80%81v 之间SimRank的精确值,
equation?tex=%5Chat%7Bs%7D%28u%2Cv%29 为估计值。
  • equation?tex=Precision%40k%3D%5Cfrac%7BV_k+%5Ccap+%5Chat%7BV_k%7D%7D%7Bk%7D

其中,

equation?tex=V_k 为ground truths中与源节点的SimRank值最高的top k节点,
equation?tex=%5Chat%7BV_k%7D 为单源SimRank估计结果的top k节点。

小图实验结果:

40bd7d38b58cf663ee8c175d68fbd00a.png

观察小图上的实验结果,可以看到,ExactSim是所有算法中唯一一个可以在四个数据集上连续取得

equation?tex=10%5E%7B-7%7D 误差和
equation?tex=precision%40500%3D1 的算法。这里,论文用Power Method计算得到四个小数据集上的单源SimRank的ground truths。

大图实验结果:

a496a4d83762fbc28a80715351b75dab.png

Power Method算法高昂的时间、空间复杂度使其无法求得大图上的ground truths结果,因此,本篇论文首先通过严格的理论分析保证了ExactSim的结果准确性,再使用ExactSim算法在

equation?tex=%5Cvarepsilon%3D10%5E%7B-7%7D 的结果作为单源SimRank的ground truths。如前所述,如果我们用float类型变量存储SimRank结果,则
equation?tex=10%5E%7B-7%7D 误差的结果与真实值完全相同,即为单源SimRank的精确解。

观察大图上的实验结果,可以看到,ExactSim算法的

equation?tex=precision%40500
equation?tex=%5Cvarepsilon%3D10%5E%7B-6%7D 就已经达到了1,既可以准确找到 top 500的节点,这说明ExactSim的单源SimRank计算结果在
equation?tex=%5Cvarepsilon%3D10%5E%7B-6%7D 已经收敛。

五、论文回顾:

  • 本篇论文提出了算法ExactSim,其是首个可以在有效时间内得到大图上
    equation?tex=10%5E%7B-7%7D 误差内的单源SimRank结果,如果用float类型变量存储SimRank结果,则ExactSim可以得到大图上单源SimRank的准确值。
  • 本篇论文首先用理论分析保证了ExactSim算法的结果准确性,并通过大量的实验验证了ExactSim算法的有效性。

参考文献:

[1] Jeh G, Widom J. SimRank: a measure of structural-context similarity[C]//Proceedings of the eighth ACM SIGKDD international conference on Knowledge discovery and data mining. 2002: 538-543.
[2] Maehara T, Kusumoto M, Kawarabayashi K. Efficient simrank computation via linearization[J]. arXiv preprint arXiv:1411.7228, 2014.
[3] Wei Z, He X, Xiao X, et al. Prsim: Sublinear time simrank computation on large power-law graphs[C]//Proceedings of the 2019 International Conference on Management of Data. 2019: 1042-1059.
[4] Yu W, McCann J. Efficient partial-pairs SimRank search on large graphs[J]. Proceedings of the VLDB Endowment, 2015, 8(5): 569-580.
[5] Fogaras D, Rácz B. Scaling link-based similarity search[C]//Proceedings of the 14th international conference on World Wide Web. 2005: 641-650.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值