Louvain 算法来源于文章2010年的论文Fast unfolding of communities in large networks,简称为Louvian [1]。

算法原理

Louvain算法是基于模块度(Modularity)的社区发现算法,该算法在效率和效果上都表现比较好,并且能够发现层次性的社区结构,其优化的目标是最大化整个图属性结构(社区网络)的模块度。

其中需要理解的核心点有:

模块度Modularity的定义,这个定义是描述社区内紧密程度的值QQ;

模块度增量ΔQ\Delta Q,即把一个孤立的点放入一个社区C后,计算Modularity的变化,其中计算过程的要点是,首先计算1个点的Modularity,和社区C的Modularity,再计算合并后新社区的Modularity,新社区的Modularity减去前两个Modularity就是ΔQ\Delta Q。

对上述公式的理解是,将ΔQ\Delta Q展开其等价于1/2*(ki,in/m-Sumtot/m*ki/m)1/2 *( k_i,in / m - Sum_{tot} / m * ki / m ),其中kik_i,in/min/m表示的是将孤立的节点和社区C放在一起对整个网络 Modularity 的影响,而 Sumtot/mSum_{tot} / m 和 ki/mki / m 分别表示孤立的节点和社区C分开式分别对整个网络Modularity的影响,所以他们的差值就反应了孤立的节点放入社区C前后对整个网络Modularity的影响。

算法的计算过程如下:每个点作为一个community,然后考虑每个community的邻居节点,合并到community,然后看ΔQ\Delta Q;找到最大的正ΔQ\Delta Q,合并点到community;多进行几轮,至不再变动,那么结束;

其中存在的问题是,不同的节点访问顺序将导致不同的结果,实验中发现这个顺序对结果影响不大,但是会在一定程度上影响计算时间。将新的community作为点,重复上述过程。那么如何确定新的点之前的权重呢?答案是将两个community之间相邻的点之间的权重和作为两个community退化成一个点后的新的权重。

该算法的优点主要有3个:

易于理解

非监督

计算快速

最后我们可以得到的结果是层次化的社区发现结果。

Figure 1 Louvain结果示意图1

Figure 2 Louvain结果示意图2

算法的改进: 还有其加速实现的论文,例如[2], 其实现方式比较直接,就是考虑一个点周围的百分之多少点进行归并。可以在spark下面通过类似于多路归并来实现。

参考资料:

