社区发现算法——Louvain
社区结构是社交网络的一个重要特征,通常定义为具有紧密联系的一组节点。社区内的节点连接紧密,即内聚性强;社区之间连接较为松散,即耦合度弱。社区发现算法从原理上可分为分离和聚合两类。
Louvain算法:聚合法,是使用优化模块度的方法以提高社区划分效率的方法。 模块度Q:社区内节点的连边数与随机情况下的边数之差。
Louvain算法流程: 1.将图中的每个节点看成一个独立的社区,社区的数目与节点的数目相同。 2.对于每个节点i,依次尝试把i分配到其每个邻居节点所在的社区,计算分配前与分配后的模块度增益(∆Q ),并记录∆Q最大的邻居节点;如果max∆Q>0,则把节点i分配到∆Q最大的邻居节点所在的社区,否则保持不变。 3.重复2,直到所有节点的所属社区不再变化。 4.对图进行压缩,将所有在同一个社区的节点压缩成一个新节点,原社区内节点之间的边的权重转化为新节点的权重,原社区间的边权重重转化为新节点间的边权重。如图:

Q的计算公式:

模块增益度∆Q的计算公式:
