Simrank-语义相关度查询


一、simrank算法

simrank的主要工作是查询图上的一对结点的相似性。主要有两种理解方式

1.1、按照定义理解

在这里插入图片描述
直接按照上式就是v1和v2的相似度的(递归)定义,它是由彼此的父节点定义的。因为衰减因子c,他们总比彼此的父节点的相似度更低。

1.1.1算法

a的所有父节点和b的所有父节点一一作相似性比较后取平均。不过即使a和b有着完全相同的父节点,因为衰减因子的缘故它们的相似性也不会=1.
在这里插入图片描述

1.1.2 剪枝

只考虑一定范围距离内的节点,如果节点之间非常遥远则直接认为节点的相关度为0.

1.2 按照随机游走解释

d(a,b):从a节点随机游走到b节点所需的步数的期望。
m(a,b):从a节点、b节点同时出发,随机游走,相遇所需步数的期望。
下图为在积方图上的m(a,b),它的含义是a和b同时走到x节点,而只需要考虑所有的x节点就可以。
在这里插入图片描述
相似性的定义非常类似,只是用一个函数把l(t)映射到0-1区间上,使得相似性也可以在0-1区间上。
在这里插入图片描述
它的直观含义是:如果两个随机游走的点能尽快相遇,则说明这两个点有很强的相关性。
可以证明,这种定义和simrank传统的相似性的定义是等价的。
上图也等价于下式:
在这里插入图片描述
所以问题就在于,如何求出两个点之间的相遇时间?
offline阶段:对每个点走N次l步的随机游走并储存路径
online阶段:可以在之前储存的这些路径中找到很多u和v相遇的样本,代入f函数求相似度后取均值。

1.2.1 fingerprint trees算法

一种压缩offline储存路径,并方便online阶段查询的方法。
所有节点的一次采样,按照某种构建策略,共同构成一棵树,一共N棵树。
上图是五节点随机游走的一个逆序图。两个节点相遇后就融合成一个节点。
上图可以压缩成下图。边的标签为两个节点第一次相遇的步数。

在这里插入图片描述
同时对于每个u我们还储存了“哪些树是包含u的”。

1.2.2 index-based算法

这个算法进行了两方面的优化,一是过滤,而是索引。

1.2.2.1 过滤

在这里插入图片描述
下式可以在迅速估计h的基础上估计出v1,v2的上界,因为h是一个估计(下界),所以下式比上式更快但更松弛。如果上界未达到阈值则可以不计算这两个节点的相关性。

1.2.2.2 索引

在这个算法中,我们希望计算积方图上每个节点的标签。已知的是部分标签,我们可以通过方程组来解得想要的标签。
在这里插入图片描述
在这里插入图片描述
方程组的个数就是灰色截断后剩余树的深度。问题可以转换为:找到一组点,拿掉这一组点后,整个图上都不会有超过h的路径。这样剩余树的深度也不会超过h。——这个问题也称为h-go cover问题。

二、SEMsim——simrank应用于语义查询

例如,下图中Bo和John,他们与Aditi的相似度,如果按照simrank算法应该是相同的。但是SEMsim还考虑了另一个因素:概念的普遍性,以边的粗细表示。
在这里插入图片描述新的算法如下。
1.归一化的Nuv改变了。
2.相关度整体乘了sem(u,v)用以表示这标签的语义相似性
3.给边赋予了权重。两个父节点之间的相关性对目标节点相关性的影响与两条父-子连边的权重有关。但并没有讲明这种权重是如何赋予的

在这里插入图片描述
关于标签语义相似性,它完全是人为定义的,只需要遵循下面三点
在这里插入图片描述
例如:描述共性的信息量/描述本身的信息量,信息量与使用的频繁程度成反比。因为,如果某个词频繁使用例如thing,说明它很宽泛,信息量不大。希望语义相似度高,则是希望信息量的重合更大。
在这里插入图片描述
SEMsim和simrank的区别就在于前者考虑了节点标签语义相似性,并且引入了边的权重。

三、Boosting SimRank with Semantics

