聚类——Newman系列算法

Newman系列算法包括FastNewman、CNM和FastUnfolding,用于高效地在大型网络中寻找社区结构。这些算法以模块度最大化为目标,模块度是评估社区结构强度的指标。FastNewman是基础算法,CNM通过堆数据结构优化,FastUnfolding则在每次迭代中融合所有正的模块度增量。
摘要由CSDN通过智能技术生成


  Newman系列算法本质上是一种贪心的聚类算法,以最优化模块度 Q Q Q为目标进行聚类,在具体实现上有些类似于层次聚类(hierarchical clustering)。该系列算法在处理大型社群网络时具有较高的效率。本文将介绍这个系列中的三种:Fast Newman算法(fast algorithm for community structure in networks),CNM(clauset-newman-moore)算法(Finding community structure in very large networks. ),Fast Unfolding算法(Fast unfolding of communities in large networks)。CNM算法是在Fast Newman算法基础上用堆数据结构来计算并更新模块度的一种改进。

模块度 Q Q Q

  模块度 Q Q Q是一种衡量社群网络结构强度的指标,是社群内部关联性的度量方式之一,其值越接近1,表示网络划分出的社区结构的强度越强,也就是划分质量越好。模块度的基本思想是把划分后的网络与划分后的随机网络进行比较,以度量社团划分的质量。可以公式化的定义为:
模块度 Q = ( 落在同一组内的边的比例 ) − ( 划分后的随机网络中落在同一组的边的比例 ) 模块度Q=(落在同一组内的边的比例)-(划分后的随机网络中落在同一组的边的比例) 模块度Q=(落在同一组内的边的比例)(划分后的随机网络中落在同一组的边的比例)
  这里我们考虑一种简单的网络结构——无向无加权网络。假设网络中有 n n n个节点, m m m条边,则可以用   A n × n \ A^{n \times n}  An×n的邻接矩阵表示这个网络,且满足   A i j = A j i \ A_{ij}= A_{ji}  Aij=Aji;当节点   i \ i  i和节点   j \ j  j之间有边连接时   A i j = 1 \ A_{ij}=1  Aij=1,当节点   i \ i  i和节点   j \ j  j之间没有边连接时   A i j = 0 \ A_{ij}=0  Aij=0
    落在同一组内的边的比例 = ( 落在同一组内边的数量 ) ÷ ( 边的总数 ) \ 落在同一组内的边的比例=(落在同一组内边的数量)\div(边的总数)  落在同一组内的边的比例=(落在同一组内边的数量)÷(边的总数)。落在同一组内边的数量等价于事件(某两个节点间存在一条边,且这条两个节点处于同一社群)的数量。这里我们引入一个变量   δ i j \ \delta_{ij}  δij表示 i i i节点与 j j j节点是否处于同一社群中,当 i i i节点与 j j j节点在同一社群中时   δ i j = 1 \ \delta_{ij}=1  δij=1,不在同一社群中时   δ i j = 0 \ \delta_{ij}=0  δij=0。则结合邻接矩阵 A A A可以得到  落在同一组内边的数量 = 1 2 Σ ( A i j δ i j ) \ 落在同一组内边的数量=\frac{1}{2}\Sigma(A_{ij}\delta_{ij})  落在同一组内边的数量=21Σ(Aijδij)由于在无向图的邻接矩阵中每条边实际会被计算两次,所以需要乘以   1 2 \ \frac{1}{2}  21。进而我们可以得到  落在同一组内的边的比例 = Σ ( A i j δ i j ) 2 m \ 落在同一组内的边的比例=\frac{\Sigma(A_{ij}\delta_{ij})}{2m}  落在同一组内的边的比例=2mΣ(Aijδij)
  为了使度量具有可操作性,这里要求随机网络中的节点和原网络中的节点具有相同的度。由此,可以设想以下场景:将原有的 m m m条边从中间切开,每个节点持有原先边的一半(即半边),我们可以得到   2 m \ 2m  2m条半边,将这些半边随机两两重新连接(不包括自身),允许节点自环、两个节点间存在多条边等特殊情况,则得到的随机网络中每个节点必定具有和原来相同的度。在这个场景下,若节点   i \ i  i原先度为   k i \ k_{i}  ki,则它会有   k i \ k_{i}  ki条半边,它的每一条半边和任意另一条半边连接的概率为   1 2 m − 1 \ \frac{1}{2m-1}  2m11,假设节点 j j j具有   k j \ k_{j}  kj条半边,则节点 i i i的某一条半边和节点 j j j的一条半边相连的概率为   k j 2 m − 1 \ \frac{k_{j}}{2m-1}  2m1kj,节点 i i i和节点 j j j间存在一条边的期望为   k i k j 2 m − 1 \ \frac{k_{i}k_{j}}{2m-1}  2m1kikj,当 m m m很大时,期望可近似为   k i k j 2 m \ \frac{k_{i}k_{j}}{2m}  2mkikj,故我们可以得到 划分后的随机网络中落在同一组的边的比例 = Σ ( k i k j 2 m δ i j ) 2 m 划分后的随机网络中落在同一组的边的比例=\frac{\Sigma(\frac{k_{i}k_{j}}{2m}\delta_{ij})}{2m} 划分后的随机网络中落在同一组的边的比例=2mΣ(2mkikjδij)因此 Q = 1 2 m Σ ( A i j − k i k j 2 m ) δ i j Q=\frac{1}{2m}\Sigma(A_{ij}-\frac{k_{i}k_{j}}{2m})\delta_{ij} Q=2m1Σ(Aij2mkikj)δij
  而社群是由节点组成的,如果一个网络被分为了 k k k个社群,且所有社群都不重叠,则我们可以用一个矩阵   e k × k \ e^{k\times k}  ek×k表示社群划分情况,其中   e v v \ e_{vv}  evv表示社群 v v v内部边的比例   e v w \ e_{vw}  evw表示社群 v v v和社群 j j j之间边的比例,结合上文所述可以表示为 e v w = Σ A i j δ ( v , C i ) δ ( w , C j ) 2 m e_{vw}=\frac{\Sigma A_{ij}\delta(v,C_{i})\delta(w,C_{j})}{2m} evw=2mΣAijδ(v,Ci)δ(w,Cj)进一步我们可以定义   a v \ a_{v}  av表示社群 v v v所有边的比例(包括社群内部和社群之间) a v = 1 2 m Σ i k i δ ( v , C i ) = k v 2 m = Σ w e v w a_{v}=\frac{1}{2m}\Sigma_{i}k_{i}\delta(v,C_{i})=\frac{k_{v}}{2m}=\Sigma_{w} e_{vw} av=2m1Σikiδ(v,Ci)=2mkv=Σwevw注意到 δ i j = δ ( C i , v ) δ ( C j , v ) \delta_{ij}=\delta(C_{i},v)\delta(C_{j},v) δij=δ(Ci,v)δ(Cj,v)
