【cs224w】Lecture 3 - Motif, Graphlet 及 结构性角色
转自本人:https://blog.csdn.net/New2World/article/details/105291956
大量真实网络都有一个规律,即这些网络都是由一些 building block 构成,类似 Kronecker 图有大量的重复结构。而我们需要一种度量方式来衡量某个结构在图中的显著性。因此需要引入 motif 和 graphlet 这两个概念。
这一部分我还有一些概念没完全理解,所以在最后记录了一些问题等待以后回来解决。也欢迎有理解了的朋友帮忙解惑。
Network Motifs
这里实在无法确定 motif 的准确翻译是什么,干脆不翻译了。但它是什么东西还是得搞清楚的:在图中大量重复的模式被称为 motif。这个定义包含了三个要点
- 大量,就是多,比随机图多
- 重复,还是多
- 模式,即规模小的导出图[1]
我们为什么需要这个 motif ?首先,既然这个概念的定义表明它在网络中大量存在,说明这个 motif 揭示了这个网络的一些普遍规律,比如食物链中的互利共生关系或竞争关系。同时我们可以依据这个规律预测一些我们可能还没有发现的网络中隐含的关系。
知道了 motif 的好处之后就需要找到一种方法来衡量它在网络中的显著性,也就是是否大量出现。最直接的方式就是挨个数,即 \(N_i^{real}\)。那么这样就又遇到了需要参照的情况了,换句话说就是“我怎么知道 \(N_i^{real}\) 算不算多?”。
Configuration Model
既然需要参照,那就自己动手生成一个。但这个生成模型就不能像 ER 随机图模型一样简单的按概率取边了。因为我们想要了解一个 motif 在网络中是否大量重复出现,那么需要和真实网络有相似的度分布和聚类系数。因此我们需要生成一个各节点和真实网络有相同度的随机图。这样的模型被视为这个网络的零模型(null model)。
怎么做呢?首先我们将每个度为 \(k_i\) 的点拓展为 \(k_i\) 个迷你点一组的结构,然后随机连接这些迷你点。最后合并同一组的迷你点就能得到满足节点度条件的图。

这里的确会出现自环和重边的问题,但需要清楚的是随着图的规模增大,节点数增加,相比于节点个数,每个节点的度(迷你点个数)是可以忽略不计的。也就是说这种自环和重边的情况很少发生。即使发生了,忽略就好,虽然会使得某些点的度不满足条件但不影响(反正都是随机图,差这个别几个点无所谓)。
还有一种方法,就是从给定的图开始,随机选择两条边然后将它们的端点交换。例如,\(A\rightarrow B,C\rightarrow D\),交换后为 \(A\rightarrow D,C\rightarrow B\)。而交换次数大致是 \(Q\times|E|\),其中 \(Q\) 需要取一些比较大的数,比如 \(100\)。直观理解就是让每条边平均交换 \(Q\) 次。
注意:这里交换就需要避免自环和重边了。因为随机的次数很多,如果不考虑自环和重边,最后可能导致这两种边大量出现且图会不连通。
当然,很明显,第一种方法更有效率……
这样有了参照之后我们就能数出来随机图里 motif 的出现次数 \(N_i^{rand}\)。那我们将 motif 的显著性定义为:
Z_i&=(N_i^{real}-\bar{N}_i^{rand})/std(N_i^{rand}) \\
SP_i&=Z_i/\sqrt{\sum\limits_jZ_j^2}
\end{aligned}\]
这里 \(Z_i\) 是节点 \(i\) 的显著性;\(SP_i\) 是归一化后所有候选的 motif 的显著性向量,它揭示了所有 motif 间的相对显著性关系,有了对比一切都明了了。至于需要生成多少随机图才能得到一个较为准确的标准差,Jure 的回答是:\(100,1000,10000\),反正大于 \(10\)
虽然这里介绍的 motif 很简单,就是一些 pattern。但我们可以将这个概念拓展。例如,可以加入节点类型,就算网络结构一致但节点类型不一样也算不同的 motif;或者还可以加上时序信息。另外,还可以定义不同的显著性度量方法、对零模型加上不同的限制条件等。[2]
Graphlets
motif 是从整个图中提取结构信息,那么如果我们要考虑一个局部或者一个节点周围的结构信息呢?我们引入了 graphlets 概念。graphlets 是一系列连通的非同构子图,这里要求是导出子图,即 induced。如下图,没有标字母的就是对称的或位于非同构位的节点。
这里提到了一个自同构轨道(automorphism orbit)[3]的概念,不太清楚,记录下
类似于节点的度,定义 graphlet degree 为包含节点的 graphlet 的个数。对于有不同非同构位的 graphlet 要针对不同位置各自计算,以此得到 Graphlet Degree Vector (GDV)。

