Louvain聚类算法
Louvain聚类算法
https://www.jianshu.com/p/3518fb2f7fd2
Louvain算法来自于Vincent等人发表的文章《Fast unfolding of communities in large networks》,是基于模块度(modularity)进行社区发现,该算法的优点在于速度快,可以在较短时间内实现大规模网络以不同粒度的社区划分(这个就对应我们的Seurat的聚类参数resolution
Newman等人在文章《Finding and evaluating community structure in networks》中提出了模块度(modularity)的概念,用来衡量社区划分的好坏。简单讲,如果一个社区划分算法能将连接比较稠密的点划分在一个社区中,而社区之间的连接比较稀疏,这样划分得到的网络模块度的值就会比较大,模块度越大的社区划分算法性能越好。
算法细节:
第一阶段——先令每个节点自己属于一个社区,此时网络中有几个节点便有几个社区,计算此时的模块度,然后令节点i不再属于自己而是和节点j一个社区,计算此时的模块度,两个步骤就使得此时的网络出现了模块度增量,则模块划分方法就是将i节点划分到使模块度增量最大且大于0的那个节点中去;
第二阶段——将第一阶段划分出来的社区聚合为一个节点,重构整个网络;