因此模块度也可以表示为 Q = 1 2 m Σ i j A i j δ i j − 1 2 m Σ i j k i k j 2 m δ i j = Σ v ( 1 2 m Σ i j A i j δ ( C i , v ) δ ( C j , v ) − 1 2 m Σ i k i δ ( C i , v ) 1 2 m Σ j k j δ ( C j , v ) ) = Σ v ( e v v − a v 2 ) \begin{aligned} Q&=\frac{1}{2m}\Sigma_{ij} A_{ij}\delta_{ij}-\frac{1}{2m}\Sigma_{ij}\frac{k_{i}k_{j}}{2m}\delta_{ij}\\&=\Sigma_{v}(\frac{1}{2m}\Sigma_{ij}A_{ij}\delta(C_{i},v)\delta(C_{j},v)-\frac{1}{2m}\Sigma_{i}k_{i}\delta(C_{i},v)\frac{1}{2m}\Sigma_{j}k_{j}\delta(C_{j},v))\\ &=\Sigma_{v}(e_{vv}-a_{v}^{2}) \end{aligned}\\ Q=2m1ΣijAijδij2m1Σij2mkikjδij=Σv(2m1ΣijAijδ(Ci,v)δ(Cj,v)2m1Σikiδ(Ci,v)2m1Σjkjδ(Cj,v))=Σv(evvav2)