统计了节点数从 \(2\) 到 \(5\) 的 graphlets 后我们能得到一个长度为 \(73\) 的 GDV 向量来表示一个节点周围的结构信息,而这个信息覆盖了以该节点为中心 \(4\) 个 hops 内的区域。
How to Find Motifs and Graphlets
一般来说,合适的 motif 的规模就 \(3\)~\(8\) 个点,如果大了的话这个计算量就爆炸了。而且判断两个图是否同构的问题本身就是个 NP-complete 问题。那么计数一个图里的子图个数主要分两步:1. 枚举;2. 计数。现在又几种有效的算法来对子图进行枚举:
- Exact Subgraph Enumeration (ESU) [Wernicke 2006]
- Kavosh [Kashani et al. 2009]
- Subgraph Sampling [Kashtan et al. 2004]
Jure 主要介绍了 ESU,这个算法和找一个集合的所有子集的方法差不多,都是递归进行遍历。它定义了两个集合 \(V_{subgraph}\) 和 \(V_{extension}\),分别代表 当前已经生成了的子图节点 和 后续遍历的候选节点。其主要思路是:从一个起始点开始,每次往 \(V_{extension}\) 里加满足一下条件的点:
- 节点序号必须要大于起始点
- 新节点可以互相邻接,但不能跟任何已经在 \(V_{subgraph}\) 里的点邻接

ESU 算法运行后会生成一棵 ESU 树,如下图[4]

根据 ESU 的输出我们就可以来数同构的结构个数了,比如上图中画出的子图总共有两种非同构结构,第一种出现了 \(5\) 次,第二种只出现了 \(1\) 次。而图的同构算法这里采用的是 McKay's nauty [McKay 1981] 算法。这是一种启发式的算法,具体细节这里不做深入介绍,有时间了会写一篇 cs224w 里出现的算法汇总。
这里附带了同构图的定义:
如果存在这么一种双射关系 \(f\),使得在图 \(G\) 中邻接的任意两个节点 \(\mu,\nu\) 在图 \(H\) 中有对应的 \(f(\mu)\) 和 \(f(\nu)\) 邻接,那么就说图 \(G\) 和 \(H\) 同构。
Structural Roles
在现实中的真实网络里,不同节点可能扮演不同角色,比如食物链中的捕食者和被捕食者,企鹅群里的群主、管理员和群成员等等。而不同角色的节点周围的网络结构多多少少会有些差异,比如星型结构的中心、聚集的小团体或一些外围节点。研究这些不同角色的节点也可以告诉我们一些网络中隐含的信息。
角色的定义是在网络中具有相似位置的点的集合。这个定义和 community 其实是互补的,比如各个公司可能是不同的 community,而每个公司内部的角色大致是相同的(管理层和下属员工)。公司(community)内个体间会有比较密切的联系,但公司间相同职位(角色)的个体并不一定会有关联。

这里定义了 structural equivalence:若两节点与其他所有节点具有完全相同的连接关系,那么这两个节点就具有相同结构。然而这个定义太死板了,我们只想找到相似的结构,因此在这个定义的基础上我们允许一些 noise
既然有了定义,那么我们就要从网络中找出不同角色。有了角色信息后我们就可以:
- 发现一些异常行为
- 迁移学习,预测其它网络角色
- 计算网络相似度和迁移兼容性
这里介绍的算法是 RolX,这是一种
- 无监督学习
- 不需要先验知识
- 复杂度和边的数量成线性关系
- 能发现不同角色间的多种关系
这个算法的流程很直接,提取信息,然后聚类即可。大致流程可以归纳为:
Input(Adjacency Matrix)-->FeatExt[Recursive Feature Extraction]
FeatExt-->NodeFeat(Node Feature Matrix)
NodeFeat-->RoleExt[Role Extraction]
RoleExt-->NodeRole(Node Role Matrix)
RoleExt-->RoleFeat(Role Feature Matrix)

