社区发现算法综述
Introduction
社区发现是复杂网络问题的一个重要研究领域;
background
notation
· 复杂网络的表达式: G(V,E) , V 是node的集合,E是edges的集合;
·
A
i
j
=
1
A_{ij}=1
Aij=1表示node i 和node j之间有link; otherwise 0;
· weight w
·
K
i
K_i
Ki表示node i 的degree, 也就是和i有连接的所有边的和;
K
i
=
∑
j
=
1
N
A
i
j
K_i = \sum_{j=1}^N A_{ij}
Ki=∑j=1NAij;
· 有向图中,
k
i
=
k
i
i
n
+
k
i
o
u
t
k_i = k^{in}_i + k^{out}_i
ki=kiin+kiout; 无向图中,
k
i
=
k
i
i
n
=
k
i
o
u
t
k_i = k^{in}_i = k^{out}_i
ki=kiin=kiout
社区检测
社区检测算法的一个关键作用在于可用于从网络中提取有用的信息。 社区检测面临的最大挑战是社区结构没有普遍定义。人们提出了大量的技术来在相当快的时间内找到最优的社区, 这些技术大多是基于目标函数的优化。 到目前为止,模块度优化是其中最广泛使用的技术之一。 然而,模块度优化 是一个NP-hard的问题。
modularity Q
模块度表达的是社区外的连接相较于社区内部的连接的紧密度;最原始的定义:
综述中列举了六种模块度计算公式的变种。分别应用与 不同的网络类型(有向无向,有权重无权重,重叠不重叠等):
社区发现算法分类
(待补充)
- 传统社区发现技术
1)图分割
2)Hierarchical clustering 分层聚类
3)Partitional clustering 划分聚类
4)Spectral clustering 谱聚类
5)Divisive algorithms 分裂算法 - 基于模块度的社区发现技术
1)贪心算法
2)Simulated Annealing
3)极值优化
4)Spectral Optimisation 谱优化
5)Evolutionary algorithms 进化算法 - Overlapping community重叠社区检测技术
- 动态社区检测技术