cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks

诸神缄默不语-个人CSDN博文目录
cs224w(图机器学习)2021冬季课程学习笔记集合

VX号“PolarisRisingWar”可直接搜索添加作者好友讨论。

更新日志:
2021.11.16 删除PPT链接,优化公式排版

文章目录

  • 1. Community Detection in Networks
  • 2. Network Communites
  • 3. Louvain Algorithm
  • 4. Detecting Overlapping Communities: BigCLAM

YouTube 视频观看地址1 视频观看地址2 视频观看地址3 视频观看地址4


本章主要内容
本章首先介绍了网络中社区community(或cluster / group)的概念,以及从社会学角度来证明了网络中社区结构的存在性。
接下来介绍了modularity概念衡量community识别效果。
然后介绍了Louvain算法1识别网络中的community。
对于overlapping communiteis,本章介绍了BigCLAM2 方法来进行识别。


1. Community Detection in Networks

  1. 图中的社区识别任务就是对节点进行聚类
  2. networks & communities
    网络会长成图中这样:由多个内部紧密相连、互相只有很少的边连接的community组成。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第1张图片
  3. 从社会学角度理解这一结构:
    在社交网络中,用户是被嵌入的节点,信息通过链接(长链接或短链接流动)。
    以工作信息为例,Mark Granovetter 在其60年代的博士论文3 中提出,人们通过人际交往来获知信息,但这些交际往往在熟人(长链接)而非密友(短链接)之间进行,也就是真找到工作的信息往往来自不太亲密的熟人。这与我们所知的常识相悖,因为我们可能以为好友之间会更容易互相帮助。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第2张图片
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第3张图片
    Granovetter认为友谊(链接)有两种角度:
    一是structural视角,友谊横跨网络中的不同部分。
    二是interpersonal视角,两人之间的友谊是强或弱的。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第4张图片
    Granovetter在一条边的social和structural视角之间找到了联系:
    1. structure:structurally/well embeded / tightly-connected 的边也socially strong,长距离的、横跨社交网络不同部分的边则socially weak。
      也就是community内部、紧凑的短边更strong,community之间、稀疏的长边更weak。
    2. information:长距离边可以使人获取网络中不同部分的信息,从而得到新工作。structurally embedded边在信息获取方面则是冗余的。
      也就是说,你跟好友之间可能本来就有相近的信息源,而靠外面的熟人才可能获得更多新信息。
      cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第5张图片
  4. triadic closure
    triadic:三元; 三色系; 三色; 三重; 三合一;
    community (tightly-connected cluster of nodes) 形成原因:如果两个节点拥有相同的邻居,那么它们之间也很可能有边。(如果网络中两个人拥有同一个朋友,那么它们也很可能成为朋友)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第6张图片
    triadic closure = high clustering coefficient4
    triadic closure产生原因:如果B和C拥有一个共同好友A,那么B更可能遇见C(因为他们都要和A见面),B和C会更信任彼此,A也有动机带B和C见面(因为要分别维持两段关系比较难),从而B和C也更容易成为好友。
    Bearman和Moody的实证研究5 证明,clustering coefficient低的青少年女性更容易具有自杀倾向。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第7张图片
  5. 多年来Granovetter的理论一直没有得到验证,但是我们现在有了大规模的真实交流数据(如email,短信,电话,Facebook等),从而可以衡量真实数据中的edge strength。

    举例:数据集Onnela et al. 20076
    20%欧盟国家人口的电话网络,以打电话的数量作为edge weight
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第8张图片
  6. edge overlap
    两个节点 i i i j j j 之间的edge overlap,是除本身节点之外,两个节点共同邻居占总邻居的比例:
    O i j = ∣ ( N ( i ) ∩ N ( j ) ) − { i , j } ∣ ∣ ( N ( i ) ∪ N ( j ) ) − { i , j } ∣ O_{ij}=\frac{|\big(N(i)\cap N(j)\big)-\{i,j\}|}{|\big(N(i)\cup N(j)\big)-\{i,j\}|} Oij=(N(i)N(j)){i,j}(N(i)N(j)){i,j}
    overlap=0 时这条边是local bridge

    当两个节点well-embeded或structurally strong时,overlap会较高。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第9张图片
    图中左上角overlap:0/6
    图中右上角overlap:2/6
    图中左下角overlap:4/6
    图中右下角overlap:6/6
  7. 在电话网络6 中,edge strength(电话数)和edge overlap之间具有正相关性:图中蓝色是真实数据,红色是重新排列edge strength之后的数据(对照组):
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第10张图片
    在真实图中,更embeded(密集)的部分edge strength也更高(红):
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第11张图片
    相比之下,strength被随机shuffle之后的结果就没有这种特性:
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第12张图片
    从strength更低的边开始去除,能更快disconnect网络(相当于把community之间的边去掉):
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第13张图片
    从overlap更低的边开始,disconnect更快:
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第14张图片
  8. 从而,我们得到网络的概念图:由structurally embeded的很多部分组成,其内部链接更强,其之间链接更弱:
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第15张图片

