COMP5313 Week 04 社区检测讲课总结

COMP5313 Week 04 讲课总结:Community Detection

1. 本讲主题

本讲讨论如何在图中发现社区。核心问题是:

哪些节点内部连接密集,对外连接稀疏?

老师强调 community 没有唯一严格定义,所以算法和评价指标很重要。

2. 社区的直觉定义

一个社区通常满足:

  • 社区内部边多。
  • 社区之间边少。
  • 社区结构能解释网络中的群体或功能模块。

例子:

  • 社交网络中的朋友圈。
  • 合作网络中的研究领域。
  • Web graph 中相互引用的一组页面。

3. 两类方法

Divisive 方法

自顶向下:

  1. 从整张图开始。
  2. 找到连接不同社区的关键边。
  3. 删除这些边。
  4. 图逐渐分裂成社区。

Girvan-Newman 是典型 divisive 方法。

Agglomerative 方法

自底向上:

  1. 每个节点先是一个社区。
  2. 按相似度逐步合并社区。
  3. 最后形成层次结构。

两类方法通常都会产生 dendrogram,可以在不同层切割得到不同社区数。

4. Edge Betweenness

边中介性衡量一条边出现在多少最短路径上:

[ b(e)=_{st} ]

  • \(\sigma_{st}\)\(s\)\(t\) 的最短路径数量。
  • \(\sigma_{st}(e)\):这些最短路径中经过边 \(e\) 的数量。

直觉:社区之间的桥接边会出现在很多跨社区最短路径上,所以 edge betweenness 高。

5. Edge Betweenness 手算流程

老师讲的 BFS 计算法很重要:

  1. 选一个起点 \(s\) 做 BFS,得到层次结构。
  2. 记录从 \(s\) 到每个节点的最短路径数。
  3. 从底层往上回传 flow。
  4. 每个节点自带 1 单位流量,下层传来的流量按最短路径数量比例分配给上一层边。
  5. 对每个起点重复。
  6. 无向图最后除以 2,因为每对节点被算了两次。

这是计算题重点。

6. Girvan-Newman 算法

算法流程:

  1. 计算所有边的 edge betweenness。
  2. 删除 betweenness 最大的边。
  3. 重新计算所有边的 betweenness。
  4. 如果图分裂成更多 connected components,就记录当前划分。
  5. 重复直到边被删完。

老师强调:每删一次边后必须重新计算 betweenness,因为最短路径结构会变化。

复杂度:

  • 一次所有边 betweenness 计算约为 \(O(nm)\)
  • 完整 Girvan-Newman 约为 \(O(nm^2)\)
  • 所以它适合理解和小图手算,不适合超大图。

7. Modularity 模块度

Modularity 衡量一个划分比随机图更像社区结构的程度:

[ Q=_{sS}]

其中:

  • \(m_s\):社区 \(s\) 内部边数。
  • \(D_s\):社区 \(s\) 内所有节点度数之和。
  • \(m\):全图边数。

直觉:

  • 第一项是社区内部真实边比例。
  • 第二项是随机情况下期望内部边比例。
  • \(Q\) 越大,社区划分越好。

常见性质:

  • 所有节点放在一个社区,\(Q=0\)
  • 每个节点单独成社区,通常 \(Q<0\)
  • \(Q\) 范围大致在 \([-1,1]\),实际越大越好。

8. Louvain 算法

老师把 Louvain 作为常用的 modularity 优化方法介绍。

核心思想:

  • 直接贪心优化 modularity。
  • 先局部移动节点提高 \(Q\)
  • 再把社区压缩成 supernodes,重复优化。

重点知道它是 scalable heuristic,不需要掌握完整实现细节。

9. 其他方法

老师提到但不作为主要计算重点:

  • Agglomerative clustering:基于相似度合并。
  • Clique percolation:用相邻 clique 找重叠社区。

需要知道它们是社区发现思路,不需要像 Girvan-Newman 那样手算。

10. 考点重点

  • 会解释社区:内部密集、外部稀疏。
  • 会区分 divisive 和 agglomerative。
  • 必会 edge betweenness 的直觉和手算 BFS flow 方法。
  • 必会 Girvan-Newman 流程,特别是每删边后重新计算。
  • 会用 modularity 公式计算 \(Q\)
  • 知道 Louvain 是贪心最大化 modularity 的 scalable 方法。
  • 知道 Girvan-Newman 复杂度高,不适合大图。