louvain算法python_【转载】LOUVAIN算法相关推荐

  1. 哈希算法python_哈希算法(Python代码实现)

    1.常见的数据查找算法: 众所周知,顺序查找是最简单的查找方式,但要将所有数据遍历一遍所以效率相对较低,对大数据量的査找问题显然不行.二分查找的查找效率虽然非常高但是数据必须有序,而对数据排序通常需要 ...

  2. 蚂蚁算法python_蚁群算法python编程实现

    前言 这篇文章主要介绍了Python编程实现蚁群算法详解,涉及蚂蚁算法的简介,主要原理及公式,以及Python中的实现代码,具有一定参考价值,需要的朋友可以了解下. 蚁群算法简介 蚁群算法(ant c ...

  3. 人工蜂群算法python_人工蜂群算法简介与程序分析

    目前人工蜂群算法主要分为基于婚配行为与基于釆蜜行为两大类,本文研究的是基于釆蜜行为的人工蜂群算法. 蜜蜂采蜜 自然界中的蜜蜂总能在任何环境下以极高的效率找到优质蜜源,且能适应环境的改变.蜜蜂群的采蜜系 ...

  4. 维特比算法 python_维特比算法理解与实现(Python)

    前言 写这篇文章就是想以通俗易懂的方式解析维特比算法,最后给出Python代码的实现.下面的公式和原理均出自<统计学习方法>. 算法的原理 算法的原理1.PNG 算法的原理2.PNG 上面 ...

  5. 自动寻路算法python_关于Dijkstra算法和其他的一些图算法(Johnson, Floyd-Warshall, A*)解决最短路径问题的方法的Python实现。...

    这篇文章其实主要想说的是如何解决最短路径的问题. 其实最短路径问题,我们在生活中都在不知不觉的使用.比如我们在上网的时候,互联网传输采用了各种各样的数据包路由方法.这些路由算法都在幕后工作. 还有一些 ...

  6. 人工鱼群算法python_蚁群算法、免疫优化算法、鱼群算法 Python 库

    github地址guofei9987/scikit-opt​github.com 安装 $pip install scikit-opt 蚁群算法(ACA, Ant Colony Algorithm) ...

  7. 花朵授粉算法python_花授粉算法的研究及应用

    摘要: 植物花授粉算法是根据自然界中植物花朵授粉行为机理进行模拟而设计的一种新型启发式优化算法,算法的局部搜索和全局搜索过程分别模拟自花授粉和异花授粉行为,并通过随机扰动来均衡算法局部搜索和全局搜索过 ...

  8. 差分进化算法python_差分进化算法Python实现

    本文you清华大学硕士大神金天撰写,欢迎大家转载,不过请保留这段版权信息,对本文内容有疑问欢迎联系作者微信:jintianiloveu探讨,多谢合作~ 导语 差分进化算法是一种寻优算法,提出时间比遗传 ...

  9. 点在不规则图形内算法python_目标检测算法中规则矩形和不规则四边形IOU的Python实现...

    交并比(Intersection-over-Union,IoU),目标检测中使用的一个概念,我们在进行目标检测算法测试时,重要的指标,是产生的预测框(candidate bound)与标记框(grou ...

  10. 令牌桶算法和漏桶算法python_图解Python算法

    普通程序员,不学算法,也可以成为大神吗? 对不起,这个,绝对不可以. 可是算法好难啊~~看两页书就想睡觉-- 所以就不学了吗?就一直当普通程序员吗? 如果有一本算法书,看着很轻松--又有代码示例--又 ...

最新文章

  1. PX4多机ros仿真报错
  2. P4281 [AHOI2008]紧急集合 / 聚会
  3. 【Python】聊聊Pandas的前世今生
  4. c语言学习自我评价,学习自我评价4篇
  5. 【探索测试篇】探索无界,BUG无限,让程序猿头疼的测试技术
  6. PHP 设计模式 笔记与总结(3)SPL 标准库
  7. python os.system
  8. 1-java学习笔记
  9. HTML、CSS --chrome书签整理
  10. php使用正则表达式标记标题,PHP正则表达式以匹配HTML标记a之外的关键字
  11. 计算机领域顶级会议列表
  12. Google 2020 应用与游戏出海 6 月刊: 政策先行,护航应用远洋
  13. 项目 电话号码和E-mail地址提取程序 地实现
  14. ncbi查找目的基因序列_干货 | 如何查找目标基因序列?掌握这几招就够了!(NCBI篇)...
  15. MySQL 中 You can‘t specify target table ‘表名‘ for update in FROM clause解决办法
  16. Python实现文件简单加解密
  17. C语言字符型变量的存储和取值
  18. vs2008不能输入CDKEY解决方法
  19. zemax入门学习笔记一(干货)
  20. DETR训练VOC数据集

热门文章

  1. matlab两条曲线方程求交点_matlab中已知两曲线方程,怎样求两曲线交点并标注出?...
  2. 标准粒子群优化算法 PSO
  3. 超星尔雅学习通情商与智慧人生 答案 满分版
  4. 计算机创新设计2大赛获奖作品3Done,走向3D创意世界——3Done创客设计比赛
  5. 建表mysql语句吗_mysql建表语句问题
  6. 【openeuler 21.3】Linux硬盘分区、更改/home目录挂载空间及root目录扩容
  7. 《Go语言实战》读书笔记——关于Go语言的介绍
  8. mysql数据库备份sql语句_mysql用户管理、常用sql语句及数据库的备份
  9. IoTDB常用的SQL语句大全
  10. Intel RST 和Optane 学习笔记