2. Network Communites

  1. network communites就是这些部分(也叫cluster,group,module):一系列节点,其内部有很多链接,与网络其他部分的外部链接很少cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第16张图片
  2. 我们的目标就是给定一个网络,由算法自动找到网络中的communities(densely connected groups of nodes)cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第17张图片
  3. 以Zachary’s Karate club network来说,通过社交关系创造的图就可以正确预判出成员冲突后会选择哪一边7cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第18张图片
  4. 在付费搜索领域中,也可以通过社区识别来发现微众市场:举例来说,节点是advertiser和query/keyword,边是advertiser在该关键词上做广告。在赌博关键词中我们可以专门找到sporting betting这一小社区(微众市场):cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第19张图片
  5. NCAA Football Network
    节点是球队,边是一起打过比赛。通过社区识别算法也可以以较高的准确度将球队划分到不同的会议中:
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第20张图片
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第21张图片
  6. 定义modularity8 Q Q Q 衡量网络的一个社区划分partitioning(将节点划分到不同社区)的好坏程度:

    已知一个划分,网络被划分到disjoint groups s ∈ S \mathbf{s}\in\mathbf{S} sS 中:
    Q ∝ ∑ s ∈ S [ ( # edges within group  s ) − ( expected # edges within group  s ) ] Q\propto\sum_{s\in S}\big[(\#\text{edges within group}\ s)- \\(\text{expected \# edges within group}\ s)\big] QsS[(#edges within group s)(expected # edges within group s)]
    其中expected # edges within group s需要一个null model
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第22张图片
  7. null model: configuration model9
    通过configuration model生成的 G ′ \mathbf{G}' G 是个multigraph(即存在重边,即节点对间可能存在多个边)。
    真实图共 n n n 个节点, m m m 条边。在 G ′ \mathbf{G}' G 中,节点 i i i(度数为 k i k_i ki)和节点 j j j(度数为 k j k_j kj)之间的期望边数为: k i ⋅ k j 2 m = k i k j 2 m k_i\cdot\dfrac{k_j}{2m}=\dfrac{k_ik_j}{2m} ki2mkj=2mkikj
    (一共有 2 m 2m 2m 个有向边,所以一共有 2 m 2m 2m 个节点上的spoke。相当于对节点 i i i k i k_i ki 个spoke每次做随机选择,每次选到 j j j 上的spoke的概率为 k j 2 m \dfrac{k_j}{2m} 2mkj
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第23张图片
    G ′ \mathbf{G}' G 中的理想边数为:
    = 1 2 ∑ i ∈ N ∑ j ∈ N k i k j 2 m = 1 2 ⋅ 1 2 m ∑ i ∈ N k i ( ∑ j ∈ N k j ) = 1 4 m 2 m ⋅ 2 m = m \begin{aligned} & =\frac{1}{2}\sum_{i\in N}\sum_{j\in N}\frac{k_ik_j}{2m} \\ & =\frac{1}{2}\cdot\frac{1}{2m}\sum_{i\in N}k_i(\sum_{j\in N}k_j) \\ & =\frac{1}{4m}2m\cdot 2m \\ & =m \end{aligned} =21iNjN2mkikj=212m1iNki(jNkj)=4m12m2m=m
    所以在null model中,真实图中的度数分布和总边数都得到了保留。
    (注意:这一模型可应用于有权和无权网络。对有权网络就是用有权度数(边权求和))
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第24张图片
  8. 所以modularity Q ( G , S ) = 1 2 m ∑ s ∈ S ∑ i ∈ s ∑ j ∈ s ( A i j − k i k j 2 m ) Q(\mathbf{G},S)=\dfrac{1}{2m}\sum_{s\in S}\sum_{i\in s}\sum_{j\in s}(A_{ij}-\dfrac{k_ik_j}{2m}) Q(G,S)=2m1sSisjs(Aij2mkikj)
    其中 1 2 m \dfrac{1}{2m} 2m1 是归一化常数,用于使 − 1 ≤ Q ≤ 1 -1\leq Q\leq 1 1Q1
    ( A i j = 1 if  i → j , 0 otherwise ) \begin{pmatrix} A_{ij}= &1 &\text{if}\ i\rightarrow j, \\ &0 &\text{otherwise} \end{pmatrix} (Aij=10if ij,otherwise)
    (如果 G G G 有权, A i j A_{ij} Aij 就是边权)

    如果组内边数超过期望值,modularity就为正。当 q q q 大于0.3-0.7时意味着这是个显著的社区结构。
    (注意modularity概念同时可应用于有权和无权的网络)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第25张图片
  9. modularity也可以写作:
    Q = 1 2 m ∑ i j [ A i j − k i k j 2 m ] δ ( c i , c j ) Q=\frac{1}{2m}\sum_{ij}\Big[A_{ij}-\frac{k_ik_j}{2m}\Big]\delta(c_i,c_j) Q=2m1ij[Aij2mkikj]δ(ci,cj)
    (其中 A i j A_{ij} Aij 是节点 i i i j j j 之间的边权, k i k_i ki k j k_j kj 分别是节点 i i i j j j 入度, 2 m 2m 2m 是图中边权总和, c i c_i ci c j c_j cj 是节点所属社区, δ ( c i , c j ) \delta(c_i,c_j) δ(ci,cj) c i = c j c_i=c_j ci=cj 时为1、其他时为0)
  10. 我们可以通过最大化modularity来识别网络中的社区。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第26张图片

3. Louvain Algorithm

  1. Louvain Algorithm
    是用于社区发现的贪心算法, O ( n log ⁡ n ) O(n\log{n}) O(nlogn) 运行时间。
    支持带权图和hierarchical社区(就可以形成如图所示的树状图dendrogram)。
    广泛应用于研究大型网络,快,迅速收敛,输出的modularity高(也就意味着识别出的社区更好)。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第27张图片
  2. Louvain算法每一步分成两个阶段:
    第一阶段:仅通过节点-社区隶属关系的局部改变来优化modularity。
    第二阶段:将第一步识别出来的communities聚合为super-nodes,从而得到一个新网络。
    返回第一阶段,重复直至modularity不可能提升。
    如下图右下角所示:
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第28张图片
  3. Louvain算法将图视作带权的。
    原始图可以是无权的(例如边权全为1)。
    随着社区被识别并聚合为super-nodes,算法就创造出了带权图(边权是原图中的边数)。
    在计算过程中应用带权版本的modularity。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第29张图片
  4. phase1 (partitioning)
    首先将图中每个节点放到一个单独社区中(每个社区只有一个节点)。
    对每个节点 i i i,计算其放到邻居 j j j 所属节点中的 Δ Q \Delta Q ΔQ,将其放到 Δ Q \Delta Q ΔQ 最大的 j j j 所属的社区中。
    phase1运行至调整节点社区无法得到modularity的提升(local maxima)10
    注意在这个算法中,节点顺序会影响结果,但实验证明节点顺序对最终获得的总的modularity没有显著影响。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第30张图片
  5. modularity gain
    将节点 i i i 从社区 D D D 转移到 C C C 的modularity gain: Δ Q ( D → i → C ) = Δ Q ( D → i ) + Δ Q ( i → C ) \Delta Q(D\rightarrow i\rightarrow C)=\Delta Q(D\rightarrow i)+\Delta Q(i\rightarrow C) ΔQ(DiC)=ΔQ(Di)+ΔQ(iC)
    Δ Q ( D → i ) \Delta Q(D\rightarrow i) ΔQ(Di):将 i i i D D D 中移出,单独作为一个社区
    Δ Q ( i → C ) \Delta Q(i\rightarrow C) ΔQ(iC):将 i i i 从单独一个社区放入 C C C
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第31张图片
  6. 接下来我们计算: Δ Q ( i → C ) \Delta Q(i\rightarrow C) ΔQ(iC)
    我们首先计算modularity winthin C C C Q ( C ) Q(C) Q(C)):
    定义:
    ∑ i n ≡ ∑ i , j ∈ C A i j \mathbf{\sum_{in}}\equiv\sum_{i,j\in C}A_{ij} ini,jCAij C C C 中节点间的边权总和。(如下左图,5条边,加总为10)
    ∑ t o t ≡ ∑ i ∈ C k i \mathbf{\sum_{tot}}\equiv\sum_{i\in C}k_i totiCki C C C 中节点的边权总和。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第32张图片
    从而得到:
    Q ( C ) ≡ 1 2 m ∑ i , j ∈ C [ A i j − k i k j 2 m ] = ∑ i , j ∈ C A i j 2 m − ( ∑ i ∈ C k i ) ( ∑ j ∈ C k j ) ( 2 m ) 2 = ∑ i n 2 m − ( ∑ t o t 2 m ) 2 \begin{aligned} Q(C)\equiv\frac{1}{2m}\sum_{i,j\in C}\Big[A_{ij}-\frac{k_ik_j}{2m}\Big]&=\frac{\sum_{i,j\in C}A_{ij}}{2m}-\frac{\big(\sum_{i\in C}k_i\big)\big(\sum_{j\in C} k_j\big)}{(2m)^2} \\ &=\frac{\mathbf{\sum_{in}}}{2m}-\Big(\frac{\mathbf{\sum_{tot}}}{2m}\Big)^2 \end{aligned} Q(C)2m1i,jC[Aij2mkikj]=2mi,jCAij(2m)2(iCki)(jCkj)=2min(2mtot)2
    当绝大多数链接都在社区内部时, Q ( C ) Q(C) Q(C) 大。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第33张图片
    接下来我们定义:
    k i , i n ≡ ∑ j ∈ C A i j + ∑ j ∈ C A j i \mathbf{k_{i,in}}\equiv\sum_{j\in C}A_{ij}+\sum_{j\in C}A_{ji} ki,injCAij+jCAji:节点 i i i 和社区 c c c 间边权加总
    k i \mathbf{k_i} ki:节点 i i i 边权加总(如度数)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第34张图片
    i i i 放入 C C C 前:
    Q before = Q ( C ) + Q ( { i } ) = [ ∑ i n 2 m − ( ∑ t o t 2 m ) 2 ] + [ 0 − ( k i 2 m ) 2 ] Q_{\text{before}}=Q(C)+Q(\{i\})=\big[\frac{\mathbf{\sum_{in}}}{2m}-(\frac{\mathbf{\sum_{tot}}}{2m})^2\big]+\big[0-(\frac{k_i}{2m})^2\big] Qbefore=Q(C)+Q({i})=[2min(2mtot)2]+[0(2mki)2]

    i i i 放入 C C C 后:
    Q after = Q ( C + { i } ) = ∑ i n + k i , i n 2 m − ( ∑ t o t + k i 2 m ) 2 Q_{\text{after}}=Q(C+\{i\})=\frac{\mathbf{\sum_{in}}+k_{i,in}}{2m}-\big(\frac{\mathbf{\sum_{tot}}+k_{i}}{2m}\big)^2 Qafter=Q(C+{i})=2min+ki,in(2mtot+ki)2
    (其中 ∑ i n + k i , i n \mathbf{\sum_{in}}+k_{i,in} in+ki,in 相当于 ∑ i n \mathbf{\sum_{in}} in of C + { i } C+\{i\} C+{i} ∑ t o t + k i \mathbf{\sum_{tot}}+k_{i} tot+ki 相当于 ∑ t o t \mathbf{\sum_{tot}} tot of C + { i } C+\{i\} C+{i}
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第35张图片
    从而得到总的modularity gain:
    Δ Q ( i → C ) = Q after − Q before = [ ∑ i n + k i , i n 2 m − ( ∑ t o t + k i 2 m ) 2 ] − [ ∑ i n 2 m − ( ∑ t o t 2 m ) 2 − ( k i 2 m ) 2 ] \begin{aligned} \Delta Q(i\rightarrow C)&=Q_{\text{after}}-Q_{\text{before}}\\ &=\Big[\frac{\mathbf{\sum_{in}}+k_{i,in}}{2m}-\big(\frac{\mathbf{\sum_{tot}}+k_{i}}{2m}\big)^2\Big]-\Big[\frac{\mathbf{\sum_{in}}}{2m}-(\frac{\mathbf{\sum_{tot}}}{2m})^2-(\frac{k_i}{2m})^2\Big] \end{aligned} ΔQ(iC)=QafterQbefore=[2min+ki,in(2mtot+ki)2][2min(2mtot)2(2mki)2]
    类似地,可以得到 Δ Q ( D → i ) \Delta Q(D\rightarrow i) ΔQ(Di),从而得到总的 Δ Q ( D → i → C ) \Delta Q(D\rightarrow i\rightarrow C) ΔQ(DiC)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第36张图片
  7. phase1总结:
    迭代直至没有节点可以移动到新社区:

    对每个节点,计算其最优社区 C ′ C' C C ′ = arg max ⁡ C ′ Δ Q ( C → i → C ′ ) C'=\argmax_{C'}\Delta Q(C\rightarrow i\rightarrow C') C=CargmaxΔQ(CiC)
    如果 Δ Q ( C → i → C ′ ) > 0 \Delta Q(C\rightarrow i\rightarrow C')>0 ΔQ(CiC)>0,更新社区:
    C ← C − { i } C\leftarrow C-\{i\} CC{i}
    C ′ ← C ′ + { i } C'\leftarrow C'+\{i\} CC+{i}
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第37张图片
  8. phase2 (restructing)
    将通过上一步得到的社区收缩到super-nodes,创建新网络,如果原社区之间就有节点相连,就在对应super-nodes之间建边,边权是原对应社区之间的所有边权加总。
    然后在该super-node网络上重新运行phase1
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第38张图片
    图示如下:
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第39张图片
  9. Louvain Algorithm整体图示:cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第40张图片
  10. 在Belgian mobile phone network中,通过Louvain algorithm,可以有效划分出法语和德语社区: cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第41张图片
  11. 本节总结
    1. modularity:对将图划分到社区的partitioning的质量的评估指标,用于决定社区数
    2. Louvain modularity maximization:贪心策略,表现好,能scale到大网络上
      cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第42张图片

4. Detecting Overlapping Communities: BigCLAM

  1. overlapping communitiescs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第43张图片
  2. Facebook Ego-network11
    其节点是用户,边是友谊:
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第44张图片
    在该网络中社区之间有重叠。通过BigCLAM算法,我们可以直接通过没有任何背景知识的网络正确分类出很多节点(图中实心节点是分类正确的节点):
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第45张图片
  3. protein-protein interactions
    在protein-protein interactions网络中,节点是蛋白质,边是interaction。其functional modules在网络中也是重叠的。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第46张图片
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第47张图片
  4. 重叠与非重叠的社区在图中和在邻接矩阵中的图示:cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第48张图片
  5. BigCLAM方法流程:
    第一步:定义一个基于节点-社区隶属关系生成图的模型(community affiliation graph model (AGM12))
    第二步:给定图,假设其由AGM生成,找到最可能生成该图的AGM
    通过这种方式,我们就能发现图中的社区。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第49张图片
  6. community affiliation graph model (AGM)
    通过节点-社区隶属关系(下图左图)生成相应的网络(下图右图)。
    参数为节点 V V V,社区 C C C,成员关系 M M M,每个社区 c c c 有个概率 p c p_c pc
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第50张图片
  7. AGM生成图的流程
    给定参数 ( V , C , M , { p c } ) (V,C,M,\{p_c\}) (V,C,M,{pc}),每个社区 c c c 内的节点以概率 p c p_c pc 互相链接。
    对同属于多个社区的节点对,其相连概率就是: p ( u , v ) = 1 − ∏ c ∈ M u ∩ M v ( 1 − p c ) p(u,v)=1-\prod\limits_{c\in M_u\cap M_v}(1-p_c) p(u,v)=1cMuMv(1pc)
    (注意:如果节点 u u u v v v 没有共同社区,其相连概率就是0。为解决这一问题,我们会设置一个 background “epsilon” 社区,每个节点都属于该社区,这样每个节点都有概率相连)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第51张图片
  8. AGM可以生成稠密重叠的社区
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第52张图片
  9. AGM有弹性,可以生成各种社区结构:non-overlapping, overlapping, nestedcs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第53张图片
  10. 通过AGM发现社区:给定图,找到最可能产生出该图的AGM模型参数(最大似然估计)cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第54张图片
  11. graph fitting
    我们需要得到 F = arg max ⁡ F P ( G ∣ F ) F=\argmax_FP(G|F) F=FargmaxP(GF)
    为解决这一问题,我们需要高效计算 P ( G ∣ F ) P(G|F) P(GF),优化 F F F(如通过梯度下降)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第55张图片
  12. graph likelihood P ( G ∣ F ) P(G|F) P(GF)13
    通过 F F F 得到边产生概率的矩阵 P ( u , v ) P(u,v) P(u,v) G G G 具有邻接矩阵,从而得到 P ( G ∣ F ) = ∏ ( u , v ) ∈ G P ( u , v ) ∏ ( u , v ) ∉ G ( 1 − P ( u , v ) ) P(G|F)=\prod\limits_{(u,v)\in G}P(u,v)\prod\limits_{(u,v)\notin G}\big(1-P(u,v)\big) P(GF)=(u,v)GP(u,v)(u,v)/G(1P(u,v))
    即通过AGM产生的图,原图中边存在、非边不存在的概率连乘,得到图就是原图的概率。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第56张图片
  13. “Relaxing” AGM: Towards P ( u , v ) P(u,v) P(u,v)2
    成员关系具有strength(如图所示): F u A F_{uA} FuA 是节点 u u u 属于社区 A A A 的成员关系的strength(如果 F u A = 0 F_{uA}=0 FuA=0,说明没有成员关系)
    (strength非负)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第57张图片
    对社区 C C C,其内部节点链接概率为: P c ( u , v ) = 1 − exp ⁡ ( − F u C ⋅ F v C ) P_c(u,v)=1-\exp(-F_{uC}\cdot F_{vC}) Pc(u,v)=1exp(FuCFvC)
    0 ≤ P c ( u , v ) ≤ 1 0\leq P_c(u,v)\leq 1 0Pc(u,v)1(是个valid probability)
    P c ( u , v ) = 0 P_c(u,v)=0 Pc(u,v)=0(节点之间无链接) 当且仅当 F u C ⋅ F v C = 0 F_{uC}\cdot F_{vC}=0 FuCFvC=0(至少有一个节点对 C C C 没有成员关系)
    P c ( u , v ) ≈ 0 P_c(u,v)\approx 0 Pc(u,v)0(节点之间有链接) 当且仅当 F u C ⋅ F v C F_{uC}\cdot F_{vC} FuCFvC 很大(两个节点都对 C C C 有强成员关系strength)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第58张图片
    节点对之间可以通过多个社区相连,在至少一个社区中相连,节点对就相连:
    P ( u , v ) = 1 − ∏ C ∈ T ( 1 − P c ( u , v ) ) P(u,v)=1-\prod_{C\in\Tau}\big(1-P_c(u,v)\big) P(u,v)=1CT(1Pc(u,v))
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第59张图片
    P ( u , v ) = 1 − ∏ C ∈ T ( 1 − P c ( u , v ) ) = 1 − ∏ C ∈ T ( 1 − ( 1 − exp ⁡ ( − F u C ⋅ F v C ) ) ) = 1 − ∏ C ∈ T exp ⁡ ( − F u C ⋅ F v C ) = 1 − exp ⁡ ( − ∑ C ∈ T F u C ⋅ F v C ) = 1 − exp ⁡ ( − F u T F v ) (内积) \begin{aligned} P(u,v)&=1-\prod_{C\in\Tau}\big(1-P_c(u,v)\big)\\ &=1-\prod_{C\in\Tau}\Big(1-\big(1-\exp(-F_{uC}\cdot F_{vC})\big)\Big)\\ &=1-\prod_{C\in\Tau}\exp\Big(-F_{uC}\cdot F_{vC}\Big)\\ &=1-\exp\Big(-\sum\limits_{C\in\Tau}F_{uC}\cdot F_{vC}\Big)\\ &=1-\exp(-\mathbf{F}^T_u\mathbf{F}_v)\text{(内积)} \end{aligned} P(u,v)=1CT(1Pc(u,v))=1CT(1(1exp(FuCFvC)))=1CTexp(FuCFvC)=1exp(CTFuCFvC)=1exp(FuTFv)(内积)
    F u \mathbf{F}_u Fu { F u C } C ∈ T \{F_{uC}\}_{C\in\Tau} {FuC}CT 的向量)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第60张图片
  14. BigCLAM model
    P ( G ∣ F ) = ∏ ( u , v ) ∈ E P ( u , v ) ∏ ( u , v ) ∉ E ( 1 − P ( u , v ) ) = ∏ ( u , v ) ∈ E ( 1 − exp ⁡ ( − F u T F v ) ) ∏ ( u , v ) ∉ E exp ⁡ ( − F u T F v ) \begin{aligned} P(G|F)&=\prod\limits_{(u,v)\in E}P(u,v)\prod\limits_{(u,v)\notin E}\big(1-P(u,v)\big)\\ &=\prod\limits_{(u,v)\in E}\big(1-\exp(-\mathbf{F}^T_u\mathbf{F}_v)\big)\prod\limits_{(u,v)\notin E}\exp(-\mathbf{F}^T_u\mathbf{F}_v) \end{aligned} P(GF)=(u,v)EP(u,v)(u,v)/E(1P(u,v))=(u,v)E(1exp(FuTFv))(u,v)/Eexp(FuTFv)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第61张图片
    但是直接用概率的话,其值就是很多小概率相乘,数字小会导致numerically unstable的问题,所以要用log likelihood14(因为log是单调函数,所以可以):
    log ⁡ ( P ( G ∣ F ) ) = log ⁡ ( ∏ ( u , v ) ∈ E ( 1 − exp ⁡ ( − F u T F v ) ) ∏ ( u , v ) ∉ E exp ⁡ ( − F u T F v ) ) = ∑ ( u , v ) ∈ E log ⁡ ( 1 − exp ⁡ ( − F u T F v ) ) − ∑ ( u , v ) ∉ E F u T F v ≡ l ( F ) : 我 们 的 目 标 函 数 \begin{aligned} \log\big(P(G|F)\big)&=\log\Big(\prod\limits_{(u,v)\in E}\big(1-\exp(-\mathbf{F}^T_u\mathbf{F}_v)\big)\prod\limits_{(u,v)\notin E}\exp(-\mathbf{F}^T_u\mathbf{F}_v)\Big)\\ &=\sum_{(u,v)\in E}\log\big(1-\exp(-\mathbf{F}^T_u\mathbf{F}_v)\big)-\sum_{(u,v)\notin E}\mathbf{F}^T_u\mathbf{F}_v\\ &\equiv\mathcal{l}(F):我们的目标函数 \end{aligned} log(P(GF))=log((u,v)E(1exp(FuTFv))(u,v)/Eexp(FuTFv))=(u,v)Elog(1exp(FuTFv))(u,v)/EFuTFvl(F)
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第62张图片
    优化 l ( F ) \mathcal{l}(F) l(F):从随机成员关系 F F F 开始,迭代直至收敛:
    对每个节点 u u u,固定其它节点的membership、更新 F u F_u Fu。我们使用梯度提升的方法,每次对 F u F_u Fu 做微小修改,使log-likelihood提升。
    F u F_u Fu 的偏微分15 ∇ l ( F ) = ∑ v ∈ N ( u ) ( exp ⁡ ( − F u T F v ) 1 − exp ⁡ ( − F u T F v ) ) ⋅ F v − ∑ v ∉ N ( u ) F v \nabla\mathcal{l}(F)=\sum\limits_{v\in\mathcal{N}(u)}\big(\dfrac{\exp(-\mathbf{F}^T_u\mathbf{F}_v)}{1-\exp(-\mathbf{F}^T_u\mathbf{F}_v)}\big)\cdot \mathbf{F}_v-\sum\limits_{v\notin\mathcal{N}(u)}\mathbf{F}_v l(F)=vN(u)(1exp(FuTFv)exp(FuTFv))Fvv/N(u)Fv
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第63张图片
    在梯度提升的过程中, ∑ v ∈ N ( u ) exp ⁡ ( − F u T F v ) 1 − exp ⁡ ( − F u T F v ) ⋅ F v \sum\limits_{v\in\mathcal{N}(u)}\dfrac{\exp(-\mathbf{F}^T_u\mathbf{F}_v)}{1-\exp(-\mathbf{F}^T_u\mathbf{F}_v)}\cdot \mathbf{F}_v vN(u)1exp(FuTFv)exp(FuTFv)Fv u u u 的度数线性相关(快), ∑ v ∉ N ( u ) F v \sum\limits_{v\notin\mathcal{N}(u)}\mathbf{F}_v v/N(u)Fv 与图中节点数线性相关(慢)。
    因此我们将后者进行分解: ∑ v ∉ N ( u ) F v = ∑ v F v − F u − ∑ v ∈ N ( u ) F v \sum\limits_{v\notin\mathcal{N}(u)}\mathbf{F}_v=\sum\limits_v\mathbf{F}_v-\mathbf{F}_u-\sum\limits_{v\in\mathcal{N}(u)}\mathbf{F}_v v/N(u)Fv=vFvFuvN(u)Fv
    右式第一项可以提前计算并cache好,每次直接用;后两项与 u u u 的度数线性相关。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第64张图片
  15. BigCLAM总结:
    BigCLAM定义了一个模型,可生成重叠社区结构的网络。给定图,BigCLAM的参数(每个节点的membership strength)可以通过最大化对数似然估计得到。
    cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks_第65张图片

  1. Meo P D , Ferrara E , Fiumara G , et al. Fast unfolding of communities in large networks. 2008.
    其他参考资料:
    Fast unfolding of communities in large networks - 知乎
    Louvain 算法原理 及设计实现_xsqlx-CSDN博客_louvain算法 ↩︎

  2. 应该是这篇:Yang J , Leskovec J . Overlapping community detection at scale: A nonnegative matrix factorization approach[C]// Acm International Conference on Web Search & Data Mining. ACM, 2013. ↩︎ ↩︎

  3. Granovetter, Mark. 1973. “The Strength of Weak Ties”. American Journal of Sociology 78 (May): 1360-1380 ↩︎

  4. 可参考我之前写的笔记:cs224w(图机器学习)2021冬季课程学习笔记2: Traditional Methods for ML on Graphs_诸神缄默不语的博客-CSDN博客 ↩︎

  5. Bearman, P.S. and Moody, J. (2004) Suicide and Friendships among American Adolescents. American Journal of Public Health, 94, 89-95. ↩︎

  6. Onnela J P , Saramki J , Hyvnen J , et al. Analysis of a large-scale weighted network of one-to-one human communication[J]. New Journal of Physics, 2007, 9(6). ↩︎ ↩︎

  7. 可参考我之前写的笔记:图数据集Zachary‘s karate club network详解,包括其在NetworkX、PyG上的获取和应用方式_诸神缄默不语的博客-CSDN博客 ↩︎

  8. 可参考:模块度_百度百科 ↩︎

  9. 可参考我之前写的笔记:cs224w(图机器学习)2021冬季课程学习笔记15 Frequent Subgraph Mining with GNNs_诸神缄默不语的博客-CSDN博客 ↩︎

  10. 我有个疑惑就是,这个phase1是轮完一遍所有节点就进入phase2,还是要轮完一遍又一遍直至local maxima?反正看这里的叙述是说要轮几遍。但是我也没看过具体的代码实现,以后再看看。 ↩︎

  11. 数据集来源:SNAP: Network datasets: Social circles
    (在本网站中有一个概念WCC,参考16
    ego就是用户(虽然不知道它为什么这么叫,但总之它就是这么叫),ego-network就是这个用户的社交圈(Jure在课上大概也许是这么说的这个意思)。
    参考资料(没仔细看,总之列出来以资参考):
    ①Chapter 9: Ego networks
    ②Julian McAuley and Jure Leskovec. 2012. Learning to discover social circles in ego networks. In Proceedings of the 25th International Conference on Neural Information Processing Systems - Volume 1 (NIPS’12). Curran Associates Inc., Red Hook, NY, USA, 539–547.
    原文:
    在这里插入图片描述 ↩︎

  12. Community-Affiliation Graph Model for Overlapping Network Community Detection ↩︎

  13. 应该是这篇:Leskovec C J . Scalable modeling of real graphs using Kronecker multiplication[C]// 2007:497–504. ↩︎

  14. 可参考我之前写的笔记:cs224w(图机器学习)2021冬季课程学习笔记3: Node Embeddings 脚注5 ↩︎

  15. 这个我没自己算过,以后有缘了我来再推一遍(回忆高等数学下) ↩︎

  16. WCC: Given a directed graph, a weakly connected component (WCC) is a subgraph of the original graph where all vertices are connected to each other by some path, ignoring the direction of edges. In case of an undirected graph, a weakly connected component is also a strongly connected component.
    来源:MADlib: Weakly Connected Components ↩︎

你可能感兴趣的:(人工智能学习笔记,GNN,图机器学习,社区发现,Louvain算法,BigCLAM)