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

文章目录

  • 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组成。
  3. 从社会学角度理解这一结构:
    在社交网络中,用户是被嵌入的节点,信息通过链接(长链接或短链接流动)。
    以工作信息为例,Mark Granovetter 在其60年代的博士论文3 中提出,人们通过人际交往来获知信息,但这些交际往往在熟人(长链接)而非密友(短链接)之间进行,也就是真找到工作的信息往往来自不太亲密的熟人。这与我们所知的常识相悖,因为我们可能以为好友之间会更容易互相帮助。


    Granovetter认为友谊(链接)有两种角度:
    一是structural视角,友谊横跨网络中的不同部分。
    二是interpersonal视角,两人之间的友谊是强或弱的。

    Granovetter在一条边的social和structural视角之间找到了联系:

    1. structure:structurally/well embeded / tightly-connected 的边也socially strong,长距离的、横跨社交网络不同部分的边则socially weak。
      也就是community内部、紧凑的短边更strong,community之间、稀疏的长边更weak。
    2. information:长距离边可以使人获取网络中不同部分的信息,从而得到新工作。structurally embedded边在信息获取方面则是冗余的。
      也就是说,你跟好友之间可能本来就有相近的信息源,而靠外面的熟人才可能获得更多新信息。
  4. triadic closure
    triadic:三元; 三色系; 三色; 三重; 三合一;
    community (tightly-connected cluster of nodes) 形成原因:如果两个节点拥有相同的邻居,那么它们之间也很可能有边。(如果网络中两个人拥有同一个朋友,那么它们也很可能成为朋友)

    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低的青少年女性更容易具有自杀倾向。
  5. 多年来Granovetter的理论一直没有得到验证,但是我们现在有了大规模的真实交流数据(如email,短信,电话,Facebook等),从而可以衡量真实数据中的edge strength。

    举例:数据集Onnela et al. 20076
    20%欧盟国家人口的电话网络,以打电话的数量作为edge weight

  6. edge overlap
    两个节点 iii jjj 之间的edge overlap,是除本身节点之外,两个节点共同邻居占总邻居的比例:
    Oij=∣(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会较高。

    图中左上角overlap:0/6
    图中右上角overlap:2/6
    图中左下角overlap:4/6
    图中右下角overlap:6/6

  7. 在电话网络6 中,edge strength(电话数)和edge overlap之间具有正相关性:图中蓝色是真实数据,红色是重新排列edge strength之后的数据(对照组):

    在真实图中,更embeded(密集)的部分edge strength也更高(红):

    相比之下,strength被随机shuffle之后的结果就没有这种特性:

    从strength更低的边开始去除,能更快disconnect网络(相当于把community之间的边去掉):

    从overlap更低的边开始,disconnect更快:
  8. 从而,我们得到网络的概念图:由structurally embeded的很多部分组成,其内部链接更强,其之间链接更弱:

2. Network Communites

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

  6. 定义modularity8 QQQ 衡量网络的一个社区划分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 groups)(expected # edges within groups)]
    其中expected # edges within group s需要一个null model

  7. null model: configuration model9
    通过configuration model生成的 G′\mathbf{G}'G 是个multigraph(即存在重边,即节点对间可能存在多个边)。
    真实图共 nnn 个节点,mmm 条边。在 G′\mathbf{G}'G 中,节点 iii(度数为 kik_iki)和节点 jjj(度数为 kjk_jkj)之间的期望边数为:ki⋅kj2m=kikj2mk_i\cdot\dfrac{k_j}{2m}=\dfrac{k_ik_j}{2m}ki2mkj=2mkikj
    (一共有 2m2m2m 个有向边,所以一共有 2m2m2m 个节点上的spoke。相当于对节点 iiikik_iki 个spoke每次做随机选择,每次选到 jjj 上的spoke的概率为 kj2m\dfrac{k_j}{2m}2mkj

    G′\mathbf{G}'G 中的理想边数为:
    =12∑i∈N∑j∈Nkikj2m=12⋅12m∑i∈Nki(∑j∈Nkj)=14m2m⋅2m=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中,真实图中的度数分布和总边数都得到了保留。
    (注意:这一模型可应用于有权和无权网络。对有权网络就是用有权度数(边权求和))
  8. 所以modularity Q(G,S)=12m∑s∈S∑i∈s∑j∈s(Aij−kikj2m)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)
    其中 12m\dfrac{1}{2m}2m1 是归一化常数,用于使 −1≤Q≤1-1\leq Q\leq 11Q1
    (Aij=1if i→j,0otherwise)\begin{pmatrix} A_{ij}= &1 &\text{if}\ i\rightarrow j, \\ &0 &\text{otherwise} \end{pmatrix}(Aij=10ifij,otherwise)
    (如果 GGG 有权,AijA_{ij}Aij 就是边权)

    如果组内边数超过期望值,modularity就为正。当 qqq 大于0.3-0.7时意味着这是个显著的社区结构。
    (注意modularity概念同时可应用于有权和无权的网络)

  9. modularity也可以写作:
    Q=12m∑ij[Aij−kikj2m]δ(ci,cj)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)
    (其中 AijA_{ij}Aij 是节点 iiijjj 之间的边权,kik_ikikjk_jkj 分别是节点 iiijjj 入度,2m2m2m 是图中边权总和,cic_icicjc_jcj 是节点所属社区,δ(ci,cj)\delta(c_i,c_j)δ(ci,cj)ci=cjc_i=c_jci=cj 时为1、其他时为0)
  10. 我们可以通过最大化modularity来识别网络中的社区。

