模块度(Modularity)与Fast Newman算法讲解与代码实现

本文介绍了模块度(Modularity)的概念,及其在社区划分中的应用。文章详细阐述了Fast Newman算法,通过实例展示了模块度的计算过程,并提供了简单的代码实现。讨论了算法的矩阵形式和权重的影响,同时分享了作者对于写博客的心得体会。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创文章,转载请注明,谢谢~

一、背景介绍
  Modularity(模块度), 这个概念是2003年一个叫Newman的人提出的。这个人先后发表了很多关于社区划分的论文,包括2002年发表的著名的Girvan-Newman(G-N)算法,和2004发表的Fast Newman(F-B)算法,Modularity就是F-B算法中提出的(03年提出的概念,04年确认发表)。
  在2006年的时候Newman重新定义了Modularity,实际上只是对原来的公式做了变换,使其适用于Spectral Optimization Algorithms。
  早期的算法不能够很好的确认什么样的社区划分是最优的。Modularity这个概念就是为了定义一个对于社区划分结果优劣的评判。

二、Modularity
  我们先从06年的定义讲起:

Q=12mvw[Avwkvkw2m]δ(cv,cw)(1)

  Q就是模块度,模块度越大则表明社区划分效果越好。Q值的范围在[-0.5,1),论文表示当Q值在0.3~0.7之间时,说明聚类的效果很好。
  我们现在假设有 x 个节点,每个节点都代表一个输入,并且我们已经将这些输入划分为了 N 个社区,节点彼此之间共有 m 个连接。 v w x 中的任意两个节点,当两个节点直接相连时 Avw=1 ,否则 Avw=0 kv 代表的是节点 v 的度,度是图论的基础知识,从一个节点出发有几个边,我们就说这个节点的度是多少。很容易理解,这里的 2m 实际就是整个图中的度(每个节点都计算一次度,那么每条边对应两个节点,所以要乘以2)。 δ(cv,cw) 是用来判断节点 v w 是否在同一个社区内,在同一个社区内` δ(cv,cw)=1 ,否则 δ(c

评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值