GNN-CS224W:13 Community Structure in Networks

本文探讨了社交网络中节点间连接的强度和结构,以及它们如何影响社区检测。边的强度表示节点间的联系频率,而边的结构揭示了边是否位于同一集群内。边重叠度Oij衡量了节点共同邻居的比例,高值表示可能在同一社区,反之可能是局部桥梁。信息流动常通过弱连接进行,因为不同集群间的交流能带来新信息。社区检测通过模块度Q评估,其衡量集群内部联系的紧密程度。配置模型用于生成随机图,并计算模块度。 Louvain算法是一种高效的社区检测方法,提供层次化的社区结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这一章没完全看完

connection between edge strength and edge structure

edge strength

在social network中可以用两个人之间联系的频率来得到,联系的频率越高,则strength越大,否则越小

edge structure

表示这个edge是处于一个cluster内部,还是处于不同cluster之间

edge overlap

用edge overlap来表示edge structure

Oij=∣(N(i)∩N(j))−{i,j}∣∣(N(i)∪N(j))−{i,j}∣O_{ij}=\frac{| (N(i) \cap N(j)) - \{ i, j \} |}{| (N(i) \cup N(j)) - \{ i, j \} |}Oij=(N(i)N(j)){i,j}(N(i)N(j)){i,j}

N(i)N(i)N(i)表示node i 的 neighbor 集合,分母表示两个node所有的neighbor,分子表示两个node的共同neighbor,所以OijO_{ij}Oij表示node i 和 node j 的所有neighbor中共同neighbor的比例,

OijO_{ij}Oij为0到1的值

OijO_{ij}Oij越大,共同neighbor越多,这个edge更可能处在一个network的cluster里

Oij=0O_{ij}=0Oij=0时,the edge is a local bridge

connection

  1. stronger edge strength 和 OijO_{ij}Oij 大 共同发生
    同一个cluster内部的人之间的联系次数更多
  2. weaker edge strength 和 OijO_{ij}Oij 小 共同发生
    不同cluster之间的人联系次数相对更少

examples

  1. 信息流动更多是通过weak edge来进行的
    因为一个cluster内部的信息同质化非常严重,所以cluster之间的交流会交换不同的信息,找工作的信息更多的是从熟人而不是亲密朋友之间得到的
  2. 如下图为一个mobile call graph,点表示一个手机号,边表示不同手机号之间的联系次数,联系频繁的(红色)边都处于cluster内部,联系少的(黄色)边处于cluster之间
    在这里插入图片描述

community detection

Community指的是network里的cluster,例如social network里联系紧密的小团体

Modularity QQQ

用来衡量已经被分开的groups of nodes 是否被切分的合理,可以作为community detection的优化目标。