3. Louvain Algorithm

  1. Louvain Algorithm
    是用于社区发现的贪心算法,O(nlog⁡n)O(n\log{n})O(nlogn) 运行时间。
    支持带权图和hierarchical社区(就可以形成如图所示的树状图dendrogram)。
    广泛应用于研究大型网络,快,迅速收敛,输出的modularity高(也就意味着识别出的社区更好)。
  2. Louvain算法每一步分成两个阶段:
    第一阶段:仅通过节点-社区隶属关系的局部改变来优化modularity。
    第二阶段:将第一步识别出来的communities聚合为super-nodes,从而得到一个新网络。
    返回第一阶段,重复直至modularity不可能提升。
    如下图右下角所示:
  3. Louvain算法将图视作带权的。
    原始图可以是无权的(例如边权全为1)。
    随着社区被识别并聚合为super-nodes,算法就创造出了带权图(边权是原图中的边数)。
    在计算过程中应用带权版本的modularity。
  4. phase1 (partitioning)
    首先将图中每个节点放到一个单独社区中(每个社区只有一个节点)。
    对每个节点 iii,计算其放到邻居 jjj 所属节点中的 ΔQ\Delta QΔQ,将其放到 ΔQ\Delta QΔQ 最大的 jjj 所属的社区中。
    phase1运行至调整节点社区无法得到modularity的提升(local maxima)10
    注意在这个算法中,节点顺序会影响结果,但实验证明节点顺序对最终获得的总的modularity没有显著影响。
  5. modularity gain
    将节点 iii 从社区 DDD 转移到 CCC 的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):将 iiiDDD 中移出,单独作为一个社区
    ΔQ(i→C)\Delta Q(i\rightarrow C)ΔQ(iC):将 iii 从单独一个社区放入 CCC
  6. 接下来我们计算:ΔQ(i→C)\Delta Q(i\rightarrow C)ΔQ(iC)
    我们首先计算modularity winthin CCCQ(C)Q(C)Q(C)):
    定义:
    ∑in≡∑i,j∈CAij\mathbf{\sum_{in}}\equiv\sum_{i,j\in C}A_{ij}ini,jCAijCCC 中节点间的边权总和。(如下左图,5条边,加总为10)
    ∑tot≡∑i∈Cki\mathbf{\sum_{tot}}\equiv\sum_{i\in C}k_itotiCkiCCC 中节点的边权总和。

    从而得到:
    Q(C)≡12m∑i,j∈C[Aij−kikj2m]=∑i,j∈CAij2m−(∑i∈Cki)(∑j∈Ckj)(2m)2=∑in2m−(∑tot2m)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) 大。

    接下来我们定义:
    ki,in≡∑j∈CAij+∑j∈CAji\mathbf{k_{i,in}}\equiv\sum_{j\in C}A_{ij}+\sum_{j\in C}A_{ji}ki,injCAij+jCAji:节点 iii 和社区 ccc 间边权加总
    ki\mathbf{k_i}ki:节点 iii 边权加总(如度数)

    iii 放入 CCC 前:
    Qbefore=Q(C)+Q({i})=[∑in2m−(∑tot2m)2]+[0−(ki2m)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]

    iii 放入 CCC 后:
    Qafter=Q(C+{i})=∑in+ki,in2m−(∑tot+ki2m)2Q_{\text{after}}=Q(C+\{i\})=\frac{\mathbf{\sum_{in}}+k_{i,in}}{2m}-\big(\frac{\mathbf{\sum_{tot}}+k_{i}}{2m}\big)^2Qafter=Q(C+{i})=2min+ki,in(2mtot+ki)2
    (其中 ∑in+ki,in\mathbf{\sum_{in}}+k_{i,in}in+ki,in 相当于 ∑in\mathbf{\sum_{in}}in of C+{i}C+\{i\}C+{i}∑tot+ki\mathbf{\sum_{tot}}+k_{i}tot+ki 相当于 ∑tot\mathbf{\sum_{tot}}tot of C+{i}C+\{i\}C+{i}

    从而得到总的modularity gain:
    ΔQ(i→C)=Qafter−Qbefore=[∑in+ki,in2m−(∑tot+ki2m)2]−[∑in2m−(∑tot2m)2−(ki2m)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)

  7. phase1总结:
    迭代直至没有节点可以移动到新社区:

    对每个节点,计算其最优社区 C′C'CC′=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}

  8. phase2 (restructing)
    将通过上一步得到的社区收缩到super-nodes,创建新网络,如果原社区之间就有节点相连,就在对应super-nodes之间建边,边权是原对应社区之间的所有边权加总。
    然后在该super-node网络上重新运行phase1

    图示如下:
  9. Louvain Algorithm整体图示:
  10. 在Belgian mobile phone network中,通过Louvain algorithm,可以有效划分出法语和德语社区:
  11. 本节总结
    1. modularity:对将图划分到社区的partitioning的质量的评估指标,用于决定社区数
    2. Louvain modularity maximization:贪心策略,表现好,能scale到大网络上

4. Detecting Overlapping Communities: BigCLAM

  1. overlapping communities
  2. Facebook Ego-network11
    其节点是用户,边是友谊:

    在该网络中社区之间有重叠。通过BigCLAM算法,我们可以直接通过没有任何背景知识的网络正确分类出很多节点(图中实心节点是分类正确的节点):
  3. protein-protein interactions
    在protein-protein interactions网络中,节点是蛋白质,边是interaction。其functional modules在网络中也是重叠的。

  4. 重叠与非重叠的社区在图中和在邻接矩阵中的图示:
  5. BigCLAM方法流程:
    第一步:定义一个基于节点-社区隶属关系生成图的模型(community affiliation graph model (AGM12))
    第二步:给定图,假设其由AGM生成,找到最可能生成该图的AGM
    通过这种方式,我们就能发现图中的社区。
  6. community affiliation graph model (AGM)
    通过节点-社区隶属关系(下图左图)生成相应的网络(下图右图)。
    参数为节点 VVV,社区 CCC,成员关系 MMM,每个社区 ccc 有个概率 pcp_cpc
  7. AGM生成图的流程
    给定参数 (V,C,M,{pc})(V,C,M,\{p_c\})(V,C,M,{pc}),每个社区 ccc 内的节点以概率 pcp_cpc 互相链接。
    对同属于多个社区的节点对,其相连概率就是:p(u,v)=1−∏c∈Mu∩Mv(1−pc)p(u,v)=1-\prod\limits_{c\in M_u\cap M_v}(1-p_c)p(u,v)=1cMuMv(1pc)
    (注意:如果节点 uuuvvv 没有共同社区,其相连概率就是0。为解决这一问题,我们会设置一个 background “epsilon” 社区,每个节点都属于该社区,这样每个节点都有概率相连)
  8. AGM可以生成稠密重叠的社区
  9. AGM有弹性,可以生成各种社区结构:non-overlapping, overlapping, nested
  10. 通过AGM发现社区:给定图,找到最可能产生出该图的AGM模型参数(最大似然估计)
  11. graph fitting
    我们需要得到 F=arg max⁡FP(G∣F)F=\argmax_FP(G|F)F=FargmaxP(GF)
    为解决这一问题,我们需要高效计算 P(G∣F)P(G|F)P(GF),优化 FFF(如通过梯度下降)
  12. graph likelihood P(G∣F)P(G|F)P(GF)13
    通过 FFF 得到边产生概率的矩阵 P(u,v)P(u,v)P(u,v)GGG 具有邻接矩阵,从而得到 P(G∣F)=∏(u,v)∈GP(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产生的图,原图中边存在、非边不存在的概率连乘,得到图就是原图的概率。
  13. “Relaxing” AGM: Towards P(u,v)P(u,v)P(u,v)2
    成员关系具有strength(如图所示):FuAF_{uA}FuA 是节点 uuu 属于社区 AAA 的成员关系的strength(如果 FuA=0F_{uA}=0FuA=0,说明没有成员关系)
    (strength非负)

    对社区 CCC,其内部节点链接概率为:Pc(u,v)=1−exp⁡(−FuC⋅FvC)P_c(u,v)=1-\exp(-F_{uC}\cdot F_{vC})Pc(u,v)=1exp(FuCFvC)
    0≤Pc(u,v)≤10\leq P_c(u,v)\leq 10Pc(u,v)1(是个valid probability)
    Pc(u,v)=0P_c(u,v)=0Pc(u,v)=0(节点之间无链接) 当且仅当 FuC⋅FvC=0F_{uC}\cdot F_{vC}=0FuCFvC=0(至少有一个节点对 CCC 没有成员关系)
    Pc(u,v)≈0P_c(u,v)\approx 0Pc(u,v)0(节点之间有链接) 当且仅当 FuC⋅FvCF_{uC}\cdot F_{vC}FuCFvC 很大(两个节点都对 CCC 有强成员关系strength)

    节点对之间可以通过多个社区相连,在至少一个社区中相连,节点对就相连:
    P(u,v)=1−∏C∈T(1−Pc(u,v))P(u,v)=1-\prod_{C\in\Tau}\big(1-P_c(u,v)\big)P(u,v)=1CT(1Pc(u,v))

    P(u,v)=1−∏C∈T(1−Pc(u,v))=1−∏C∈T(1−(1−exp⁡(−FuC⋅FvC)))=1−∏C∈Texp⁡(−FuC⋅FvC)=1−exp⁡(−∑C∈TFuC⋅FvC)=1−exp⁡(−FuTFv)(内积)\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)(内积)
    Fu\mathbf{F}_uFu{FuC}C∈T\{F_{uC}\}_{C\in\Tau}{FuC}CT 的向量)
  14. BigCLAM model
    P(G∣F)=∏(u,v)∈EP(u,v)∏(u,v)∉E(1−P(u,v))=∏(u,v)∈E(1−exp⁡(−FuTFv))∏(u,v)∉Eexp⁡(−FuTFv)\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)

    但是直接用概率的话,其值就是很多小概率相乘,数字小会导致numerically unstable的问题,所以要用log likelihood14(因为log是单调函数,所以可以):
    log⁡(P(G∣F))=log⁡(∏(u,v)∈E(1−exp⁡(−FuTFv))∏(u,v)∉Eexp⁡(−FuTFv))=∑(u,v)∈Elog⁡(1−exp⁡(−FuTFv))−∑(u,v)∉EFuTFv≡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)

    优化 l(F)\mathcal{l}(F)l(F):从随机成员关系 FFF 开始,迭代直至收敛:
    对每个节点 uuu,固定其它节点的membership、更新 FuF_uFu。我们使用梯度提升的方法,每次对 FuF_uFu 做微小修改,使log-likelihood提升。
    FuF_uFu 的偏微分15∇l(F)=∑v∈N(u)(exp⁡(−FuTFv)1−exp⁡(−FuTFv))⋅Fv−∑v∉N(u)Fv\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}_vl(F)=vN(u)(1exp(FuTFv)exp(FuTFv))Fvv/N(u)Fv

    在梯度提升的过程中,∑v∈N(u)exp⁡(−FuTFv)1−exp⁡(−FuTFv)⋅Fv\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}_vvN(u)1exp(FuTFv)exp(FuTFv)Fvuuu 的度数线性相关(快),∑v∉N(u)Fv\sum\limits_{v\notin\mathcal{N}(u)}\mathbf{F}_vv/N(u)Fv 与图中节点数线性相关(慢)。
    因此我们将后者进行分解:∑v∉N(u)Fv=∑vFv−Fu−∑v∈N(u)Fv\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}_vv/N(u)Fv=vFvFuvN(u)Fv
    右式第一项可以提前计算并cache好,每次直接用;后两项与 uuu 的度数线性相关。
  15. BigCLAM总结:
    BigCLAM定义了一个模型,可生成重叠社区结构的网络。给定图,BigCLAM的参数(每个节点的membership strength)可以通过最大化对数似然估计得到。

  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 ↩︎

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

  1. cs224w(图机器学习)2021冬季课程学习笔记21 Scaling Up GNNs to Large Graphs

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. 介绍scale up GNN问题 2. GraphSAGE Neighbor Samplin ...

  2. cs224w(图机器学习)2021冬季课程学习笔记8 Colab 2

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 VX号"PolarisRisingWar"可直接搜索添加作者好友讨论. 更新日志: 20 ...

  3. cs224w(图机器学习)2021冬季课程学习笔记12 Knowledge Graph Embeddings

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Heterogeneous Graphs and Relational GCN (RGCN) ...

  4. cs224w(图机器学习)2021冬季课程学习笔记4 Link Analysis: PageRank (Graph as Matrix)

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Graph as Matrix 2. PageRank / the Google Algor ...

  5. cs224w(图机器学习)2021冬季课程学习笔记20 Advanced Topics on GNNs

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Advanced Topics on GNNs 2. Limitations of Grap ...

  6. cs224w(图机器学习)2021冬季课程学习笔记2: Traditional Methods for ML on Graphs

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. 章节前言 2. Traditional Feature-based Methods: Nod ...

  7. cs224w(图机器学习)2021冬季课程学习笔记18 Colab 4:异质图

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 Question 1. DeepSNAP异质图简介 1.1 Question 1.1:分配Node ...

  8. cs224w(图机器学习)2021冬季课程学习笔记5 Colab 1:Node Embeddings

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 0. Python包导入 1. NetworkX数据获取.可视化 2. 探索NetworkX数据的 ...

  9. cs224w(图机器学习)2021冬季课程学习笔记9 Graph Neural Networks 2: Design Space

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. A General Perspective on Graph Neural Networks ...