模块度增量   Δ Q \ \Delta Q  ΔQ

     Δ Q \ \Delta Q  ΔQ表示合并两个社群后对模块度的贡献。对于社群矩阵 e e e,合并社群 v v v和社群 w w w得到新社群 u u u,社群 u u u满足   e u u = e v v + e w w + e v w + e w v \ e_{uu}=e_{vv}+e_{ww}+e_{vw}+e_{wv}  euu=evv+eww+evw+ewv   a u = a v + a w \ a_{u}=a_{v}+a_{w}  au=av+aw,社群 u u u与社群 k k k之间满足   e u k = e v k + e w k \ e_{uk}=e_{vk}+e_{wk}  euk=evk+ewk。根据上文所述可以得到 Δ Q v w = e u u − e v v − e w w + a u 2 − a v 2 − a w 2 = e v w + e w v − 2 a v a w \Delta Q_{vw}=e_{uu}-e_{vv}-e_{ww}+a_u^{2}-a_v^{2}-a_w^{2}=e_{vw}+e_{wv}-2a_{v}a_{w} ΔQvw=euuevveww+au2av2aw2=evw+ewv2avaw

Fast Newman

  Fast Newman算法通过每次选择最大   Δ Q v w \ \Delta Q_{vw}  ΔQvw进行社群合并,达到最优化 Q Q Q的目标。具体流程为

  1. 先将每个节点视为一个独立的社群,初始化 e e e a a a,计算社群与其相邻社群融合的   Δ Q v w \ \Delta Q_{vw}  ΔQvw
  2. 选择 a r g m a x ( Δ Q v w ) argmax(\Delta Q_{vw}) argmax(ΔQvw),融合这两个社群,更新 e e e a a a,重新计算   Δ Q v w \ \Delta Q_{vw}  ΔQvw
  3. 重复步骤2,直到所有节点在同一个社群或者 Q Q Q不再增加

CNM

  CNM算法沿用了Fast Newman算法的思路,在性能上作出了改进。一方面使用堆结构来维护   Δ Q v w \ \Delta Q_{vw}  ΔQvw,另一方面给出了每次社群合并后   Δ Q v w \ \Delta Q_{vw}  ΔQvw的递推关系 Δ Q u k = { Δ Q v k + Δ Q w k , 社群 k 与社群 v 、社群 w 都有连接 Δ Q v k − 2 a w a k , 社群 k 只与社群 v 有连接 Δ Q w k − 2 a v a k , 社群 k 只与社群 w 有连接 0 , 社群 k 与社群 v 、社群 w 均没有连接 \Delta Q_{uk}=\begin {cases} \Delta Q_{vk}+ \Delta Q_{wk},&社群k与社群v、社群w都有连接\\ \Delta Q_{vk}-2a_{w}a_{k}, &社群k只与社群v有连接\\ \Delta Q_{wk}-2a_{v}a_{k}, &社群k只与社群w有连接\\ 0, &社群k与社群v、社群w均没有连接\end{cases} ΔQuk= ΔQvk+ΔQwk,ΔQvk2awak,ΔQwk2avak,0,社群k与社群v、社群w都有连接社群k只与社群v有连接社群k只与社群w有连接社群k与社群v、社群w均没有连接 根据上面提到的   Δ Q \ \Delta Q  ΔQ推导过程,将   Δ Q u k \ \Delta Q_{uk}  ΔQuk展开即可得到该递推关系,这里就不进行详细推导了。

Fast Unfolding

  Fast Unfolding算法与Fast Newman算法过程上非常相似,都是通过对   Δ Q \ \Delta Q  ΔQ贪心求取最优化 Q Q Q;不同之处在于Fast Unfolding算法在每次迭代中将所有为正的   Δ Q \ \Delta Q  ΔQ都进行融合,而Fast Newman算法每次只选择最大   Δ Q \ \Delta Q  ΔQ进行融合。具体流程如下

  1. 先将每个节点视为一个独立的社群,初始化 e e e a a a,计算社群与其相邻社群融合的   Δ Q v w \ \Delta Q_{vw}  ΔQvw
  2. 判断 Δ Q v w \Delta Q_{vw} ΔQvw是否为正,若为正则融合这两个社群,否则不进行融合(计算顺序不影响融合)
  3. 更新 e e e a a a,重新计算   Δ Q v w \ \Delta Q_{vw}  ΔQvw
  4. 重复步骤2和3,直到社群划分不再改变
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值