CS224W 13 Community Detection in Networks

目录

13.1 Community Detection in Networks ——直观解释

信息如何在网络中流动(以社交网络为例)

社区如何形成?

Edge Overlap

13.2 Network Communities

定义

Modularity

13.3 Louvain Algorithm

13.4 Detecting Overlapping Communities

Community- Affiliation Graph Model(AGM)

使用AGM检测社区

思路

Graph Likelihood P(G|F)——计算F生成G的可能性

"Relaxing" AGM: Towards P(u,v)——扩展AGM以说明成员优势

 BigCLAM Model

13.1 Community Detection in Networks ——直观解释

Community Detection本质上是对图中的一组节点进行集群(基于网络结构)。社区内边比社区间边多。

信息如何在网络中流动(以社交网络为例)

1.人被嵌到网络中的节点上。信息通过不同的边流动(short:两个人联系很紧密 long:两人联系很弱)

CS224W 13 Community Detection in Networks_第1张图片 2.有研究表明找工作时,是通过weak连接的熟人找到的,而不是那些强连接的亲密朋友,为什么?

Granovetter's Answer

  • 对友谊(链接)的两种观点:

        边的Structural结构性作用。社区间边连接网络不同部分。社区内边很好的嵌入在网络内部,拥有共同好友建立非常紧密的关系。

        interpersonal(人际关系)。两个人之间的关系是strong还是weak

CS224W 13 Community Detection in Networks_第2张图片

  • Granovetter建立了边的social 和 structural作用的联系
  • 第一种观点Structure
    • structural embedded(紧密连接)的边socially strong,有很多紧密联系的人,结构性很强。
    • 连接不同部分的远程边socially weak
  • 第二种观点Information
    • 远程边可以让你聚集网络不同部分的信息
    • structural embedded 边则在信息获取上有很重的冗余(你朋友都和你有直接联系的边,谁知道工作可以直接告诉你,那这个工作信息在通过其他朋友的其他边传播就没用了)

社区如何形成?

社区倾向于使用Triadic Closure(三重闭合)来形成:因为如果网络中的两个人有个共同好友,那么他们二人也很可能成为朋友。

1.Triadic Closure

 Triadic Closure的度量通过聚类系数度量。CS224W 13 Community Detection in Networks_第3张图片

Edge Overlap

边在结构上的weak strong可以用Edge Overlap的概念来量化。描述边的端点共有多少邻居。

O_{ij}是边的两个端点i和j除了自身外 共有的邻居节点数➗两者邻居节点数之和。O_{ij}越高,连接越强

CS224W 13 Community Detection in Networks_第4张图片

 从图中看出,越高的overlap,边使用的频率越高,电话数量会越多。

CS224W 13 Community Detection in Networks_第5张图片

基于strength移除边。如果移除weak边(连接网络不同部分),断开网络连接的速度很快;如果移除strong边(嵌入网络集群中,使用频率会很高),也不一定会断开网络连接,因此速度慢。CS224W 13 Community Detection in Networks_第6张图片

 基于edge overlap移除边。如果移除低overlap的边,断开网络连接的速度很快

CS224W 13 Community Detection in Networks_第7张图片

 interpersonal strength 是高overlap,embedding在网络中,有很强的联系;低或者零overlap的边,连接网络不同部分,往往weak

CS224W 13 Community Detection in Networks_第8张图片

13.2 Network Communities

定义

网络是由紧密连接的多个节点集构成的。

网络社区的概念:节点集具有大量内部连接和少量的外部连接(和网络其他部分的连接)

如何自动找到紧密连接的节点组?理想上紧密连接的节点组和真实的节点组相对应。

Modularity

1.定义

模块化衡量网络被多好的划分为社区。

目标:找到一组分区是模块化程度尽可能高。

 Q =  每个小组s内边的个数和期望的null model的小组s内边个数的差,再对所有小组求和。

CS224W 13 Community Detection in Networks_第9张图片

2.null modlel 构建