Q∝∑s∈S[(# edges within group s)−(expected # edges within group s)]Q \propto \sum_{s \in S}[(\#\ edges\ within\ group\ s) - (expected\ \#\ edges\ within\ group\ s)]QsS[(# edges within group s)(expected # edges within group s)]

SSS为被切分的各个集合

(# edges within group s)(\#\ edges\ within\ group\ s)(# edges within group s)表示实际的集合sss里的edge数量

(expected # edges within group s)(expected\ \#\ edges\ within\ group\ s)(expected # edges within group s)表示类似的random graph里的edge数量的期望

(# edges within group s)−(expected # edges within group s)(\#\ edges\ within\ group\ s) - (expected\ \#\ edges\ within\ group\ s)(# edges within group s)(expected # edges within group s) 表示实际的edge数量比期望的edge数量多多少,如果大于0,则比期望的多,则community内部联系比较紧密;如果小于0,则比期望的少,则community内部联系不太紧密

Modularity QQQ 整体上衡量的是各个小community内部是否联系很紧密

Configuration Model

就是之前的subgrpah mining里的生成random graph方法

生成random graph时是整个graph一起生成,计算Modularity时是按局部community来计算

给定了graph里要包括mmm条边,mmm条边对应了2m2m2m个edge的endpoint,每个node的degree是给定的,degree代表了node作为endpoint的次数。

生成edge的方法为:每次从2m2m2m个endpoint中随机挑选两个,建立一条edge

edge可以从一个node出发并指向自己;两个node之间也可以有多条edge

the expected num of edge between node i and node j is

ki⋅kj2m=kikj2mk_i \cdot \frac{k_j}{2m}=\frac{k_i k_j}{2m}ki2mkj=2mkikj

kik_ikikjk_jkj为node i and node j 的degree,mmm为总的node数量

node i的degree为kik_iki,表示要随机挑选kik_iki个 endpoint 和 node iii 构成edge,

总endpoint数量为2m2m2m,node j 作为endpoint的次数为kjk_jkj,则每次挑选到node j 的概率为kj2m\frac{k_j}{2m}2mkj

node i 要挑选kik_iki次,则node i and node j 之间edge数量的期望为kikj2m\frac{k_i k_j}{2m}2mkikj

Configuration Model里不存在真实的random的graph,而是用node之间边的期望来代表这个graph的平均情况

Modularity QQQ

Q(G,S)=12m∑s∈S∑i∈S∑j∈S(Aij−kikj2m)Q(G, S)=\frac{1}{2m} \sum_{s \in S} \sum_{i \in S} \sum_{j \in S}(A_{ij} - \frac{k_i k_j}{2m})Q(G,S)=2m1sSiSjS(Aij2mkikj)

GGG为给定graph,SSS为给定的node partition, AijA_{ij}Aij为adjacency matrix 中的值

AijA_{ij}Aij为实际的node i 和node j 之间的边的数量,kikj2m\frac{k_i k_j}{2m}2mkikj为期望边的数量

在给定的graph的各个node community中,node之间的edge数量相比期望越大,则Q(G,S)Q(G, S)Q(G,S)越大,否则越小

衡量的是各个小的node community中的紧密程度

QQQ的取值范围为[−1,1][-1,1][1,1],这是因为有12m\frac{1}{2m}2m1做了normalize

QQQ greater than 0.3-0.7 means significant community structure

如果graph的edge有权重,Modularity也可以修改成对应的版本,修改方法为AijA_{ij}Aij改成边的权重,2m2m2m改成graph里所有edge的权重的和

Louvain Algorithm

一种复杂度为O(nlog⁡n)O(n \log n)O(nlogn)的community detection 算法,n为node num

特性
  1. Provides hierarchical communities
  2. Fast
  3. Rapid convergence
  4. High modularity output

Widely utilized to study large networks

phase 1

only allow local changes to node-communities memberships

先把每个node初始化为独立的community,依次遍历各个node,每个node执行以下操作:

  1. 比较node的每个neighbor,计算如果node添加到neighbor所在的community 的Modularity Delta

    问题: 依次遍历node时,每个node都必须添加到一个community里吗?

  2. 把node添加到Modularity Delta最大的那个neighbor所在的community
    这里的Modularity Delta必须是正的,即把node移动到另一个community后Modularity要增加

一遍又一遍的遍历所有node,直到移动任何一个node都不能再增加Modularity

遍历的对象始终是node,有可能node是一个独立的community然后合并到了另一个community,也有可能从一个community中移除然后添加到了另一个community

这是一种贪心算法

遍历node的顺序不同,最后形成的community也会不同

但是不同的顺序对整体的Modularity影响不大

Modularity Gain

node i 从community D移动到community C时的Modularity Gain:
ΔQ(D→i→C)=ΔQ(D→i)+ΔQ(i→C)\Delta Q(D \rightarrow i \rightarrow C)=\Delta Q(D \rightarrow i) + \Delta Q(i \rightarrow C)ΔQ(DiC)=ΔQ(Di)+ΔQ(iC)

前后两种partition的Modularity 中只有community D和C是不同的,所以只要计算这两个community的Modularity即可

ΔQ(D→i)\Delta Q(D \rightarrow i)ΔQ(Di)为原来包括iii的community和后来没有iii的community的Modularity的差

ΔQ(i→C)\Delta Q(i \rightarrow C)ΔQ(iC)为原来不包括iii的community和后来包括iii的community的Modularity的差

在这里插入图片描述
在这里插入图片描述

Q(C)=12m∑i,j∈C[Aij−kikj2m]=∑i,j∈CAij2m−(∑i∈Cki)(∑j∈Ckj)(2m)2=∑in2m−(∑tot2m)2Q(C)=\frac{1}{2m}\sum\limits_{i,j \in C} [A_{ij} - \frac{k_i k_j}{2m}] \\=\frac{ \sum_{i,j \in C} A_{ij}}{2m} - \frac{ (\sum_{i \in C} k_i) (\sum_{j \in C} k_j)}{(2m)^2} \\=\frac{ \sum_{in} }{2m} - ( \frac{ \sum_{tot} }{2m} )^2Q(C)=2m1i,jC[Aij2mkikj]=2mi,jCAij(2m)2(iCki)(jCkj)=2min(2mtot)2

∑in\sum_{in}in∑tot\sum_{tot}tot

问题:算一个具体node时为什么要算community所有node的所有edge

问题
  1. phase 1 时只有node被考虑吗?如果已经没有node了会怎么样?如果neighbor已经属于community了,那当前node是要添加到那个community里吗?
  2. i添加到C里为什么要让C中每个node的边都加进来?
  3. 计算community C时的m是什么?是其中所有node的degree的和还是其中所有edge的数量?
  4. phase 1以后会把所有community抽象成一个node来处理吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值