CS244W: Machine Learning with Graphs (4) ——网络中的社区结构

一、网络和社区
我们通常认为网络的结构是这样的:
在这里插入图片描述
那么是什么导致了这样的预期呢?
网络中的数据流是如何流动的?
不同结构的节点扮演了什么怎样不同的角色?
不同的链接(长与短)又分别扮演了什么怎样不同的角色?
在1960年Mark Granovetter对人们通过人际关系获取信息的研究中发现,人们通常经由不那么熟悉的人的介绍来获取工作。为什么这样的介绍人会比熟人更有帮助?

关于友谊关系的两个观点:

  • 结构上,友谊关系遍布网络的不同部分
  • 在人与人交往时,友谊不是弱就是强

而结构上,如果两个人都有一个共同的朋友,则会使他们成为朋友的概率上升,这被称为三角闭合(Triadic closure)。
在这里插入图片描述
在此基础上,Granovetter阐述了一条边在人际上的角色和结构上的角色之间的关系。
第一,结构上强的边在人际上也强,跨越网络不同部分的长边在人际上很弱。
第二,长边容许你获取网络中其他部分的信息,从而找到工作,从结构上看强的边在信息交流方面是严重冗余的。
在这里插入图片描述
三角闭合既为聚类系数较高。
 
 
二、边的重复
定义O_ij衡量连接节点 i 和节点 j 之间是否有其他的边与{i, j}其相重复。
在这里插入图片描述
其中N为节点的邻居数。
在这里插入图片描述
从对手机网络的分析中可以看到在真实网络中,边的权重和重复度正相关。
在这里插入图片描述
将真实网络中的边,从高权重到低权重删除,与从低权重到高权重删除进行对比,可以看到高权重边在维持网络流通性方面较低权重边更重要。
在这里插入图片描述
若将权重替换为边的重复度,会得到更显著的结果。
在这里插入图片描述
Granovetter的理论引出了以下网络的概念图景:
在这里插入图片描述
 
 
三、网络中的社区
网络社区的定义:具有大量内部连接和很少的外部连接(到网络的其余部分)的节点集。
那么我们如何识别节点的集合(社区、模块、集群)呢?
因为社区是紧密连接的节点集,故定义Modularity(模块度) Q 来度量一个网络划分成社区的程度。给定一个将节点分成互不相交的组的网络 s ∈ S,有:
在这里插入图片描述
需要一个空模型(Null model)作为基准。

空模型的配置
给定一个拥有 n 个节点和 m 条边的真实网络 G ,构建重连边的随机网络 G’

  • G’具有相同的度分布但随机进行连接
  • G’可以是多重图(含有平行边的图)
  • 度数为k_i和k_j的节点 i 和节点 j 之间的期望边数为
    在这里插入图片描述
  • G’ 的期望边数即为:
    在这里插入图片描述

将图 G 分组为 S 的模块度为:
在这里插入图片描述
模块度的取值范围为[1,1]

  • 如果组内的边的数量超过了期望的数量,则为正
  • 如果 Q 值大于0.3 - 0.7即表示群落结构显著

所以,我们可以通过最大化模块度来识别社区。
 
 
四、Louvain社区发现算法

  • 这是一个检测社区的贪婪算法,时间复杂度为O(nlogn)
  • 支持权重图
  • 提供分层的社区结果
  • 广泛用于研究大型网络,因为它速度快,收敛快,高模块化输出
    在这里插入图片描述在这里插入图片描述

Louvain社区发现算法算法思想
Louvain算法是检测社区的贪婪算法,每个阶段分两步:

  • 第一步:通过对本地的节点社区进行改变优化模块度
  • 第二步:将识别出的社区聚合为超级节点,以构建新的网络
  • 跳转到第一步,直至模块度没有提升
    在这里插入图片描述

Louvain算法的第一步:

  • 将图中的每个节点放入不同的社区(每个社区一个节点)
  • 对于每个节点,算法执行两次计算:计算将节点 i 放入某个邻居节点 j 的社区时的模块度变化值△Q;将节点 i 移动到产生最大收益的节点 j 的社区
  • 这一步运行到没有任何移动能够产生增益(局部最优)
  • (其中节点的顺序对最终结果有影响,但不显著)

其中将节点 i 移出社区C的△Q计算公式如下:
在这里插入图片描述
其中:
在这里插入图片描述
(其中的各个部分即对应Q值公式中的各个部分)

同时,还需要计算将节点 i 移出原本所在的社区D的模块度改变值△Q(D → i),故在这里插入图片描述
Louvain算法的第二步:
第一阶段获得的社区被压缩成超节点,以创建新的网络:

  • 如果相应群落的节点之间至少有一条边,则超节点被连接
  • 两个超节点之间的边的权值是两个超节点之间所有边的权值之和

然后在超级节点网络上运行第一步。
在这里插入图片描述
在这里插入图片描述
 
 
五、重叠社区发现算法BigCLAM
在这里插入图片描述
BigCLAM算法思想:
第一步:定义一个基于节点社区关系的图生成模型

  • Community Affiliation Graph Model (AGM)

第二步:

  • 给定图 G ,假设图 G 是由AGM生成的
  • 找到能够生成该图的最佳AGM
  • 通过这种方式,就发现了社区

社区隶属关系图模型AGM(Community-Affiliation Graph Model)
模型参数:节点集 V 、社区集 C 、关系集 M ,每个社区 c 有一个单一的概率p_c。
在这里插入图片描述
给定参数(V, C, M, {p_c}):

  • 社区c中的节点以概率p_c相互连接
  • 属于多个社区的节点有多个连接的机会
  • 节点 u 与节点 v 相连的概率为在这里插入图片描述

在这里插入图片描述
AGM可以表达各种各样的社区结构:非重叠、重叠、嵌套
在这里插入图片描述在这里插入图片描述在这里插入图片描述
使用AGM发现社区就是,对于图 G 使用极大似然估计,找到模型 F 的参数:
在这里插入图片描述
为此我们需要:

  • 高效的计算P(G | F)
  • 在模型F的基础上进行最大化P(G | F)
    在这里插入图片描述
    这里我们转换思路,定义F_uA为节点 u 对社区 A 的隶属度(0即为无隶属度),则F_u为节点 u 对所有社区隶属度的行向量。
    在这里插入图片描述

节点 u 、节点 v 连接的概率与共享的社区的隶属度成正比,我们可以定义以下节点之间相邻概率与隶属度的关系:
在这里插入图片描述
代入P(G | F)将连乘转化为连加,既对于给定网络G(V, E),最大化l(F):
在这里插入图片描述
优化过程:

  • 从随机的F开始
  • 更新节点 u 的 F_uC,同时修复所有其他节点的成员关系
  • 更新时间为与节点 u 的度数相关的线性时间

使用梯度下降算法:
在这里插入图片描述
执行梯度下降,在这里我们对F进行一点改变,导致对数似然函数的增加。
纯梯度下降是很慢的,然而:
在这里插入图片描述
通过缓存F_v,梯度步长花费为与节点 u 的度数相关的线性时间。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值