重点在特征提取这一步,特征包括了局部,ego和递归信息:
- 局部信息,比如之前提到的 GDV、节点的度等
- egonet 内的边的数量、egonet 与其他节点连接的边的数量等都能作为特征
- 递归信息这个概念很抽象,比如邻接节点的平均度、前面局部和 ego 信息的均值及总和等等。(甚至可以求和的结果和前面所有信息一起在求和或者均值,递归嘛)
不过特征太多也不见得是好事,因此会去除一些相关度高的特征以达到剪枝的目的。
egonet:包括一个节点、该节点的邻接节点以及这些节点间所有边的子图
最后一步使用聚类方法进行节点的角色聚类,可以使用 K-Means 等。而 RolX 中使用的是 Non-Negative Matrix Factorization,同时使用 MDL(最小描述长度) 来选择模型,KL 散度来度量 likelihood
Jure 的 slide 定义 motif 是 induced,但 wikipedia(https://en.wikipedia.org/wiki/Network_motif; https://en.wikipedia.org/wiki/Graphlets) 定义的 motif 不一定是 induced ↩︎
overrepresentation 和 underrepresentation (anti-motif) 的概念不太清楚
↩︎automorphism orbit 的具体定义是什么?graphlets 里的非同构位是不是就是 automorphism orbit? ↩︎
Jure 在课程视频 58:08 的地方回答学生问题说到 ESU 树输出的两个同构的子图是不同的 motif。有点迷惑:motif 不应该是一个 pattern 吗?这俩输出的不应该是 subgraph 吗?这俩到底是同一个 motif 不同 subgraph 还是如 Jure 说的不同 motif? ↩︎
【cs224w】Lecture 3 - Motif, Graphlet 及 结构性角色的更多相关文章
- 【图机器学习】cs224w Lecture 15 - 网络演变
目录 Macroscopic Forest Fire Model Microscopic Temporal Network Temporal PageRank Mesoscopic 转自本人:http ...
- 【图机器学习】cs224w Lecture 16 - 图神经网络的局限性
目录 Capturing Graph Structure Graph Isomorphism Network Vulnerability to Noise 转自本人:https://blog.csdn ...
- 【图机器学习】cs224w Lecture 7 - 节点的表示
目录 Node Embedding Random Walk node2vec TransE Embedding Entire Graph Anonymous Walk Reference 转自本人:h ...
- 【图机器学习】cs224w Lecture 8 & 9 - 图神经网络 及 深度生成模型
目录 Graph Neural Network Graph Convolutional Network GraphSAGE Graph Attention Network Tips Deep Gene ...
- 【图机器学习】cs224w Lecture 13 & 14 - 影响力最大化 & 爆发检测
目录 Influence Maximization Propagation Models Linear Threshold Model Independent Cascade Model Greedy ...
- 【图机器学习】cs224w Lecture 10 - PageRank
目录 PageRank Problems Personalized PageRank 转自本人:https://blog.csdn.net/New2World/article/details/1062 ...
- 【图机器学习】cs224w Lecture 11 & 12 - 网络传播
目录 Decision Based Model of Diffusion Large Cascades Extending the Model Probabilistic Spreading Mode ...
- 使用 HTML5 设计辅助功能
使用 HTML5 设计辅助功能 Rajesh Lal 下载代码示例 如果您真的对面向广大受众感兴趣,将需要为网站设计辅助功能. 辅助功能使网页更易于访问.更易于使用,可供每个人浏览. 通常,使用最新的 ...
- [C2P3] Andrew Ng - Machine Learning
##Advice for Applying Machine Learning Applying machine learning in practice is not always straightf ...
随机推荐
- 机器学习实战:意大利Covid-19病毒感染数学模型及预测
作者:Gianluca Malato deephub翻译组:刘欣然 当今世界正在与一个新的敌人作斗争,那就是Covid-19病毒. 该病毒自首次在中国出现以来,在世界范围内迅速传播.不幸的是,意大利的 ...
- 关于使用ajax导出excel问题
最近有个需求是在页面导入文件,后端进行处理后返回处理结果的excel,前端使用的是ajax.我最开始的做法是:在原有代码后加一段导出excel的代码,结果代码能正常运行,但页面始终没有返回我需要的ex ...
- 探究Spring Boot中的接收参数问题与客户端发送请求传递数据
结合此篇参考Spring框架学习笔记(9)--API接口设计相关知识及具体编码实现 在使用Spring Boot进行接收参数的时候,发现了许多问题,之前一直都很忙,最近才稍微有空研究一下此问题. 网上 ...
- .net 4.0 以下HttpWebRequest Header 修改hosts方法
.net 4.0 以下HttpWebRequest Header 修改hosts方法 特此记录 public class CusteredHeaderCollection : WebHeaderCol ...
- C语言之歌词解析
0x00 脚下的路 不知道为啥要写这个小标题,可能是年轻的心想体验一下苍老的感觉,抑或是少年的一阵迷茫.混沌的四年,终究还是入了这一行.从初时的不知,到现在的刚开始,中间的间隔竟是四年之久,想起了陈奕 ...
- 还是只使用console.log()进行调试?好吧,其实还有更多。
在浏览器控制台中打印消息无疑可以拯救所有开发人员. console.log()消息就像您的大多数疾病的药,同时调试了代码中的一些有线问题. 那里的大多数开发人员都喜欢— 让我们在浏览器中打印消息以了解 ...
- greenplum数据库常用操作
1. 场景描述 greenplum集群部署好后,软件老王在实际使用过程中碰到一些问题,简单记录下,希望能帮到有需要的朋友. 2 .解决方案 2.1 gpcc监控地址 说明:非常重要,greenplum ...
- DRF之APIView源码简析
一. 安装djangorestframework 安装的方式有以下三种,注意,模块就叫djangorestframework. 方式一:pip3 install djangorestframework ...
- Cesium 源码笔记[1] Viewer模块实例化的大致过程
我原本想写日记的,但是不太现实. 源码下载 源码可以从源码包和发行包中的Source目录中获取. Cesium的模块化机制从1.63版本开始,由原来的RequireJs变为ES6.但有可能是原先设计耦 ...
- 你真的理解 if __name__ == '__main__' 的作用么?
https://blog.csdn.net/Amberdreams/article/details/88382993