Louvain 论文笔记
Louvain
Introduce
Louvain算法是社区发现领域中经典的基于模块度最优化的方法,且是目前市场上最常用的社区发现算法。社区发现旨在发现图结构中存在的类簇(而非传统的向量空间)。
Algorithm Theory
模块度(modularity)
要想理解Louvain算法需先理解模块度,模块度是衡量一个网络社区划分好坏的度量指标,可以简单理解为“给定算法得到的图中的社区划分D,社区内节点的连边权重和与对应随机图中的连边权重和的差,可以理解为社区内边权重之于社区间边权重的比例,当然,社区内边权重越大,则模块度越大,社区中节点联系更加紧密,社区划分质量越好。”模块度的公式如下所示:

以下均无向无权图为例,m为图中的边数,2m为图的总度数,A为邻接矩阵,当两个节点直接相连时Aij=1,否则Aij=0,ki为节点i的度,δ(ci,cj)为指示函数,当节点i、j位于同一个社区,其为1,否则为0。
公式中比较难理解的是中括号中的第二项,啥意思呢? 之前提到随机图,这边公式中的第二项指的是随机图中度为ki和度为kj的两个节点相连的概率。得到的社区划分与随机图(无规律,且无明显社区结构)相差越大,则社区内连接越紧密,社区间连接越稀疏(即社区边界更明显),发现的社区质量越好。
好了,模块度就理解到这儿,简单总结一下,模块度范围在[-0.5,1),一般模块度越高,发现的社区质量越好。(原始模块度论文表示当模块度值在0.3~0.7之间时,社区质量好)
Louvain Flow Chart:
现在进入正题,Louvain算法的总体框架(流程图)如下图所示:

Louvain是一个迭代更新算法(初始每个节点自成一个社区),每个迭代称为一个pass,每个pass都包括两个步骤。即Louvain算法等价于不断迭代以下两个步骤(阶段):
(1)步骤1:首先,为每个节点分配一个单独的社区。其次对于每个节点i,考虑其邻居j,计算将节点i归入节点j所在社区模块度的增益。考虑节点i的所有邻居,并且将节点i归入到模块度增益的社区最大。如果节点i归到他邻居所在社区都没有模块度增益(即模块度增益为0或者负数)的话,那节点i仍然留在他原始的社区中。这个过程反复做,直到改变任何节点的社区标签都没有更进一步的模块度增益就停止,停止之后第一阶段就结束了。以上最重要的就是要搞懂模块度增益这玩意怎么算呢? 模块度增益可以通过以下公式计算。

