社区发现
基本概念
社区
现实生活中的图往往会长成这样:社区(community) 内部边相对稠密,而向外部的边比较稀疏。

模块度
使用 模块度(Modularity Q) 指标衡量不同社区划分的效果:
- 表示总边数,即 。
- 表示节点 相邻边的权重和,即带权的度数。
- 表示节点 被分配到的社区, 函数判断两个数是否相同;即节点 和节点 被分配到同一社区时 为 ,否则为 。
我们界定模块度大于 0.3-0.7 中的一个阈值的社区为 有效社区结构(significant community structure)。
社区发现
Louvain
模块度增益(modularity gain) 的计算方法:。
Louvain 算法的过程如下:
- Phase 1: (Modularity is optimized by allowing only local changes to node-communities memberships)
- Step 1. 将每个节点单独划分为一个社区
- Step 2. 对于每个节点,计算将其放到另一社区的模块度增益,如果有 的就选择其中最大的放过去。
- Step 3. 一直循环第二步直到划分不发生变化。
- Phase 2: (The identified communities are aggregated into super-nodes to build a new network)
- 将划分到一个社区的点合并成一个 super-node,从而得到一个新的网络。
这样一个完整的过程称为一个 PASS,有必要的话可以执行多个 PASS。

BigCLAM
BigCLAM 算法可以解决社区之间有重叠的情况。
TBD
参考资料
- 13-communities.pdf (stanford.edu)
- CS224W 图机器学习笔记 13-Community Detection_network comunities-CSDN 博客
- cs224w(图机器学习)2021 冬季课程学习笔记 16 Community Detection in Networks_community detection and classification in social n-CSDN 博客
- 社区发现算法——Louvain 算法_louvain 算法-CSDN 博客
- (CS224W) 13.Community Detection in Networks - AAA (All About AI) (seunghan96.github.io)
- CS224W Lecture 12 & 13 Subgraph Mining and Community Detection | Zepeng Zhang’s Blog
- 社区发现算法——BigCLAM 算法-CSDN 博客

Comments