Community
之前讲到了网络中节点扮演不同角色,而角色这个概念和社区互补,那么接下来就讨论下社区这个概念。
以找工作为例,曾经学者 Granovetter 调查过人们的工作是由谁介绍的,结果很意外。大部分人的工作是由“熟人”,或者说关系并不是很密切的人介绍的。然后 Granovetter 分析后提出了他的解释:这种“熟人”可能涉及整个社交网络很广泛的区域 (普遍来说通过 6.6 6.6 6.6 个人就能认识全世界任何人)。这样一来他们很可能覆盖了很多行业,其中一个就是你的专业。然后将这个解释整理一下就得到了如下两个方面的结论:
- 结构上连接紧密的边的社会性更强;跨度大的边连接了网络不同的两个或多个领域反而社会性不稳定
- 从信息传播的角度来看,跨度大的边能传递不同领域的信息,在找工作方面更有利;而结构上连接密的边过于冗余因此无法提供新的信息
Granovetter 的这个理论在后来电话网络中得到了印证,即连接更强的边一般都有更频繁的电话联络。这里提到一个 edge overlap 需要记录一下,它衡量了两个点间连接的紧密程度。当某条边是 local bridge 时,重叠率为 0 0 0。
O i j = ∣ ( N ( i ) ∩ N ( j ) ) \ { i , j } ∣ ∣ ( N ( i ) ∪ N ( j ) ) \ { i , j } ∣ O_{ij}=\frac{|(N(i)\cap N(j))\text{\textbackslash}\{i,j\}|}{|(N(i)\cup N(j))\text{\textbackslash}\{i,j\}|} Oij=∣(N(i)∪N(j))\{ i,j}∣∣(N(i)∩N(j))\{ i,j}∣
那如果我们按重叠率从小到大来移除边,那整个网络会很快变成不相连的几个部分,也就是说网络的最大相连的部分大小会很快缩小。如此一来我们就可以断定这个网络里存在不同的社区。那么给出社区的定义:包含大量内部连接和少量外部连接的节点集合。一个比较经典的社团网络是 Zachary 的 Karate club network
给出具有明显社区的网络的邻接矩阵,按一定顺序排列节点可以明显看出有分块的趋势。
按套路来说,这时候应该要提出一个用来衡量网络是否具有典型的社区的标准了。那么他来了:modularity Q Q Q。给定网络中的一些点作为一个划分 s ∈ S s\in S s∈S
Q ∝ ∑ s ∈ S [ ( # e d g e s w i t h i n g r o u p s ) − ( e x p e c t e d # e d g e s w i t h i n g r o u p s ) ] Q\propto\sum_{s\in S}[(\#\ edges\ within\ group\ s)-(expected \#\ edges\ within\ group\ s)] Q∝s∈S∑[(# edges within group s)−(expected# edges within group s)]
这个式子的结果衡量的是:到底图里的边或边的权重比我们预想的多多少?如果多很多那说明存在一个社区,少很多说明是 bridge。那这里的 expected 是怎么来的呢?再一次请出零模型
Configuration Model
现在我们的目标是给定 n n n 个节点 m m m 条边,然后生成一个具有相同度分布的随机网络。不同于之前我们构建的零模型,这里我们只需要知道节点间边的期望,或者对于无向图来说就是有边的概率。这里可以通过每个节点的度来计算节点间边的期望 p ( i , j ) = k i k j 2 m p(i,j)=k_i\frac{k_j}{2m} p(i,j)=ki2mkj
那么这个图里所有边的期望为
E e d g e = 1 2 ∑ i ∈ N ∑ j ∈ N k i k j 2 m = 1 2 1 2 m ∑ i ∈ N k i ( ∑ j ∈ N k j ) = m \begin{aligned}E_{edge}&=\frac12\sum_{i\in N}\sum_{j\in N}\frac{k_ik_j}{2m} \\ &=\frac12\frac1{2m}\sum_{i\in N}k_i(\sum_{j\in N}k_j) \\ &=m\end{aligned} Eedge=21i∈N∑j∈N∑</