啥意思呢?我们可以化简一下得到如下式子:
\Delta Q =[\frac{k_{i,in}}{2m}-\frac{\sum_{tot}k_i}{2m^2}]
括号中第一项的意思可以理解为节点i加入邻居所在社区之后对应社区内的连边数。括号中第二项的意思可以理解为结点加入邻居社区后,对应社区间以及社区内的连边数。最大化该模块度增益,就是最大化这个差,这个差大了,就说明节点i加入到这个邻居社区之后,使得该社区的内聚度更高了,社区结构越明显了。emmm,模块度增益最大化大概就是这么个意思了。
(2)步骤2:算法的第二阶段做的事情是,结合步骤1得到的初始社区划分建立一个新的网络,新网络的节点是在第一阶段发现的初始社区(把社区粗化成一个粗化节点),两个粗化节点之间的边由两个社区原始对应的社区间边的权重和(无向图即两个社区间相连的边数),同一社区节点之间的连边权重生成这个社区粗化节点的一个自环边。一旦完成了第二阶段,就将构成的新的网络输入第一阶段再进行迭代(因为粗化(层次的概念),每次网络中的初始社区数会变小,因此后面迭代的速度会更快)。
至此,Louvain算法介绍结束。
Reference
- Blondel V D, Guillaume J L, Lambiotte R, et al. Fast unfolding of communities in large networks[J]. Journal of statistical mechanics: theory and experiment, 2008, 2008(10): P10008.
- 社区发现算法——louvain完全解读
- 模块度与Louvain社区发现算法
Louvain 论文笔记的更多相关文章
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)
Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文, ...
- 论文笔记之:Visual Tracking with Fully Convolutional Networks
论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015 CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...
- Deep Learning论文笔记之(八)Deep Learning最新综述
Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...
- Twitter 新一代流处理利器——Heron 论文笔记之Heron架构
Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture ...
- Deep Learning论文笔记之(六)Multi-Stage多级架构分析
Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些 ...
- Multimodal —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型
看图说话(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字.这项任务要求模型可以识别图 ...
- 论文笔记(1):Deep Learning.
论文笔记1:Deep Learning 2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...
- 论文笔记(2):A fast learning algorithm for deep belief nets.
论文笔记(2):A fast learning algorithm for deep belief nets. 这几天继续学习一篇论文,Hinton的A Fast Learning Algorithm ...
- 论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN
论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN ICCV 2017 Paper: http://op ...
随机推荐
- Ansible-快速启动
Ansible是一款简单的运维自动化工具,只需要使用ssh协议连接就可以来进行系统管理,自动化执行命令,部署等任务. Ansible的特点 1.ansible轻量级无客户端agentless,只需要双 ...
- MySQL 通过.frm文件和.ibd文件实现InnoDB引擎的数据恢复
起因是这样的,公司的领导表示说服务器崩了,修理好之后,只剩下数据库目录下的物理文件(即.frm文件与.ibd文件).然后,整了一份压缩包给我,叫我瞅一下能不能把数据恢复出来.我当场愣了一下,这都啥文件 ...
- Nginx的超时timeout配置详解
Nginx的超时timeout配置详解 本文介绍 Nginx 的 超时(timeout)配置. Nginx 处理的每个请求均有相应的超时设置.如果做好这些超时时间的限定,判定超时后资源被释放,用来处理 ...
- Python+Selenium自动化-定位页面元素的八种方法
Python+Selenium自动化-定位页面元素的八种方法 本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子. 0.元素定位方法主要有: id定位:find_elemen ...
- CUDA 内存统一分析
CUDA 内存统一分析 关于CUDA 编程的基本知识,如何编写一个简单的程序,在内存中分配两个可供 GPU 访问的数字数组,然后将它们加在 GPU 上. 本文介绍内存统一,这使得分配和访问系统中任何处 ...
- eclipse左边的工程列表窗口不见了解决方案
解决eclipse左边的工程列表窗口看不到工程目录的方法: Window->Show View->Project Explorer(如果没有Project Explorer选项,则Wind ...
- 像Swing这种已经不太用的技术,大学还在教,到底要不要学?
一直以来,写日常问题.前沿技术和架构思考类的文章比较多,今天为什么突然来说说Swing这个陈年老技术呢? 因为在CSDN上看到了这样的一篇文章: 可以看到作者对于学Swing还是挺愤怒的,不过确实Sw ...
- 七、AIDE入侵检测
Aide通过检查数据文件的权限.时间.大小.哈希值等,校验数据的完整性 部署AIDE入侵检测系统 [root@proxy ~]# yum -y install aide //安装软件包 ...
- 一篇文章带你搞懂 etcd 3.5 的核心特性
作者 唐聪,腾讯云资深工程师,极客时间专栏<etcd实战课>作者,etcd活跃贡献者,主要负责腾讯云大规模k8s/etcd平台.有状态服务容器化.在离线混部等产品研发设计工作. etcd ...
- Task00:绪论 - 环境搭建
本章重点: 在电脑上安装MySQL数据库系统 安装客户端并连接到本机上的MySQL数据库 使用提供的脚本创建本教程所使用的示例数据库 1. MySQL 8.0 的安装 考虑到大家所使用的操作系统的不同 ...