目录
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
Community Detection本质上是对图中的一组节点进行集群(基于网络结构)。社区内边比社区间边多。
1.人被嵌到网络中的节点上。信息通过不同的边流动(short:两个人联系很紧密 long:两人联系很弱)
2.有研究表明找工作时,是通过weak连接的熟人找到的,而不是那些强连接的亲密朋友,为什么?
Granovetter's Answer
边的Structural结构性作用。社区间边连接网络不同部分。社区内边很好的嵌入在网络内部,拥有共同好友建立非常紧密的关系。
interpersonal(人际关系)。两个人之间的关系是strong还是weak
社区倾向于使用Triadic Closure(三重闭合)来形成:因为如果网络中的两个人有个共同好友,那么他们二人也很可能成为朋友。
1.Triadic Closure
边在结构上的weak strong可以用Edge Overlap的概念来量化。描述边的端点共有多少邻居。
是边的两个端点i和j除了自身外 共有的邻居节点数➗两者邻居节点数之和。越高,连接越强
从图中看出,越高的overlap,边使用的频率越高,电话数量会越多。
基于strength移除边。如果移除weak边(连接网络不同部分),断开网络连接的速度很快;如果移除strong边(嵌入网络集群中,使用频率会很高),也不一定会断开网络连接,因此速度慢。
基于edge overlap移除边。如果移除低overlap的边,断开网络连接的速度很快
interpersonal strength 是高overlap,embedding在网络中,有很强的联系;低或者零overlap的边,连接网络不同部分,往往weak
网络是由紧密连接的多个节点集构成的。
网络社区的概念:节点集具有大量内部连接和少量的外部连接(和网络其他部分的连接)
如何自动找到紧密连接的节点组?理想上紧密连接的节点组和真实的节点组相对应。
1.定义
模块化衡量网络被多好的划分为社区。
目标:找到一组分区是模块化程度尽可能高。
Q = 每个小组s内边的个数和期望的null model的小组s内边个数的差,再对所有小组求和。
2.null modlel 构建
在给定的有n个节点和m条边的真实图G,构造rewired network G'
图G'中期望的边的数目为2m,因此 在零模型下,度分布和边缘的总数都被保留下来。
这个模型适用于加权或未加权网络。
3.模块度总结
模块度是对所有组 组内所有节点对之间真实边数与构造的空模型边数的差的和 求和,再归一化。模块度的值在[-1,1]之间,如果组内的边数超过预期的边数,那么为正值。
在实践中如果Q值大于0.3-0.7表明图有我们确定的很强的社区结构。
1.简介
2.Louvain算法
(1)步骤
初始时将每个顶点当作一个社区,社区个数与顶点个数相同
对每一个节点i
依次将每个顶点与邻居顶点合并在一起,计算它模块度增益,找到模块化增益最大的方案
如果该最大的模块化增益>0,将该节点放入模块度增量最大的邻居节点j所在社区
(2)算法问题
在step1中注意到算法输出依赖于考虑的节点的顺序,但研究表明节点顺序对结果有显著的影响。
(3)算法细节
ΔQ 的变化 = 将节点i先从原来社区移除的Q的变化+再将节点i移入新社区C的Q的变化 ,即
以将节点i移到社区C的ΔQ为例
定义社区C内节点间连接的权重的和;C内所有节点的连接的权重和;计算出社区C的Q如下图所示,当Q(C)大时,表示大多数连接都在社区内。
进一步定义:节点i和社区C内节点的连接权重之和;节点i的所有连接的权重和
可以计算出合并前Q(C)+Q({i}) 合并后Q(C)+Q({i})
最后计算出,之后可以类似计算出
一个节点可能属于不同社区。
下图是非重叠社区与重叠社区的邻接矩阵对比
如何检测社区结构?
步骤:
step1:为基于节点社区隶属关系的图定义生成模型(AGM)。
step2:定义一个优化问题。给定一个图G,假设图是由AGM产生的,找到最可能产生给定图的AGM
可以定义为:
AGM模型:给定参数(V,C,M,{}),知道如何生成模型
AGM非常灵活,可以表达各种各项的社区结构:非重叠社区、重叠社区、分层社区。
1.做相反操作:给定一个图G,找到生成这个图的最可能的AGM的参数(model F),即需要决定参数的值:
1)M:节点如何隶属于社区
2)社区的数量C
3)参数
2.使用最大似然估计——根据给定图G估计模型F参数
给定G和F计算似然函数F产生G:P(G|F)。给定模型G和为每一条边分配概率的F,计算F生成图G的可能性。
给定图G,G的邻接矩阵作为输入,模型F为每个边分配一个可能发生的概率,计算概率邻接聚沉可以生成G的可能性。遍历所有G的邻接矩阵中元素1的位置(出现边),在F产生的概率邻接矩阵中对应位置的概率值希望尽可能大,即尽可能大;遍历所有G的邻接矩阵中元素0的位置(无边),在F产生的概率邻接矩阵中对应位置的概率值希望尽可能小,即尽可能大。
1.基本
和原来每个社区有参数不同,这里改变为,为每一个节点分配:节点的membership strength节点加入某社区的实力。如果strength=0说明节点不属于这个社区。
2.如何写出两个节点的连接概率
1)两者通过一个共同社区相连的概率
其中membership strength是非负的。如果两个节点对社区C的membership strength都很高,那么两者连接的可能性很高;反之则很低。如果至少一个节点对C的membership strength为0,则两个节点无法通过C连接。
2)两者通过多个共同社区相连的概率
节点u和v通过任一个社区连接的概率 = 1 - 两者不通过任一个社区连接的概率
可以进一步扩展,很优雅,因为利用了节点u和v的membership strength向量的内积。
1.在进行AGM的扩展后,基于membership strength定义的节点u与v连接概率,给定图G后,最大化该模型F下生成图G的似然概率。
2.但是上图的似然函数计算,涉及到很多小概率的数值相乘,容易造成数据不稳定,因此考虑取对数(对数和原函数在相同的地方取极值,不改变单调性,将相乘变为相加,同时解决数据不稳定问题),得到了我们的目标函数L(F)。
3.优化目标函数。
4.对梯度的改进
注意到,梯度计算时设计涉及到节点u的邻居节点与非邻居节点,由于一个节点的邻居节点数很少,但非邻居节点数很多,计算复杂度都在遍历非邻居节点,那能否改进?
将非邻居节点的遍历改为:所有节点 - 节点u本身 - 节点u的邻居节点
由于所有节点只需要计算一次,节点u的邻居节点数少,很好的简化了节点u的非邻居节点的遍历。
5.总结