上一节课 CS224W 3.1-Motifs and Structural Roles in Networks, 学习到了配置用于对比作用的随机图,
还有一种配置方式
img
比如将
img
A-B,C-D改为A-D,C-B(做一个cross)
那么我们怎么确定得到的model是一个足够好的model?--取决于你要做什么。
这里我们kept节点个数、边个数等去match真实网络。
现在我们回顾一下找模块的步骤:
img
那么需要生成多少个随机图?---基本上是成千上万,甚至更多(也取决于真实图的大小)
当然对于模块的定义和度量形式也有很多其他的表示方式:
img
前面学习了模块,用来从局部来窥探整个图的结构,在学习整个图的结构之前,我们现在开始看看一个节点周围(neiborhood)网络的结构是什么样的,学习用graphlets来描述节点的特征,描述给定节点周围的网络结构。
什么是graphlet?--连通的非同构子图
img
我们用graphlets来作为一个在节点层面的子图度量
我们回顾一下什么是degree
degree是一个节点上的边的个数
现在把degree的概念推广到graphlets上--graphlet degree vector:一个节点touch的graphlets的个数。
graphlets考虑的是连通的非同构子图,非同构指的是不同子图之间的关系,但是我们要考虑子图自身的性质--自同构
自同构可以视为图G和G的同构
最初等的理解:对称
img
这里涉及两个步骤:(1)列举所有size-k连通的子图 (2)数每一个子图类型出现的次数
look at这两个步骤就可以看出来工作量很大
所以基本上可行的模块(motif)规模是比较小的:3--8
首先看第一步:列举
这里主要介绍exact subgraph enumeration(参见Wernicke2006的paper)
ESU的步骤
这张树结构图很明了的介绍了esu的思想
完成了第一步:列举,下面就是第二步:数每个类型子图出现次数
img
在数个数这一个步骤存在一个问题:如何分类---即要把子图分为不同构的类型(同构的图属于一个类型)---用的是McKay的nauty algorihtm,具体参见以下网站
The nauty Traces pageusers.cecs.anu.edu.au
这节课也提到了同构:
图G和图H是同构的,如果存在双射f,使得在G中相邻的节点在H中也是相邻的。
从定义上看检验两个图是否同构核心在于找到这个映射f,但是实际操作上等于要对每两两节点要去判断,计算量是很大的。
这节课的最后一部分:关于roles。
如同在公司里根据每个人的职责和工作性质决定了每个人的角色那么在网络中也需要根据节点的结构表现来决定其角色(role)
img
这里要注意区分role(角色)和group的概念:
举个例子:学生、教师这是role,AI实验室、 Info实验室这是group/community
roles和groups是一种互补的概念
img
更正式的描述
结构等价性(structural equivalence)--两个节点称为结构等价的,如果它们和所有其他节点都有着相同的关系
这是从社会网络中引用过来的一个概念
img
为什么roles重要?下图给了很详细的说明
img
那么怎么去发现网络中的roles?这里介绍RoIX
RoIX是一种无监督学习方式来自动探测网络中节点的结构角色,具备以下优点:
img
根据上图来分析
下图展示了输入和输出
img
那么要重点讲解的就是第二步的递归特征提取和第四步的角色提取