大量真实网络都有一个规律,即这些网络都是由一些 building block 构成,类似 Kronecker 图有大量的重复结构。而我们需要一种度量方式来衡量某个结构在图中的显著性。因此需要引入 motif 和 graphlet 这两个概念。
这一部分我还有一些概念没完全理解,所以在最后记录了一些问题等待以后回来解决。也欢迎有理解了的朋友帮忙解惑。
Network Motifs
这里实在无法确定 motif 的准确翻译是什么,干脆不翻译了。但它是什么东西还是得搞清楚的:在图中大量重复的模式被称为 motif。这个定义包含了三个要点
- 大量,就是多,比随机图多
- 重复,还是多
- 模式,即规模小的导出图1
我们为什么需要这个 motif ?首先,既然这个概念的定义表明它在网络中大量存在,说明这个 motif 揭示了这个网络的一些普遍规律,比如食物链中的互利共生关系或竞争关系。同时我们可以依据这个规律预测一些我们可能还没有发现的网络中隐含的关系。
知道了 motif 的好处之后就需要找到一种方法来衡量它在网络中的显著性,也就是是否大量出现。最直接的方式就是挨个数,即 N i r e a l N_i^{real} Nireal。那么这样就又遇到了需要参照的情况了,换句话说就是“我怎么知道 N i r e a l N_i^{real} Nireal 算不算多?”。
Configuration Model
既然需要参照,那就自己动手生成一个。但这个生成模型就不能像 ER 随机图模型一样简单的按概率取边了。因为我们想要了解一个 motif 在网络中是否大量重复出现,那么需要和真实网络有相似的度分布和聚类系数。因此我们需要生成一个各节点和真实网络有相同度的随机图。这样的模型被视为这个网络的零模型(null model)。
怎么做呢?首先我们将每个度为 k i k_i ki 的点拓展为 k i k_i ki 个迷你点一组的结构,然后随机连接这些迷你点。最后合并同一组的迷你点就能得到满足节点度条件的图。
这里的确会出现自环和重边的问题,但需要清楚的是随着图的规模增大,节点数增加,相比于节点个数,每个节点的度(迷你点个数)是可以忽略不计的。也就是说这种自环和重边的情况很少发生。即使发生了,忽略就好,虽然会使得某些点的度不满足条件但不影响(反正都是随机图,差这个别几个点无所谓)。
还有一种方法,就是从给定的图开始,随机选择两条边然后将它们的端点交换。例如, A → B , C → D A\rightarrow B,C\rightarrow D A→B,C→D,交换后为 A → D , C → B A\rightarrow D,C\rightarrow B A→D,C→B。而交换次数大致是 Q × ∣ E ∣ Q\times|E| Q×∣E∣,其中 Q Q Q 需要取一些比较大的数,比如 100 100 100。直观理解就是让每条边平均交换 Q Q