louvain算法详解
文章目录
louvain算法
在社交网络中,有的用户之间的连接较为紧密,有的用户之间的连接关系较为稀疏,在这样的的网络中,连接较为紧密的部分可以被看成一个社区,其内部的节点之间有较为紧密的连接,而在两个社区间则相对连接较为稀疏,这便称为社团结构。
louvain是基于模块度(modularity)进行社区发现,该算法的优点在于速度快,可以在较短时间内实现大规模网络以不同粒度的社区划分,并且无需指定社区的数量,当模块度不再增益时候,迭代便自动停止。
louvain简介
算法思想:Louvain算法的优化目标为最大化整个数据的模块度
实现步骤:
1、先令每个节点自己属于一个社区,此时网络中有几个节点便有几个社区,计算此时的模块度
2、然后令节点 $i$ 不再属于自己而是和节点 $j$ 一个社区,计算此时的模块度
3、两个步骤就使得此时的网络出现了模块度增量,则模块划分方法就是将 $i$ 节点划分到使模块度增量最大且大于0的那个节点中去
4、将步骤3中划分出来的社区聚合为一个节点,重构整个网络
实现代码
|
|
|
|
文章作者 玉面蟾蜍
上次更新 2022-04-16 Sat