最新文章

  1. python3.6安装包报错_win10安装python3.6的常见问题
  2. 大讲堂 | 预测时间敏感的机器学习模型建模与优化
  3. FAT32格式和NTFS有什么区别
  4. SpringBoot和缓存
  5. Embedding技术在房产推荐中的应用(文末附PPT下载链接)
  6. 2018-03-07 Linux学习
  7. 测试(一)试题及答案
  8. 区分解析解(analytical solution)与数值解(numerical solution)
  9. 如何最大程度地提高cin和cout的效率
  10. java applet的方法_Java Applet的常用方法
  11. 远比系统看图更好的图片浏览器Honeyview,Picasa
  12. 计算机扫描服务开启,win7系统,电脑打印机右键中无扫描选项(WIA已启动)
  13. python多线程抢红包代码_python实现的抢红包程序代码
  14. 深入理解Docker ulimit
  15. 一种新型分割图像中人物的方法,基于人物动作辨认
  16. 互联网和大数据是什么意思_数据化和互联网行业 互联网大数据什么意思
  17. nginx http强制跳转https 配置相关信息
  18. 经典面试题【老鼠喝水】
  19. 菜圈的codewars(一),codewars的注册
  20. 获取腾讯视频真实地址php源码,腾讯视频的地址解析下载

热门文章

  1. 皮克定理,多边形面积以及线段上整点个数
  2. 洛谷 P5520 青原樱(组合数学插板法 or 插空法 模板)
  3. day10、2 - 小小综合实验升级
  4. 大学生如何提高自学能力?
  5. 图解汽车各部位的名称大全
  6. mysql mod如何使用_MySQL MOD()用法及代码示例
  7. rad xe 5 使用教程_使用Rad轻松实现React在线样式
  8. 开热点给电脑消耗大吗_用手机热点上电脑是不是比手机用流量更费一些?
  9. DBeaver免费、多平台数据工具
  10. 参考文献自动生成--