louvain算法python_【转载】LOUVAIN算法

louvain算法python_【转载】LOUVAIN算法Louvain 算法来源于文章 2010 年的论文 Fastunfoldin 简称为 Louvian 1 算法原理 Louvain 算法是基于模块度 Modularity 的社区发现算法 该算法在效率和效果上都表现比较好 并且能够发现层次性的社区结构 其优化的目标是最大化整个图属性结构 社区网络 的模块度 其中需要理解的核心点有 模块度

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

算法原理

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

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

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

模块度增量Δ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个:

易于理解

非监督

计算快速

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

louvain算法python_【转载】LOUVAIN算法

Figure 1 Louvain结果示意图1

louvain算法python_【转载】LOUVAIN算法

Figure 2 Louvain结果示意图2

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

参考资料:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222170.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午4:25
下一篇 2026年3月17日 下午4:25


相关推荐

  • centos7配置ip地址

    关于centos7获取IP地址的方法主要有两种,1:动态获取ip;2:设置静态IP地址在配置网络之前我们先要知道centos的网卡名称是什么,centos7不再使用ifconfig命令,可通过命令IPaddr查看,如图,网卡名为ens32,是没有IP地址的1、动态获取ip(前提是你的路由器已经开启了DHCP)修改网卡配置文件vi/etc/sysconfig/netwo…

    2022年4月9日
    48
  • cmd批处理命令~%dp0与~%dpn1的解析

    cmd批处理命令~%dp0与~%dpn1的解析1、最简单的做法是在cmd命令输入:for/?,回车,就能看到详细的解析对一组文件中的每一个文件执行某个特定命令。FOR%variableIN(set)DOcommand[command-parameters]%variable指定一个单一字母可替换的参数。(set)指定一个或一组文件。可以使用通配符。command指定对每个文件执行的命令。…

    2025年12月8日
    6
  • ORAN专题系列-21:主要的玩家(设备商)以及他们各自的态度、擅长领域

    爱立信:是O-RAN重要的成员,也是标准化起草单位之一,他们支持的是O-RAN的智能化和自动化,但他们公开表示抵制O-RAN的开放化,并公开批评过O-RAN政策联盟,抵制中兴和华为的行为。他们虽然反对对前传接口的开放。但处于商业的目的或处于迫于运营商的压力,他们还是使用爱立信的O-DU与富士通的FR1O-RAN为DoCoMo提供了互联互通,他们使用爱立信的O-DU与三星的FR2O-RAN为AT&T提供了互联互通。他们对O-RAN对O-RAN的整体的价格、性能、维护管理、O…

    2022年4月9日
    64
  • LeetCode – Jump Game

    LeetCode – Jump Game

    2021年12月5日
    58
  • N70常用软件大集合

    N70常用软件大集合管理软件[文件管理]SmartFilemanv1.03汉化版[进程管理]AppManv1.04完美简体中文优化MMC绿色版[文件管理]SystemExplorerv1.8汉化版[程序管理]Fexplorerv1.15完美汉化完全版《N70拨号大字体》+《N70解决opera8.5上网一些地方显示口口的字体》英文机N70用的完美中文字体[压缩工具]解压利器zipman2.

    2022年7月11日
    27
  • html浮雕效果代码_css内嵌式代码

    html浮雕效果代码_css内嵌式代码前言最近在看百度地图看到了一个效果,感觉这个效果用在网页上应该蛮赞的,于是就学习了一下。效果图如下:浮雕效果需要用到伸缩盒的知识(flex)flex在chrome是完全支持的,要加-webkit-前缀,其他的浏览器有的支持有的不支持,自己去查css手册,今天主要想讲一下怎么制作出浮雕效果先附上代码:<divclass=”title”>&…

    2025年9月13日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号