图论-图论算法之Louvain

社区发现算法简介之Louvain算法
    在本次文章中,我们将会介绍经典的社区发现方法,也就是Louvain算法。这种算法在社群发现等应用的效果较好,是比较经典的图挖掘类算法,在金融风控行业挖掘诈骗团伙等应用里有比较显著的效果。社区发现方法的目标是在整个图里面发现一些有聚集性特征的群体,这些群体的特征是内部的互相联系较为紧密,外部和其他点的联系较为稀疏。下面我们对算法思路和步骤进行介绍。
    Louvain算法的核心就是模块度的计算,它每一次将模块度变化更大的邻居团伙作为当前点的目标团伙,反复计算迭代后可以得到最终的社团发现结果。其中模块度的计算公式如下所示,我们发现其中A其实就是全图的邻接矩阵的某个位置的元素,而m其实是A矩阵所有元素的求和结果,这个公式的最后面有一个0-1函数,它的作用是如果两个点不属于同一个社区,那么将设置Q值为0,也就是不需要计算。

    在得到了模块度的公式后,我们进一步求模块度的变化结果,也就是计算当新的点加入到社区的时候,对于原有两个社区的变化,而公式也是用新的模块度Q值去减去原有两个旧的模块度Q值,经过化简后得到下述的式子。其中K(i,in) 指的是当前社区内部的所有节点和新的节点i所连接的边的权值之和;而K(i) 则是所有和节点i直接相连的边的权值之和;Σtot 的含义是当前社区边内部的权重之和再加上当前社区和其他社区相连接的边的权值之和的结果。

    根据上述的公式,我们只需要不断的计算模块度变化值就可以了,直到迭代计算的次数达到了最大上限的次数,或者整体的模块度已经不发生变化的时候就可以结束算法。那么根据上述公式和思路,我们总结的Louvain算法步骤如下:
    1)初始化参数设置,比如最大迭代次数,每个点的模块度初始值等参数。
    2)遍历每个节点,比较每个节点和周围相邻社区(最开始周围社区是节点,后续的迭代中可能变成多个点聚集的社区),计算当前节点和周围社区的模块度变化,也就是ΔQ,将每个节点加入到模块度大于0并且具有最大模块度增量的社区之中,如果周围的社区计算得到的模块度增量都是小于0的,则无需操作,保留当前节点并且不加入到任意社区中。
    3)对上一步骤得到的结果进行重构,也就是将各个社区重新合并,把原有的图转化为新的超图,可以认为新的社区是一个大的“节点”,而两个大的“节点”之间的边的权重就是社区内部所有节点互相的边的距离权重之和,从而构建新的超图后,再次进行迭代计算模块度变换。
    4)反复重复上述步骤后,直到整体的模块度不再变化或者达到了最大的迭代次数后,停止该算法。

    总的来说,本文提及的Louvain算法是比较经典和实用的算法,在真实场景中经常被使用,因为它本身的原理比较经典,而且算法的核心思路是符合图自身结构的聚类趋势的,但是需要注意的是Louvain算法针对的是无向图,如果是有向图则无法使用,或者尽量弱化为无向图。Louvain算法是初学者需要掌握的,可以帮助在后续学习其他算法的过程中打好基础,并且解决真实应用里的问题。