在给定的有n个节点和m条边的真实图G,构造rewired network G'

  • 有相同的degree 分布,但是随机的连接
  • 考虑G'中节点之间可能有多重边
  • 节点i与j之间期待的边数k_{i}\cdot \frac{k_{j}}{2m}(因为对每一个节点i,练到j的概率为\frac{k_{j}}{2m},i的度数为k_{i}

CS224W 13 Community Detection in Networks_第10张图片图G'中期望的边的数目为2m,因此 在零模型下,度分布和边缘的总数都被保留下来。

这个模型适用于加权或未加权网络。

CS224W 13 Community Detection in Networks_第11张图片

 3.模块度总结

模块度是对所有组  组内所有节点对之间真实边数与构造的空模型边数的差的和 求和,再归一化。模块度的值在[-1,1]之间,如果组内的边数超过预期的边数,那么为正值。

在实践中如果Q值大于0.3-0.7表明图有我们确定的很强的社区结构。

CS224W 13 Community Detection in Networks_第12张图片

 可以通过最大程度地提高模块性得分确定社区CS224W 13 Community Detection in Networks_第13张图片

13.3 Louvain Algorithm

1.简介

  • 是一种利用模块度检测社区的贪婪算法(Greedy algorithm)。
  • 时间复杂度为O(nlogn)
  • 支持加权网络
  • 提供分层社区
  • 可以很好的用于大型网络——因为快速、快速收敛、输出高模块度

CS224W 13 Community Detection in Networks_第14张图片

2.Louvain算法

(1)步骤

  • step1:模块度优化阶段——只允许社区的局部变化
    • 初始时将每个顶点当作一个社区,社区个数与顶点个数相同

    • 对每一个节点i

      • 依次将每个顶点与邻居顶点合并在一起,计算它模块度增益,找到模块化增益最大的方案

      • 如果该最大的模块化增益>0,将该节点放入模块度增量最大的邻居节点j所在社区

    •    迭代第二步,直至算法稳定,即所有顶点所属社区不再变化(任何一个节点的移动不会增加模块度)
  • step2:网络凝聚阶段——凝聚所发现的社区,以便构建新的社区网络
    • 如果相应社区的节点之间至少有一个边,则连接超级节点
    • 将各个社区所有节点压缩成为一个节点,社区内节点的权重转化为新节点环的权重,社区间权重转化为新节点边的权重。CS224W 13 Community Detection in Networks_第15张图片
  • 将step1和step2和称一个pass,不断迭代pass,直到模块度不可能增加CS224W 13 Community Detection in Networks_第16张图片

(2)算法问题

在step1中注意到算法输出依赖于考虑的节点的顺序,但研究表明节点顺序对结果有显著的影响。

 (3)算法细节

  • step1中模块度变化量ΔQ的计算

ΔQ 的变化 = 将节点i先从原来社区移除的Q的变化+再将节点i移入新社区C的Q的变化 ,即

\Delta Q(D\rightarrow i\rightarrow C)) = \Delta Q(D\rightarrow i)+\Delta Q(i\rightarrow C)

CS224W 13 Community Detection in Networks_第17张图片

以将节点i移到社区C的ΔQ为例

定义社区C内节点间连接的权重的和;C内所有节点的连接的权重和;计算出社区C的Q如下图所示,当Q(C)大时,表示大多数连接都在社区内。

CS224W 13 Community Detection in Networks_第18张图片

 进一步定义:节点i和社区C内节点的连接权重之和;节点i的所有连接的权重和CS224W 13 Community Detection in Networks_第19张图片

 可以计算出合并前Q(C)+Q({i})   合并后Q(C)+Q({i})CS224W 13 Community Detection in Networks_第20张图片

 最后计算出\Delta Q(i\rightarrow C),之后\Delta Q(D\rightarrow i)可以类似计算出

  •  step1总结

CS224W 13 Community Detection in Networks_第21张图片

13.4 Detecting Overlapping Communities

一个节点可能属于不同社区。

下图是非重叠社区与重叠社区的邻接矩阵对比

CS224W 13 Community Detection in Networks_第22张图片

如何检测社区结构?

步骤:

step1:为基于节点社区隶属关系的图定义生成模型(AGM)。

step2:定义一个优化问题。给定一个图G,假设图是由AGM产生的,找到最可能产生给定图的AGM

CS224W 13 Community Detection in Networks_第23张图片

Community- Affiliation Graph Model(AGM)

  • AGM:将节点分配给社区,如何产生网络的边 (根据社区隶属度——即给定参数,一个网络怎么生成边)。
  • 给定参数(V,C,M,{p_{c}}),V为节点,C是社区,M是成员关系,每一个社区有一个单独的概率p_{c}
    • 社区c内节点抛硬币以p_{c}的概率相互连接(抛硬币是的话则连接)
    • 共属于多个社区间的顶点有多次抛硬币的机会连接(如果第一次机会不行,还有来自下一个社区的机会) 
    • 两个节点u与v之间连接的概率,为1减去在任何情况下都无法生成边的概率。
      • 若两者都属于社区c那么无法生成边的概率为1-p_{c},生成边的概率为p_{c}
      • 若两者属于不同的社区,则无法生成边的概率为1,生成边的概率为0
      • 若两者共同属于社区c1、社区c2 那么生成边的概率为(1-p_{c1})(1-p_{c2}) 第一次机会没成功第二次机会也没成功 ,生成边的概率为 1-(1-p_{c1})(1-p_{c2})         

                可以定义为:

