(NOCD)Overlapping Community Detection with Graph Neural Networks

论文地址
代码地址
本文提出了一种基于图神经网络的重叠社区检测模型。Neural Overlapping Community Detection(NOCD) model.

可以看做BigCLAM的升级版。

核心思想:将GNN的强大能力与伯努利-泊松概率(Bernoulli–Poisson)模型结合起来。

Bernoulli–Poisson modelBernoulli-Poisson (BP)模型是一种考虑到重叠社区的图生成模型。

根据BP模型,图是如下方式生成的:给定从属关系 F ∈ R ≥ 0 N × C F \in \mathbb{R}_{\ge0}^{N \times C} FR0N×C, 邻接矩阵项 A u v A_{uv} Auv被采样为:

A u v ∼ B e r n o u l l i ( 1 − e x p ( − F u F v T ) ) (1) A_{uv} \sim Bernoulli(1 - exp(-F_uF_v^T))\tag {1} AuvBernoulli(1exp(FuFvT))(1)其中Fu是节点u(矩阵F的第u行)的社区从属的行向量。直观的说,节点u和v的共同社区越多(即较高的点积 F u F v T F_uF_v^T FuFvT),他们被连接成边的可能性越大。

该模型有许多令人满意的特性:它可以生成各种社区拓扑(例如嵌套的、分层的),能导致社区之间的密集重叠,并且具有计算效率。现有的研究建议在BP模型中使用坐标上升的最大似然估计或马尔可夫链蒙特卡罗进行推断。

Model definition
我们不是将隶属矩阵F作为一个自由变量来进行优化(BigCLAM),而是通过一个GNN生成F:

F : = G N N θ ( A , X ) (2) F := GNN_\theta(A,X)\tag {2} F:=GNNθ(A,X)(2)输出层采用逐元素的ReLU激活函数,以确保f的无负性。

BP模型的负对数似然损失函数为:(推导过程BigClam中用) − l o g p ( A ∣ F ) = − ∑ ( u , v ) ∈ E l o g ( 1 − e x p ( − F u F v T ) ) + ∑ ( u , v ) ∉ E F u F v T (3) -logp(A|F) = -\sum\limits_{(u,v)\in E}log(1- exp(-F_uF_v^T)) + \sum \limits_{(u,v)\notin E}F_uF_v^T \tag{3} logp(AF)=(u,v)Elog(1exp(FuFvT))+(u,v)/EFuFvT(3)但是现实中的图通常是非常稀疏的(绝大部分节点之间没有连接 ( u , v ) ∉ E (u,v) \notin E (u,v)/E),这意味着式3中的第二项将为损失提供更大的贡献。因此,需要通过平衡这两个项来抵消这一点,这是不平衡分类的一种标准技术。

L ( F ) = − E ( u , v ) ∼ P E [ l o g ( 1 − e x p ( − F u F v T ) ) ] + E ( u , v ) ∼ P N [ F u F v T ] (4) \mathcal{L}(F) = -\mathbb{E}_{(u,v) \sim P_E}[log(1-exp(-F_uF_v^T))]+\mathbb{E}_{(u,v)\sim P_N}[F_uF_v^T]\tag{4} L(F)=E(u,v)PE[log(1exp(FuFvT))]+E(u,v)PN[FuFvT](4)其中 P E P_E PE P N P_N PN分别表示边和非边上的均匀分布。

该方法不像传统方法那样直接优化隶属矩阵F,而是搜索神经网络参数 θ ∗ \theta ^* θ,以最小化(平衡的)负对数似然函数:

θ ∗ = arg ⁡ θ min ⁡ L ( G N N θ ( A , X ) ) (5) \theta^* = \arg\limits_{\theta} \min \mathcal{L}(GNN_\theta(A,X)) \tag{5} θ=θargminL(GNNθ(A,X))(5)GNN进行社区预测的优点: 首先,由于适当的归纳偏差,GNN为邻近节点输出相似的社区隶属向量,与简单模型相比,这提高了预测质量。此外,这样的公式使我们能够无缝地将节点特征分配到模型中。如果节点属性X不可用,我们可以简单地使用A作为节点特性。最后,根据公式2,我们甚至可以预测出在训练时没有看到的节点的社区。

