网络社区划分的算法分类
单目标优化——模块度最优化算法
1.基于K派系过滤的社团检测(基于物理模型)
相关基础概念:
K-派系(clique):网络中包含K个节点的全耦合子图,即K个节点中的任意两个节点之间都是相互连接的。
相邻:若两个K-派系中有K-1个公共节点,称这两个K-派系相邻。
连通:若一个K-派系可以通过若干个相邻的K-派系到达另一个K-派系,称其彼此连通。
K-派系社团:所有彼此连通的K-派系构成的集合,称为一个K-派系社团。
对上述网络进行K-派系过滤划分:
(1)在给定网络中找出所有规模为k=3的团,具体包括{1,2,3},{1,3,4},{4,5,6},{5,6,7},{5,6,8},{5,7,8},{6,7,8}。
(2)构建团图。若两个k团共享k-1即2个节点,那么将其连接起来。
连接1:{1,2,3},{1,3,4} 共享节点{1,3}。
连接2:{4,5,6},{5,6,7},{5,6,8},{5,7,8},{6,7,8}。
(3)每个连接的部分形成一个社区,得到两个社区C1={1,2,3,4},C2={4,5,6,7,8},其中节点4同时属于两个社区,因此为重叠节点。
2(聚合思想的算法)
2.1)基于fastgreedy算法的社团检测(模块度增量)
该算法的三个名称:CNM=fastgreedy=fastmodularity
算法原理:该算法以贪婪地最大化图的模块度的方式将单个节点合并到社区中。 可以证明,如果没有合并可以增加当前的模块度,则算法可以停止,因为无法进一步增加.
(1) 初始时将每个节点看作一个社团,每个社团中只有一个节点。
(2) 计算任意两社团合并对应Q值的增量,选择使Q值增加幅度最大的社团进行合并。
(3) 重复步骤(2)直到任意两社团合并都不能使Q值继续增加,Q值达到峰值。
该算法的性能优势:据说该算法在稀疏图上几乎以线性时间运行。
该算法存在的问题:Q最大值不一定是全局最优,可能是局部最优。
2.2)快速模块度优化算法——BGLL算法*
2.3)MSG-VM算法*
(直接寻优算法)
极值优化EO算法*
主要思想类似于生物系统演化中的断续平衡问题,之后用离散和连续的NPC问题,解决如图分割、伊辛模型、原子最优团簇结构等问题。
3.基于GN算法的社团检测(切割最大边介数)(分裂思想的算法)
算法基本思想:如果两个社区只是由少数几条边连接,那么两个社区之间的路径都要经过这几条边中的一条,因此边介数(edge betweenness)会很大。 利用边介数的概念,通过不断地切断边介数最大的边,获得层次性的社团结构。
算法的基本流程:
(1) 计算网络中每条边的边介数;
(2) 找出边介数最大的边,并将其移除;
(3) 重新计算网络中剩余各条边的边介数;
(4) 重复(2)和(3)步,直到网络中所有边都被移除,获得系统树图;
(5) 按照模块度函数Q值最大的原则,对系统树图进行切割,获得社区划分。
4.基于标签传播label propagation的社团检测(标签传染:邻居节点最多标签)
算法基本原理:
1.为网络中每个节点分配一个不重复的标签label。
2.在每次迭代过程中,节点根据其所有邻居节点中出现次数最多的label更新自身label。如果最佳候选label超过一个,则在其中随机选择。
3.具有相同label的节点被归入同一个社区。
算法性能优势:在大多数情况下可以快速收敛。
算法性能缺陷:迭代的结果有可能不稳定,尤其在不考虑连边的权重时,如果社区结构不明显或者网络规模比较小时,有可能所有的节点都被归入同一社区。
5.基于拉普拉斯矩阵的特征向量Leading eigenvector的社团检测*
算法基本原理:
拉普拉斯矩阵L = 度矩阵(degree matrix)D - 邻接矩阵(adjacency matrix)A
L中最小的特征根总等于0,而L的特征根中0的个数即为无向网络G中社区的个数,因此如果除了最小特征根没有别的特征根为0,则整个网络构成一个整体。
第二小的特征根(或者最小的非零特征根)又叫做代数连通性(algebraic connectivity),其对应的特征向量叫做Fidler vector。
根据Fidler vector特征向量值中元素取值进行社区划分。
6.基于层次聚类multilevel的社团检测(模块度标准)
算法基本原理:
层次聚类为一种自底向上的算法,初始化时定义每个节点归属于一个分离的社区,根据总体社区划分模块度最大化的原则,以迭代的方式最大化每个节点社区移动所带来的局部贡献。
算法基本过程:
(1) 将每个节点当作一个社区。
(2) 基于模块度标准决定哪些邻居应该被合并。经过一次迭代之后,一些社区合并为一个社区。
(3) 每个社区被当作一个节点,对其度和连接信息进行统计,基于统计结果再进行下一次迭代合并。
(4) 重复步骤(3)直到网络社区划分对应的总体模块度不能再增加为止。
7.基于community_optimal_modularity算法的社团检测
8.基于随机游走walktrap的社团检测**
P. Pons 和 M. Latapy 2005年提出了基于随机游走的网络社区划分算法,使用两点到第三点的流距离之差来衡量两点之间的相似性,从而为划分社区服务。
算法具体操作步骤:
1.对网络G的邻接矩阵A按行归一化D.^(-1)*A得到概率转移矩阵(transition matrix)P,D是度矩阵。利用P矩阵的马可夫性质可知,它的t次方的元素Pijt就代表着随机游走的粒子经过t步从节点i到j的概率。
2.定义两点ij间的距离如下:其中t是流的步长,k是某一目标节点。步长t必须恰当选择,因为如果t太小,不足以体现网络的结构特征;如果t太大,则Pijt趋近于与j的度数d(j)成正比,出发点i的拓扑信息被抹去。t经验值为2到5之间。
9.基于community_spinglass算法的社团检测
10.基于infomap的社团检测(推测随机游走粒子,求‘平均流’)
算法核心思想: 好的社区划分要令网络上流的平均描述长度最短。分析有向加权网络的一个好的视角是观察某类实体(货币、能量、信息)在网络上的流动,即使没有实体流动的数据,也可以根据网络的基本结构来推测随机游走粒子的轨迹,然后对得到的“平均流”进行信息编码。对“平均流”描述长度最短的编码机制,就对应着对社区的一种最有效划分。
网络社区划分的算法分类相关推荐
- 计算机网络二分法划分网络,三种经典复杂网络社区结构划分算法研究_GN算法
论文导读::复杂网络是复杂系统的高度抽象.即社区结构特性[3].算法是一种试探优化法[4].算法. 关键词:复杂网络,社区结构,Laplace图谱,Kernighan-Lin算法,GN算法 1引言 现 ...
- 复杂网络社区结构划分方法
复杂网络社区结构划分方法 随着对网络性质的物理意义和数学特性的深入研究,人们发现许多实际网络都具有一个共同性质,即社区结构.也就是说,整个网络是由若干个"社区"或"组&q ...
- 基于社区划分和用户相似度的好友推荐
社交型网络(SNS, Social Networking Services)以六度分割理论[1]为基础,构建好友圈并通过"好友的好友"来无限扩张人脉.社交网络在近几年获得了空前的发 ...
- 标签传播算法_复杂网络社区发现算法汇总
社区发现 这篇文章汇总了一些常见的社区发现概念和算法,包括 Modularity Q Fast Unfolding(Louvain Algorithm) LPA SLPA KL算法 GN算法 社区: ...
- bgll算法 matlab,一种复杂网络社区检测的方法与流程
本发明涉及一种社区检测方法,具体说是一种复杂网络社区检测的方法. 背景技术: 过去几年中已有许多社区检测方法相继提出,其中应用最广泛的是基于模块度的最优化方法.然而,模块度最优化本质上是一个典型的NP ...
- 基于BAS算法实现复杂网络社区发现问题——附python代码
基于智能优化算法的复杂网络社区发现问题 第一章 基于天牛须算法求解复杂网络社区发现问题 文章目录 基于智能优化算法的复杂网络社区发现问题 前言 一.基本天牛须算法 二.关于社区发现 基本问题 总结 前 ...
- 基于GN算法(Girvan-Newman)实现社交网络中社区划分
1 背景 网络中社区结构的研究是了解整个网络结构和功能的重要途经.对于网络中社区结构的研究是了解整个网络结构和功能的重要途经.一般来说,社区结构是大规模网络中普遍存在的基本结构.网络中的顶点可以进行分 ...
- ‘ network communites’(网络社区)(二)(louvain算法实现)
引言: 在(一)中我们学习到了什么是'network communites'(网络社区)及其目标函数Q的求取,接下来我们要说明的是,我们要通过怎样的算法来实现将你的网络分成若干个集群. 一:louva ...
- 社区发现算法python视频_社区发现FN算法Python实现
社区发现FN算法Python实现 算法原理 评价指标 结果对比 源码 2004年,Newman在GN(Girvan and Newman, 2002)算法的基础上,提出了另外一种快速检测社区的算法, ...
- 社区发现FN算法Python实现
社区发现FN算法Python实现 算法原理 评价指标 结果对比 源码 一种高效实现 2004年,Newman在GN(Girvan and Newman, 2002)算法的基础上,提出了另外一种快速检 ...
最新文章
- 程序员如何跟领导提离职_如何跟领导谈加薪,做好这几点,成功谈加薪又不失风度...
- 【干货】深入B端SaaS产品设计核心理念
- FOSCommentBundle功能包:改变样式
- Java基础之集合归总
- 1004 成绩排名 (20 分)(c语言实现)
- vue-cli 3.0 跨域请求代理
- 中国股市低迷的根本原因
- php 整行插入mysql_MySQL的多行插入
- android checkbox 选中事件_挖穿Android第四十九天
- Python在Win10系统的安装和使用配置
- 基于JAVA+SpringBoot+Mybatis+MYSQL的仓库信息管理系统
- spring REST中的内容协商(同一资源,多种展现:xml,json,html)
- 诸葛亮的十堂课:在变局中安身立命,在逆境中找到力量
- Qt C++调用Python,解决线程问题,以及GIL锁的处理
- 【优化分类】基于matlab改进的人工蜂群算法优化SVM分类【含Matlab源码 1833期】
- 虚拟机如何安装wim文件系统镜像
- 抑制背景干扰的行人重识别方法
- linux 相关快捷键
- 波浪下划线怎么设置_如何在word中的文字下面加波浪线
- echarts地图导航飞线与层级穿透
热门文章
- echarts 中国地图——迁徙流向图
- java解析魔兽争霸3录像_《魔兽争霸》的录像,为什么长达半小时的录像大小只有几百 KB?...
- 天堂2单机版服务器时间修改,如何制作最新L2J天堂2单机版源码服务端教程.doc
- java右移位_Java移位运算
- WebAssembly系列2-为什么我们需要WebAssembly—采访Brendan Eich
- CSS(十六)——美化表单实操
- LabVIEW Arduino RS-485智能农业监测系统(项目篇—4)
- 久其报表节点汇总_久其通用数据管理平台常见公式
- 电脑记事本在哪个文件夹
- AD导入原理图库PCB库文件 最强原理图PCB库