美文网首页BI的世界
社区发现算法-Louvain

社区发现算法-Louvain

作者: 八刀一闪 | 来源:发表于2016-09-21 21:40 被阅读9760次

简介

Louvain算法[1]是一种基于多层次优化Modularity[2]的算法,它的优点是快速、准确,被[3]认为是性能最好的社区发现算法之一。Modularity函数最初被用于衡量社区发现算法结果的质量,它能够刻画发现的社区的紧密程度。那么既然能刻画社区的紧密程度,也就能够被用来当作一个优化函数,即将结点加入它的某个邻居所在的社区中,如果能够提升当前社区结构的modularity。</br>

Modularity的定义如下:


其中,m表示网络中边的数量,A为邻接矩阵,如果ci,cj相同则$\delta(ci,cj)$=1否则为0。</br>

如果当前结点所在的社区只有它自己,那么在计算将它加入到其它社区时的modularity的变化有个技巧来加速计算,Louvain的高效性也在一定程度上受益于此,它为:


</br>

Louvain算法包括两个阶段,在步骤一它不断地遍历网络中的结点,尝试将单个结点加入能够使modularity提升最大的社区中,直到所有结点都不再变化。在步骤二,它处理第一阶段的结果,将一个个小的社区归并为一个超结点来重新构造网络,这时边的权重为两个结点内所有原始结点的边权重之和。迭代这两个步骤直至算法稳定。它的执行流程如图所示:


</br>

## ****代码实现
GraphX是Spark上的一个图处理框架,它在RDD的基础之上封装出VertexRDD以及EdgeRDD,由这两个封装出的RDD便可构成图结构,详细请见官网:

GraphX实现
Python实现参见

## ****文献
1: Fast unfolding of communities in large networks
2: Finding community structure in very large networks
3: Community detection algorithms: A comparative analysis

相关文章

  • 社区发现算法-Louvain

    简介 Louvain算法[1]是一种基于多层次优化Modularity[2]的算法,它的优点是快速、准确,被[3]...

  • Louvain算法的介绍与利用Graphx的实现过程

    Louvain是用来进行社会网络挖掘的社区发现算法,属于图的聚类算法。 1. 算法介绍 Louvain是基于模块度...

  • community detection

    社区发现算法与可视化 from community import community_louvain 因为comm...

  • 图算法-群体发现(Louvain)

    Louvain 算法是基于模块度的社区发现算法 修改:支持输入点id不连续问题 【数据类】 public clas...

  • 图算法之Community Detection

    Louvain(Fast-Unfolding)   Louvain算法,又称之为Fast-Unfolding算法,...

  • 2018-11-13

    基于Louvain算法的聚类分析及推荐 一、算法介绍: Louvain算法是基于模块度的一个快速算法,用模块性对社...

  • Louvain算法

    参考:Louvain algorithm for community detection[https://www....

  • 2019-11-27

    社区发现算法。。。

  • 社区发现算法-GN

    社区发现 GN算法 参考文献 Community structure in social and biologic...

  • 社区发现

    社区发现(Community Detection)算法用来发现网络中的社区结构,也可以看做是一种聚类算法。 分层聚...

网友评论

    本文标题:社区发现算法-Louvain

    本文链接:https://www.haomeiwen.com/subject/hunaettx.html