作者:Tova Milo, Amit Somech and Brit Youngmann
目标:在保留simrank的声明性定义和有效计算的基础上将simrank拓展到语义领域。
贡献:
1.提出了semsim
2. 对应于simrank的随机游走模型,semsim也有一套对应的Semantic-Aware Random Walk (SARW),可证明与元原定义等价。在这个模型中,如果我们设定一个阈值,使得“只有在这个阈值以上的相似度才被考虑”,我们就可以简化积方图,但计算得到同样的结果。这样我们可以把时间复杂度大大降低,有些实验上甚至高达三个量级。
3. simrank中,过大的G方图引发了一些基于MC的优化。simrank的MC基本框架,会在O(每个节点的采样次数×长度边界)时间内返回一个估计的simrank分数。我们开发了一个类似的MC框架,从而可以直接应用已有的simrank的优化。
将simrank的随机游走模型改进成Semantic-Aware Random Walk (SARW),即考虑语义这件事会导致样本量的二次增加。为了克服,采用重要抽样,并且设计了一个无偏估计器,最后把时间控制在O(nw · t · d2),d是平均入度。进一步地,设计了剪枝,虽然最坏情况不变,但是在实验中速度已经和simrank相当。

3.1 相关工作

  1. simrank++ :考虑边全职;忽略语义,没有解决可伸缩性问题。
  2. Meta path-based top-k similarity search in heterogeneous information
    networks:考虑元路径
  3. An information-theoretic definition of similarity.;Using information content to evaluate semantic similarity in a taxonomy基于本体信息和信息内容来度量相似性
  4. 过大的G方图引发了一些基于MC的优化[15, 34, 39].

四、An Information-Theoretic Definition of Similarity

Dekang Lin,1998
特点:适用于不同领域:只要有一个概率模型就适用。
前人工作的问题: 对数据的格式有很高的要求
本工作的优点:

  1. 普遍性。基于信息理论定义相似性,只要有概率模型就可以
  2. 基于假设而不是定义

4.1 对相似性的直观理解

  1. 共性越多就越相似
  2. 差异越大,相似性越小
  3. 完全相同时,不论共性如何,它们的相似性达到最大。

共性
下式表示A和B两个概念的共性,指的是陈述A和B之间共性的命题包含的信息量
在这里插入图片描述
在信息学中信息量是用负对数衡量的:
在这里插入图片描述
差异
还需要衡量两个物体之间的差异:
在这里插入图片描述
相似度
相似度是共性和差异的函数。因而也是共性和“描述所需信息量”的函数
在这里插入图片描述

4.2 假设

4.2.1 为什么说相似度应该介于0-1之间

0:应该有一个下界,例如真皮沙发和深度优先搜索,利率和矩形;他们之间的相似度谁也不比谁低。
1:由于直觉三,得到如果两个物体相同,则应该相似度为一个恒定常数。这个常数人为指定为1。显然,两个概念相同时description和common也相同,套用上面的公式得到:
在这里插入图片描述

4.2.2 相似性是不同角度描述的相似性的加权求和

在这里插入图片描述
假设共性是x1+x2,总共需要描述的信息量是y1+y2,加号左右代表两个角度。加权值是每个角度的信息量占比。

4.3 公式

基于上述假设可以得到以下公式:
在这里插入图片描述

五、考虑边的标签的情况

问题设定
在这里插入图片描述

5.1 Motivation

Lin基于一些对于“语义相关性”的直觉做出了一些假设,又用这些假设推导出了语义相关性的计算公式。semsim直接把它作为一种独立于网络结构的先验知识而应用于公式中。
类似地,我们也可以定义边的相关性的计算公式。但是边的相关性在应用起来却不那么直观:如果想利用节点的相关性而使用先验的节点的相关性,直接乘进去就好了;但是先验的边的相关性的作用是“改变父节点对子节点的影响”。
所以,我们不应该直接把边的相关性乘在原来的公式前边,应该放在求和号里边。原来semsim就是把父节点的相关性加权求和了,现在我们用边的相关性去修改这个权重。
所以我们做的事情是

  1. 定义边的相关性
  2. 利用边的相关性修改父节点权重

5.2 边的相关性

5.2.1 基本定义