泛运筹理论初探——Louvain算法简介相关推荐

  1. 泛统计理论初探——孤立森林简介

    数据挖掘-孤立森林方法 孤立森林算法简介 孤立森林是一种用于异常检测的算法,本文将对该算法进行简介,包括算法的理念.步骤.以及使用场景.常见的异常检测方法主要是统计学课本上学到一些方法,比如六西格玛方 ...

  2. 泛统计理论初探——余弦距离简介

    统计学习-余弦距离简介 介绍余弦距离 在衡量变量之间距离的时候,我们发现可以用欧式距离.绝对值距离,本文我们将来介绍另一种距离,即余弦距离.余弦距离在实际问题中经常用到,由于它的计算方法是把各个维度的 ...

  3. 泛统计理论初探——初探Gibbs采样

    统计学习-Gibbs采样简介 初探Gibbs采样方法     在上一篇文章中,我们介绍了MCMC抽样和MH抽样的方法,在本次文章中将会介绍Gibbs抽样方法,这种方法其实是基于MCMC抽样的一种优化方 ...

  4. 泛统计理论初探——初探MCMC采样和MH采样

    统计学习-MCMC采样与MH采样简介 初探MCMC采样方法和MH采样方法     在之前介绍的文章中,我们介绍了基本的采样方法.在了解简单的采样方法后,本次文章将会介绍MCMC采样方法与优化的MH采样 ...

  5. 泛统计理论初探——KNN

    数据挖掘-knn KNN算法 KNN算法是机器学习里较为简单和初级的算法,也称为最近邻算法.可以算的上是学习数据挖掘的入门算法,在大赛中,该算法一般用来作为插值来用,一般不会直接使用该算法来进行预测. ...

  6. Louvain 算法

    Louvain 算法 简介 Louvain 算法是一种基于贪心的社群发现算法,其主要思想是将节点不断地聚合成社区(community),并最大化社区内部的连通性以及社区之间的连接弱化.该算法的特点在于 ...

  7. 【计算机视觉】PnP算法简介与代码解析-柴政(solvepnp理论篇)

    PnP算法简介与代码解析-柴政 PnP求解算法是指通过多对3D与2D匹配点,在已知或者未知相机内参的情况下,利用最小化重投影误差来求解相机外参的算法.PnP求解算法是SLAM前端位姿跟踪部分中常用的算 ...

  8. 常用数据挖掘算法简介

    1.朴素贝叶斯 朴素贝叶斯分类法是统计学分类方法,在特征条件独立的前提下,基于贝叶斯定理计算的隶属关系概率进行分类. 朴素贝叶斯分类有着坚实的数学基础和稳定的分类效率,同时,分类模型需要估计的参数很少 ...

  9. DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释)、案例应用之详细攻略

    DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释).案例应用之详细攻略 相关文章:DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类 ...

  10. (一)数据结构与算法简介

    数据结构与算法简介 目标 掌握数据结构与算法的理论知识 补齐算法短板 梳理前端与算法结合点,不再纸上谈兵,将算法用于实战 三部曲 理论:数据结构与算法的特点.应用场景等等 刷题:做一些算法题,推荐使用 ...

最新文章

  1. PingCode 是用来干嘛的?
  2. R语言绘制空白图实战
  3. all index range ref eq_ref const system 索引type说明
  4. Spring实战之三:高级装配
  5. 通过wsdl2java工具生成客户端段代码(wsdl2java -p cn.com.css.misps.graph.webservice.impl -d F:\src -all http://10.)
  6. Codeforces344_C(数学思维)
  7. [国家集训队]航班安排 (最大费用最大流)
  8. Matlab英文操作系统下中文乱码的解决方案
  9. Sqlserver内存管理:限制最大占用内存(转载)
  10. 【elasticsearch 】logstash elasticsearch output plugin 的阻塞问题
  11. JAVA蓝桥杯: 01字串
  12. rendering omni shadow in one pass.
  13. 控制上网!!!(版本之1.1) 当前时间从网络取得。
  14. 8款受欢迎的代码编辑器,你值得拥有!
  15. 小米线刷 mysql_小米6刷机(线刷)第三方ROM——LineageOS
  16. 如何创建VARCHART XGantt筛选器
  17. 沧海云帆服务器哪里的,11月沧海云帆大区天涯合璧 合服服务器公告
  18. ms project2010项目管理软件使用技巧总结
  19. 如何把PPT幻灯片压缩到最小
  20. Hive -- Hive面试题及答案(3)

热门文章

  1. 【预测模型】Gompertz 曲线方程预测
  2. 苹果iOS设备解锁软件:iToolab UnlockGo
  3. PS为美女换服装颜色及换头发颜色
  4. FF的插件iMacros简单交流
  5. jedate限制开始日期不能大于结束日期
  6. AXure RP8 破解码
  7. 计算机网卡ip怎么设置,怎样为网卡配置ip地址 电脑给网卡设置IP地址的方法有哪些...
  8. html怎么播放webm视频格式,WEBM格式的视频文件,怎么样播放
  9. scrt远程连接工具怎么切换窗口
  10. iwebAx产品家族之iweb SNS v0.6体验版--不错的开源软件~~