ScalabilityBP模型的一个优点是它可以有效地评估计算损失L(F)及其梯度。通过使用缓存技巧,我们可以将这些操作的计算复杂度从O(N^2)降低到O(N + M)。由于现实世界网络的稀疏性,这已经导致了较大的加速(通常M<<N^2),但我们还可以进一步加速,在计算损失时,我们不是使用A的所有项(公式4),而是在每个训练历元采样一小批S边和非边,从而近似计算∇L inO(S)(类似于mini-batch SGD)。

Model architecture在本文的实验中,作者使用的是2层GCN作为NOCD模型的基础。GCN可以定义为:

F : = G C N θ ( A , X ) = R e L U ( A ^    R e L U ( A ^ X W ( 1 ) ) W ( 2 ) ) (6) F := GCN_\theta (A,X) = ReLU(\widehat{A}\;ReLU(\widehat{A}XW^{(1)})W^{(2)}) \tag{6} F:=GCNθ(A,X)=ReLU(A ReLU(A XW(1))W(2))(6)其中, A ^ = D ~ − 1 / 2 A ~ D ~ − 1 / 2 \widehat{A} = \tilde{D}^{-1/2}\tilde{A}\tilde{D}^{-1/2} A =D~1/2A~D~1/2是归一化邻接矩阵。 A ~ = A + I N \tilde{A} = A + I_N A~=A+IN是具有自环的邻接矩阵。 D ~ i i = ∑ j A ~ i j \tilde{D}_{ii} = \sum_j\tilde{A}_{ij} D~ii=jA~ij A ~ \tilde{A} A~的对角度矩阵。

NOCD模型与标准GCN的两个主要区别是:

  • (1)第一个图卷积层后的批量归一化。
  • (2)L2正则化应用于所有权矩阵。

Assigning nodes to communities根据隶属矩阵进行社区划分,如果节点u的隶属关系Fuc高于一个固定的阈值p,那么我们就将节点分配给社区C。文中实验采取p=0.5.

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
NOCDneural overlapping community detection)是一种用于检测重叠社区结构的神经网络模型。它的创新点在于将图神经网络(GNN)和Bernoulli-Poisson概率模型相结合。 在NOCD模型中,首先需要进行数据预处理和特征提取。然后,通过构建GNN模型来学习节点的表示。GNN模型可以通过多层的图卷积操作来聚合节点的邻居信息,并将这些信息传递给下一层。这样,每个节点都可以得到一个表示向量,用于表示其在社区结构中的角色。 接下来,NOCD模型使用Bernoulli-Poisson概率模型来建模节点之间的连接概率。该模型考虑了节点之间的相似性和社区结构,并通过最大似然估计来学习模型参数。最终,通过优化目标函数,可以得到最佳的社区划分结果。 下面是一个示例代码,演示了如何使用NOCD模型进行重叠社区检测: ```python import nocd # 导入数据集 A = ... # 图的邻接矩阵 # 定义GNN模型 sampler = nocd.sampler.get_edge_sampler(A, batch_size, batch_size, num_workers=2) model = nocd.models.GNNModel(input_dim, hidden_dim, output_dim) optimizer = torch.optim.Adam(model.parameters(), lr=0.01) # 训练模型 for epoch in range(num_epochs): for batch in sampler: optimizer.zero_grad() output = model(batch) loss = nocd.losses.bpr_loss(output) loss.backward() optimizer.step() # 获取社区划分结果 communities = nocd.utils.get_communities(model) # 输出结果 for node, community in communities.items(): print(f"Node {node} belongs to community {community}") ``` 这是一个简单的示例,实际使用中可能需要根据具体情况进行参数调整和模型优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值