假设语料库中所有的词为(x1,x2,…xn),它们出现的频率为(p1,…,pn),则∑pi=1
以xi为父节点,以a为边,可以得到一系列子节点,显然这些子节点在总样本集(x1,x2,…xn)中。进而我们可以得到:
在这里插入图片描述
把上述Pa(i,j)记作用边a的转移函数,它把一对概念映射到一个概率值上。利用这个转移函数,我们可以得到边a的转移矩阵。
在这里插入图片描述
一个直观的想法是,如果两条边的含义相似,那么在给定相同的起点的情况下,他们也会指向类似的终点。比如对于“上海”这个词语而言,“是家乡”和“是居住地”这两组关系指向的人物重合率很高,而“是家乡”和“最想去旅游的城市”这两组关系指向的人物重合率大概很低。而事实上“是家乡”和“是居住地”的语义也会比“是家乡”和“最想去旅游的城市”更接近。
两个转移矩阵之间的距离应与两条边指向的对象的重合率成负相关,所以我们可以用转移矩阵的距离来定义边的相似性:
在这里插入图片描述
距离可以是各种意义上的,比如差的二范数。

5.2.2 缩小时间&空间复杂度

边如此之多,如果每条边都用整个语料库建立一个n×n庞大的转移矩阵,时间空间复杂度极高。幸运的是,如果进行比较的边的语法信息比较类似,那么它们的起点和终点也会有偏好。例如“是家乡”“是居住地”这种关系,它们的起点总是一个地名,而终点往往是人名,而其他词汇在这两个关系的矩阵中对应的频数都接近0——可见转移矩阵是很稀疏的。
所以在具体构建转移矩阵的时候,不一定要统计语料库中所有的词汇,对于某一组边可以针对性地摈弃那些几乎不会出现的词语。转移矩阵并不一定要是n×n的。
更直接的办法是,直接指定转移矩阵的大小k和最大试验次数lmax。想要构造a边的转移矩阵时,就在原图上有放回地不停采样,每一次观察图上的一条a边:
在这里插入图片描述
这段代码返回一个字典,键是(起点,终点)二元数组,值是它的出现频次。一般来说其中涉及的点正好是k个,可以根据这个字典构建对应的转移矩阵。当然也有一种可能是已经到达了最大试验次数而没有采集到k个点,那说明这张图本身就极为稀疏,就只能随机取点补足到k个了。

5.3 语义相关性函数

5.3.1 semsim中使用的语义相关性函数

语义相关性函数指的是《不考虑结构信息,仅仅使用词汇本身去判断的语义相关性》,它作为一种外援或者说是先验知识而存在,记作sem(A,B)。
semsim中的sem(A,B)照搬了Lin的An Information-Theoretic Definition of Similarity中给出的节点的语义相关性函数:
在这里插入图片描述
或者也可以等价地写成:
在这里插入图片描述
在semsim公式中这个外援直接被作为因子,乘在原来的simrank公式前边:
在这里插入图片描述

5.3.2 利用边的相关性修改父节点权重

构建一个影响函数,将节点的相似性与边的相似性融合在一起:
在这里插入图片描述
其实最简单的影响函数就是f(s1,s2)=s1×s2,这不仅保留了0-1区间的值域,而且也符合直觉:只有父节点相似、且父节点到子节点的关系也相似的情况下,我们才倾向于判断子节点相似。
直接相乘的情况下,有时候理解上会有一些问题,比如起点是“图数据管理与挖掘”,两条边分别是喜欢和讨厌,终点指向两个不同的人。照理说这样的信息应该使两个人的相似性变低,但因为值域是0-1区间,它仍然使相似性增加了,至少比一对毫无联系的父节点要更有利于相关度的增加。这看起来是一个问题,但是换个角度讲,“喜欢”和“讨厌”虽然是反义词,却未必就是不利于相似性的。这要看我们对相似的理解是“相似”还是“相关”。某种程度上,如果两个人一个喜欢这门课,另一个不喜欢这门课,这当然比不上“都喜欢”这样强的联系,但至少说明他们都与这门课发生了联系——他们都是复旦大学的学生,都选了这门课,并且对着门课有自己的思考。

六、补充:异质图

信息网络的定义与常见的图不同,节点和边都有“类”的概念,分别称作对象类型和关系类型。如果类不止一个则为异质网络,否则称为同质网络。
在这里插入图片描述
在异质网络中,两个对象可以由不同的路径相连,不同的路径表达的语义是不同的。例如
APVC(“Author-Paper-Venue-Conference”)路径下的相关性强调作者参与的会议,而APSPVC(““Author-Paper-Subject-Paper-Venue-Conference””)路径下的相关性强调与作者论文主题相同的会议。
正是这些路径决定了对象之间的相关性关系。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值