COMP5313 Lecture 04 Summary - Community Detection
Lecture 04 — Community Detection
主题
这节研究如何只根据图结构把网络切成 communities。
1. 什么是 community
community 是一组节点,使得: - 组内连接稠密 - 组间连接稀疏
2. 为什么要找 community
- 识别朋友圈/兴趣群体
- 识别组织内部模块
- 识别蛋白质/疾病相关模块
- 帮助理解大图的宏观结构
3. 两大类思路
Divisive
从大图开始,删掉“跨社区”的边,把图拆开。
Agglomerative
从小块开始,逐步合并相似节点/子群。
4. Girvan-Newman
这是本课程里最重要的方法之一。
核心思想
跨社区边通常具有较高的 edge betweenness,因为很多跨群体最短路径会经过它们。
算法流程
- 计算所有边的 edge betweenness
- 删除 betweenness 最大的边
- 重新计算
- 重复
- 形成层次化划分
5. Modularity
modularity 用来评估一个划分是不是“像社区”。
直觉
好的 community partition 应满足: - 社区内部边数比随机期望更多 - 社区之间边数比随机期望更少
含义
modularity 越高,说明划分越符合“社群结构”。
6. 层次聚类结果
community detection 常给出 hierarchical structure: - 顶层:整个图一个 community - 中间层:拆成若干较大群体 - 底层:再细分成小群体
7. 注意点
- 社区不一定唯一
- 不同算法可能给出不同结果
- 评价 community detection 也不是完全容易的问题
takeaway
Community detection 的关键是:找到那些“内部密、外部疏”的群体,而 Girvan-Newman 的核心武器是 edge betweenness。