p(u,v) = 1-\prod _{c\in M_{u}\cap M_{v} }(1-p_{c})

CS224W 13 Community Detection in Networks_第24张图片

 AGM模型:给定参数(V,C,M,{p_{c}}),知道如何生成模型

CS224W 13 Community Detection in Networks_第25张图片

 AGM非常灵活,可以表达各种各项的社区结构:非重叠社区、重叠社区、分层社区。CS224W 13 Community Detection in Networks_第26张图片

使用AGM检测社区

思路

1.做相反操作:给定一个图G,找到生成这个图的最可能的AGM的参数(model F),即需要决定参数的值:

        1)M:节点如何隶属于社区

        2)社区的数量C

        3)参数p_{c}

2.使用最大似然估计——根据给定图G估计模型F参数

  • 给定图G最大化模型F生成真实图G的过程
  • 为了解决问题需要有效的计算P(G|F),然后优化

CS224W 13 Community Detection in Networks_第27张图片

Graph Likelihood P(G|F)——计算F生成G的可能性

给定G和F计算似然函数F产生G:P(G|F)。给定模型G和为每一条边分配概率的F,计算F生成图G的可能性。

给定图G,G的邻接矩阵作为输入,模型F为每个边分配一个可能发生的概率,计算概率邻接聚沉可以生成G的可能性。遍历所有G的邻接矩阵中元素1的位置(出现边),在F产生的概率邻接矩阵中对应位置的概率值希望尽可能大,即\prod_{u,v\in G}P(u,v)尽可能大;遍历所有G的邻接矩阵中元素0的位置(无边),在F产生的概率邻接矩阵中对应位置的概率值希望尽可能小,即\prod_{u,v\notin G}(1-P(u,v))尽可能大。

CS224W 13 Community Detection in Networks_第28张图片

"Relaxing" AGM: Towards P(u,v)——扩展AGM以说明成员优势

1.基本

和原来每个社区有参数p_{c}不同,这里改变为,为每一个节点分配:节点的membership strength节点加入某社区的实力。如果strength=0说明节点不属于这个社区。

CS224W 13 Community Detection in Networks_第29张图片

 2.如何写出两个节点的连接概率

1)两者通过一个共同社区相连的概率

其中membership strength是非负的。如果两个节点对社区C的membership strength都很高,那么两者连接的可能性很高;反之则很低。如果至少一个节点对C的membership strength为0,则两个节点无法通过C连接。

CS224W 13 Community Detection in Networks_第30张图片

 2)两者通过多个共同社区相连的概率

节点u和v通过任一个社区连接的概率 = 1 - 两者不通过任一个社区连接的概率

CS224W 13 Community Detection in Networks_第31张图片

 可以进一步扩展,很优雅,因为利用了节点u和v的membership strength向量的内积。CS224W 13 Community Detection in Networks_第32张图片

 BigCLAM Model

1.在进行AGM的扩展后,基于membership strength定义的节点u与v连接概率,给定图G后,最大化该模型F下生成图G的似然概率。

CS224W 13 Community Detection in Networks_第33张图片

2.但是上图的似然函数计算,涉及到很多小概率的数值相乘,容易造成数据不稳定,因此考虑取对数(对数和原函数在相同的地方取极值,不改变单调性,将相乘变为相加,同时解决数据不稳定问题),得到了我们的目标函数L(F)。

CS224W 13 Community Detection in Networks_第34张图片

3.优化目标函数。

  • 初始化,从随机menbership F开始
  • 不断迭代,直到收敛
    • 对于任意一个节点u\in V​​​​​​​
      • 固定其他节点的membership,更新节点u的membership F_{u}
      • 做梯度上升,对F_{u}做小的改变增大对数似然函数。

CS224W 13 Community Detection in Networks_第35张图片

 4.对梯度的改进

注意到,梯度计算时设计涉及到节点u的邻居节点与非邻居节点,由于一个节点的邻居节点数很少,但非邻居节点数很多,计算复杂度都在遍历非邻居节点,那能否改进?

将非邻居节点的遍历改为:所有节点 - 节点u本身 - 节点u的邻居节点

由于所有节点只需要计算一次,节点u的邻居节点数少,很好的简化了节点u的非邻居节点的遍历。

CS224W 13 Community Detection in Networks_第36张图片

5.总结

  • BigCLAM基于membership stength 定义了一个模型,这个模型可用于生成重叠社区结构。
  • 给定一个图G如何找到BigCLAM的参数(每个节点的membership strength)?可以最大化模型F生成给定图的对数似然函数来求解。

CS224W 13 Community Detection in Networks_第37张图片

 

你可能感兴趣的:(人工智能)