社区发现算法

GN模型

GN模型是由Girvan和Newman提出的一个经典的社区发现算法,它属于分裂的层次聚类算法。在近几年已成为社团结构分析的一种标准算法,他的基本思想是从网络的整体出发,不断地从网络中移除介数最大的边,从而获得最佳的社团结构。边介数定义为网络中经过每条边的最短路径的数目。GN算法的基本流程如下:
(1)计算每一条边的边介数;
(2)删除边界数最大的边;
(3)重新计算网络中剩下的边的边阶数;
(4)重复(3)和(4)步骤,直到网络中的任一顶点作为一个社区为止。

GN算法的缺陷:
(1)不知道最后会有多少个社区;
(2)在计算边介数的时候可能会有很对重复计算最短路径的情况,时间复杂度太高;
(3)GN算法不能判断算法终止位置。

为什么可以这么做?
社团之间成员的联系多,不同社团的成员之间联系少。社团之间所存在的少数几个连接是社团间通信的瓶颈,也是社团间通信时数据流的必经之路。按照某种形式的通信关系并且寻找到具有最高通信经过的边,该边就应该是连接不同社团的通道。将这样的边全部去掉后,就获得了社团的最高分解形式。—这也是为什么引入边介数的原因

LPA模型(标签传播算法)

标签传播算法是一种基于标签传播的局部社区发现算法。其基本思想是节点的标签(community)依赖其邻居节点的标签信息,影响程度由节点相似度决定,并通过传播迭代更新达到稳定。

LPA算法的优点
1)算法逻辑简单,时间复杂度低,接近线性复杂度,在超大规模网络下会有优异的性能,适合做baseline。
2)无须定义优化函数,无须事先指定社区个数,算法会利用自身的网络结构来指导标签传播。

LPA算法的缺点
1)雪崩效应:社区结果不稳定,随机性强。由于当邻居节点的社区标签权重相同时,会随机取一个。导致传播初期一个小的错误被不断放大,最终没有得到合适的结果。尤其是异步更新时,更新顺序的不同也会导致最终社区划分结果不同。
2)震荡效应:社区结果来回震荡,不收敛。当传播方式处于同步更新的时候,尤其对于二分图或子图存在二分图的结构而言,极易发生。

Fast Unfolding算法

Fast Unfolding算法是一种迭代的算法,主要目标是不断划分社区使得划分后的整个网络的模块度不断增大。
主要分为两个阶段:
第一阶段称为Modularity Optimization,主要是将每个节点划分到与其邻接的节点所在的社区中,以使得模块度的值不断变大;
第二阶段称为Community Aggregation,主要是将第一步划分出来的社区聚合成为一个点,即根据上一步生成的社区结构重新构造网络。重复以上的过程,直到网络中的结构不再改变为止。

具体的算法过程如下所示:
1.初始化,将每个点划分在不同的社区中;
2.对每个节点,将每个点尝试划分到与其邻接的点所在的社区中,计算此时的模块度,判断划分前后的模块度的差值ΔQ是否为正数,若为正数,则接受本次的划分,若不为正数,则放弃本次的划分;
3.重复以上的过程,直到不能再增大模块度为止;
4.构造新图,新图中的每个点代表的是步骤3中划出来的每个社区,继续执行步骤2和步骤直到社区的结构不再改变为止。

算法的优点:
①步骤直观且易于实施,无人监督。
②算法速度快,在大型的ad-hoc模块化网络上的算法应用表明复杂度为线性的。因为使用公式可以很容易的计算模块化的可能增益,且在几次迭代后增益会急剧减少。
③算法具有固有的多层次特性,所以模块化的分辨率限制问题也可以被规避。因为该算法的第一阶段设计为将单一的节点从一个社区移位到另一个社区。
(模块化分辨率限制问题:以模块度最大化为目标可能无法发现一下规模较小的社区,即当最大模块度值对应的社团结构中包含小于一定规模的社团时,就不能确定这些社团是单独的社区或者更小的社区的若连接合并了)。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值