-
计算复杂网络度相关系数和平均聚类系数的求解.rar
2020-05-06 15:47:46matlab程序用于计算复杂网络度相关系数和平均聚类系数的求解。适合于编程新手使用。大家可以使用,用于社交网络中复杂网络的计算。 -
复杂网络度分布计算的Matlab程序
2012-05-25 16:37:24这个Matlab程序是一个对复杂网络的度分布进行计算的程序,用于复杂网络的分析。 -
【复杂网络】复杂网络度的不相关性(Degree-uncorrelated network)标注笔记
2019-06-28 18:55:02度相关、不相关网络的理解(不一定正确) 社交网络中,你刚注册,系统给你推荐了小明,你关注小明的概率和小明一点关系都没有,纯粹是你为了完成任务随便选了个人关注。因为你关注小明的概率随机,只是由你自己的...【笔记】
度相关、不相关网络的理解(不一定正确)
社交网络中,你刚注册,系统给你推荐了小明,你关注小明的概率和小明一点关系都没有,纯粹是你为了完成任务随便选了个人关注。因为你关注小明的概率随机,只是由你自己的关注总数(节点出度)决定,和对方的关注数和被关注数无关。这个网络就是度不相关网络。
你已经玩社交网络很久,系统根据你的兴趣给你推荐小明,你关注小明的概率和小明是不是大V有很大关系(假设大V发文内容有吸引力)。因为你关注大V的概率由你的关注总数,和大V的粉丝数共同决定。这个网络就是度相关网络。
同理,换成无向网络,就没有出度相关性和入度相关性的区分,统一称为度相关性。
同配、异配网络
研究表明,真实世界网络中节点之间的连接选择并不是均等的,而是存在明显的偏好.连接偏好导致网络中节点与节点之间的连接存在某种相关性,Newman根据复杂网络节点之间这种连接相关性,提出同配(assortativity)和异配(disassortativity)概念来区分节点之间的这种连接偏好,并利用匹配系数来量化节点之间的连接。
所以,复杂网络节点的异质性,是对节点分布均匀情况的一种度量。节点倾向于连接有相似度的节点,则构成同配网络;高度节点和低度节点也有一定概率连接,则构成异配网络。网络异配程度测量。
度的0阶、1阶、2阶分布特性
学习来源:https://wenku.baidu.com/view/945731ffb7360b4c2f3f6486.html
以下为两个文献矛盾之处,二者有一个是错误的:因为k’和<k>在分子还是分母的位置明显反了。
来源1:复杂网络基础理论(正确)
来源2:复杂系统与复杂理论(错误)
-
复杂网络度分布图的matlab编程代码
2012-03-15 22:33:36复杂网络聚类系数的matlab编程代码,将复杂网络存储为矩阵,再对其matLab编程,可得到度分布图 -
关于复杂网络度分布计算的Matlab程序
2015-04-14 09:51:53function [DeD,aver_DeD]=Degree_Distribution(A) | 错误: 此上下文中不允许函数定义。 需要导入数据吗? -
复杂网络节点度及度分布的MATLAB代码.rar
2019-05-14 09:46:401)Degree_Distribution.m -- 复杂网络度分布计算的Matlab程序,这个Matlab程序是一个对复杂网络的度分布进行计算的程序,用于复杂网络的分析。 2)复杂网络节点度及度分布的MATLAB代码.txt -- 复杂网络节点度和度... -
复杂网络的度分布研究
2010-06-03 19:50:36对复杂网络的度分布进行详细研究,着重于度分布指数与网络拓扑结构的理论分析,并有实例验证,是复杂网络度分布研究中难得的经典文献,很有价值,值得学习... -
基于两步度的复杂网络级联故障
2021-02-23 22:49:57对于无标度网络,我们发现平均两步度随着度分布异质性的增加而增加,这表明平均两步度可用于测量复杂网络度分布的异质性。 另外,在给定节点平均度的条件下,我们可以通过最大化平均两步度来设计对随机故障具有最佳... -
复杂网络节点度和度分布计算的MATLAB代码
2018-10-04 15:01:13用来计算复杂网络的节点度和度分布以及度的累积概率分布(记得把矩阵内容换成自己的哦) -
复杂网络节点重要度评估
2013-01-17 15:53:27关于复杂网络的节点重要的评估,主要是几个重要度的评估方法 -
基于复杂网络节点集中度和分散度的无参数社区检测方法
2021-02-25 09:22:13基于复杂网络节点集中度和分散度的无参数社区检测方法 -
MATLAB源码集锦-复杂网络中度分布优化算法程序
2021-02-14 21:48:16MATLAB源码集锦-复杂网络中度分布优化算法程序 -
度-度相关性 复杂网络同配系数
2015-05-15 20:47:14matlab函数求度-度相关性,也就是同配网络当 r > 0 度-度正相关 assortativeness,当 r 度-度负相关 disassortativeness。 -
复杂网络可视图建网 度分布
2012-03-06 16:22:34利用可视图算法对时间序列建网,得到复杂网络并且计算得到其度分布 -
复杂网络 基本参数计算,度分布
2013-03-22 16:21:08计算复杂网络的相关特性,比如,度,平均距离,最短路 -
复杂网络
2018-10-28 16:31:28文章目录复杂网络复杂网络基本概念平均路径长度聚类系数度与度分布网络拓扑基本模型及其性质规则网络全局耦合网络最近邻耦合网络星型耦合网络随机图(ER随机图)小世界网络模型WS小世界模型NW小世界模型小世界网络的...文章目录
复杂网络
复杂网络基本概念
平均路径长度
两个点和之间的距离定义为连接这两个节点的最短路径上的边数。
网络的平均路径长度定义为任意两个节点之间的距离的平均值,即:
其中,为网络节点数。一个含有个节点和条边的网络的平均路径长度可以用时间量级为的广度优先搜索算法来确定。
网络的平均路径长度也称为网络的特征路径长度。
聚类系数
在你的朋友关系网络中,你的两个朋友很可能彼此也是朋友,这种属性称之为网络的聚类特性。
在网络中的节点有条边和其他节点连接,即有个邻居节点。在这个邻居节点之间最多可能有 条边,而这个节点之间实际存在的边数和总的可能的边数 之比就定义为节点的聚类系数,即:
简单描述即是:
三元组包含三角形,三元组两种形式为:整个网络的聚类系数就是所有结点i的聚类系数的平均值。
度与度分布
度是单独节点的属性中简单而又重要的概念,分为出度和入度。直观上,一个节点的度越大,那么这个节点在某种意义下越重要。网络中的所有节点的度的平均值成为网络的(节点)平均度,记为,网络中节点的度的分布情况用分布函数来描述。表示一个随机选定的节点的度是的概率。
- 规则图为Delta分布
- 随机网络和小世界网络为近似Poisson分布
- 指数分布(暂未知是哪种网络!)
- 无标度分布,即幂律分布
无标度分布即是分布函数满足无标度条件:
当满足这个条件是必定有:(这里假设 )
证明见《复杂网络理论及其应用》中P12。幂指数一般为,绝大多数节点的度相对很低,只有少量节点的度相对很高,因此这类网络为非均匀网络,那些度相对很高的节点成为网络的集线器(hubs)。
网络拓扑基本模型及其性质
规则网络
全局耦合网络
构成:任意两个点之间都直接相连接,如下图a所示
平均路径长度:1
最大聚类系数:1
最近邻耦合网络
构成:每个节点只和它周围的邻居节点相连,一般具有周期边界条件的最近邻耦合网络包含N个围成一个环的点,如下图b所示,每个节点与它最近的4个节点相连
K:最近邻的个数,图b中为4
N:节点的数目
聚类系数为:
平均路径长度为:
星型耦合网络
构成:一个点为中心点,其他点与这个中心点直接连接,如下图c所示
聚类系数为:
平均路径长度为:
总体而言,这三种规则网络在很理想的情况下进行建模,很大程度上无法反映真实网络世界情况,是复杂网络研究中最基本的模型,不过有必要对他们的三要素进行理解与学习。
在人工构建的网络中,P2P为完全耦合网络,C/S为星型网络模型,路网在一定程度上可以认为是最近邻耦合模型(这个是自己想的)。
随机图(ER随机图)
构成:假设有大量的纽扣()散落在地上,并以相同的概率给每对纽扣系上一根线,这样便可以得到一个有个点,约条边的ER随机图实例。
性质存在的定义:如果当时产生了一个具有性质Q的ER随机图的概率为1,那么就称几乎每一个ER随即图都具有性质Q。
ER随即图的许多性质都是突然涌现的。比如当概率大于某个临界值,那么几乎每一个图都是连通的。
平均度:
平均路径长度:。在ER图中随机选择一个点,网络中大概有个其他的点与该点之间的距离等于或者非常接近于,因此,变换一下形式即得原式。这种平均路径长度为网络规模的对数增长函数的特性就是典型的小世界特征。
聚类系数:,这意味着大规模的稀疏ER随机图没有聚类特征。
ER图又称为“Poission随机图”,固定ER随机图的平均度不变,则对于充分大的N,由于每条边的出现与否都是独立的,ER随机图的度分布可以用Poission分布来表示,即:
小世界网络模型
考虑到规则的最近邻耦合网络具有高聚类特性,但是平均路径很大,不是小世界网络,而ER随机图有较小的平均路径长度,但是不具备高聚类特性。将这两者的性质结合,即可得小世界网络模型。
WS小世界模型
构造算法:从最近邻耦合网络这个规则网络开始,将它的边以概率进行随机化重连,一个节点固定,另一个节点随机选择。并保证任意两个不同节点之间至多一条边,节点不能有边与自身相连。到的过程即是从完全规则网络到完全随机网络的过程。
聚类系数:
平均路径长度(目前暂无精确解析表达式,利用重正化群方法可以得到如下公式):
其中为一普适标度函数,满足:
后来,基于均场方法有如下表达式:
度分布:由于每个节点有个邻居节点,在随机化重连的过程中,对于每个节点而言,有条边是不会离开该节点的,因此,当时,,当时,分布如下:
KaTeX parse error: No such environment: equation* at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲*̲}̲ P(k)= \sum_{n=…
WS小世界模型构造方式中的随机化过程可能破坏网络的连通性,于是:NW小世界模型
构造算法:从最近邻耦合网络这个规则网络开始,将它的边以概率进行随机化加边。并保证任意两个不同节点之间至多一条边,节点不能有边与自身相连。对应原始最近邻耦合网络,而对应全局耦合网络。
聚类系数:
平均路径长度(同WS小世界模型):
其中为一普适标度函数,满足:
后来,基于均场方法有如下表达式:
度分布:由于每个节点至少有个邻居节点,因此,当时,,当时,分布如下:
KaTeX parse error: No such environment: equation* at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲*̲}̲ P(k)= C_{N}^{k…
当足够小且足够大时,NW小世界网络本质上等同于WS小世界网络。小世界网络的小波分析
见《复杂网络理论及其应用》中P23。
大概就是利用小波变化,在一个粗化的状态下,观察网络的统计特性,进而研究在粗化状态下,低频区间所展现出来的网络特性,即网络的平均路径长度以及聚类系数。
无标度网络模型(重点)
基本性质
ER随机图和WS小世界模型的一个共同特征是度分布近似为Poisson分布,这样度基本上存在于平均度峰值附近,当时,度为的节点几乎不存在。而许多现实生活中的网络,如Internet、WWW、新陈代谢网络等的连接度分布函数具有幂律形式,由于这类网络的节点的连接度没有明显的特征长度(比如平均度),因此,称之为无标度网络。
最初是的无标度网络模型:BA无标度网络,通过考虑现实情况下,网络的增长特性(每天都有新的节点和边加入)和优先连接特性(新的节点更加倾向于与那些高度节点相连接,“富者更富”“马太效应”)。该部分为我目前的研究重点。
**BA无标度网络构造算法:**从一个具有个节点的网络开始,每次加入一个节点并连接到个已存在的节点上,当然,必须满足。在连接时,一个新的节点与一个已经存在的节点之间的连接概率与节点的度和所有其他节点的度关系如下:
平均路径长度:
与一个量级,表明该网络具有小世界特性聚类系数:
:每次一个新的节点与个已经存在的节点连接:经过步,即总共加入个节点,最后共有个节点,大概条边
与ER随即图类似,当网络规模充分大时,BA无标度网络不具有明显的聚类特征
度分布:
对于无标度网络的度分布研究主要有三种方法:连续场理论,主方程法,速率方程法。
主方程法的结果:
定义为在时刻记录的节点在时刻的度恰好是的概率。在BA模型中,当一个新节点加入到系统中来时,节点的度增加的概率为 (根据前文,可以推导出来),否则该节点的度保持不变。那么有:
网络的度分布为:
它满足如下递推方程式:
从而可得BA网络的度分布函数为:
:每次一个新的节点与个已经存在的节点连接:随机取一个节点,度为的概率
表明:BA无标度网络的度分布函数可以由幂指数为3的幂律函数近似描述
缺陷:BA无标度网络的幂指数固定为3
鲁棒性与脆弱性
见《复杂网络理论及其应用》中P29。
无标度网络对随机故障策略,即随机移除一些点,有很高的鲁棒性;对蓄意攻击策略,即移除网络中部分度最高的节点,表现得非常脆弱。其中表现情况以整个图的连通性为标准。
鲁棒但又脆弱是复杂系统的最重要和最基本的特征之一。
Broder等人研究了更大规模WWW子网络的鲁棒性。他们发现只有删除所有度大于5的节点才能完全破坏WWW的连通性。这其实是因为WWW具有高度倾斜的度分布,度数大于5的节点在整个网络中所占的比例还是很小的。(这个发现以及相关的具体数值的研究,可能对我的研究有帮助)
适应度模型
BA模型只能生成度分布的幂律指数固定为3的无标度网络,而各种实际复杂网络的幂律指数则不甚相同,且大多属于2到3的范围内。
实际网络常常还具有一些非幂律特征,如指数截断,小变量饱和等。
在BA无标度网络的增长过程中,节点的度也在发生变化并且满足如下幂律关系(流式处理中,应该很有用):
:为第个节点在时刻的度:为第个节点加入到网络中的时刻
则可以有一个很直观的认识:就是越老的节点具有越高的度,在完全随机的情况下,这一点基本成立。
适应度模型构造算法:在原有的BA模型上,为每个节点增加了一个适应度权值
从一个具有个节点的网络开始,每次加入一个节点并连接到个已存在的节点上,当然,必须满足,每一个节点的适应度按照概率分布$ \rho ( \eta )i\Pi_{i}ik_{i}\eta_{i}$和所有其他节点的度关系如下:
-
基于资源传输匹配度的复杂网络链路预测方法
2021-01-13 20:42:49为了解决基于资源传输的链路预测方法忽略节点间匹配度对资源传输过程影响的问题,提出了一种基于资源传输匹配度的复杂网络链路预测方法。首先,对资源传输路径上的2个端点进行详细分析,提出任意节点间匹配度的量化... -
R语言学习-复杂网络中心度计算
2017-07-18 16:23:46中心度概念说明: 指标名称 概念 比较 实际应用 点度中心度 在某个点上,有多少条线 强调某点单独的价值 ★作为基本点的描述 接近中心度 该点与网络中其他点距离之和的倒数,越大说明越在...中心度概念说明:
指标名称 概念 比较 实际应用 点度中心度 在某个点上,有多少条线 强调某点单独的价值 ★作为基本点的描述 接近中心度 该点与网络中其他点距离之和的倒数,越大说明越在中心,越能够很快到达其他点 强调点在网络的价值,越大,越在中心 ★★基本描述,用户价值 中间中心度 代表最短距离是否都经过该点,如果都经过说明这个点很重要,其中包括线的中心度 强调点在其他点之间调节能力,控制能力指数,中介调节效应 ★★推荐算法,用户的控制力 特征向量中心度 根据相邻点的重要性来衡量该点的价值。首先计算邻接矩阵,然后计算邻接矩阵的特征向量。 强调点在网络的价值,并且比接近中心度厉害的是,点价值是根据近邻点来决定的 ★★★推荐算法,用户潜在价值 R语言实现与验证:
library(igraph) init.igraph<-function(data,dir=F,rem.multi=T) { labels<-union(unique(data[,1]),unique(data[,2])) ids<-1:length(labels);names(ids)<-labels from<-as.character(data[,1]);to<-as.character(data[,2]) edges<-matrix(c(ids[from],ids[to]),nc=2) g<-graph.empty(directed = dir) g<-add.vertices(g,length(labels)) V(g)$label=labels g<-add.edges(g,t(edges)) if (rem.multi) { E(g)$weight<-count.multiple(g) g<-simplify(g,remove.multiple = TRUE, remove.loops = TRUE,edge.attr.comb = "mean") } g } #init.igraph参数说明: #data,是两列关系数据,只能两列,而且要同等长度; #dir,逻辑值,T代表有向图,F无向图; #rem.multi,逻辑,T删除重复变量并更新线权重weight,F不删除并且线权重为1。 dat <- data.frame(node1 = c("A","A","A","B","B","C","E"),node2 = c("B","C","E","D","F","E","F")) dat node1 node2 1 A B 2 A C 3 A E 4 B D 5 B F 6 C E 7 E F g <- init.igraph(dat,dir=F,rem.multi=T) g IGRAPH U--- 6 7 -- + attr: label (v/c) + edges: [1] 1--2 1--3 1--4 2--5 2--6 3--4 4--6 #看着跟原数据对不上,其实是函数根据数据出现顺序对其进行了重编码,A-1,B-2,C-3,E-4,D-5,F-6 #点度中心度——点出度、点入度、相对点中心度、点度频率 degree(g,mode="total") #mode=in点入度;out=点出度;total点度中心度,三者统称绝对点中心度 [1] 3 3 2 3 1 2 #结果对应的是ABCEDF的度数 degree(g,normalized = T) #相对点中心度=绝对点中心度/最大度数 [1] 0.6 0.6 0.4 0.6 0.2 0.4 #但根据洒家多次试验,实际除以的数是(结点总数-1),在这里即5 degree.distribution(g) #点度频率每种点度数的个数/所有点个数(比如(1,2,4,4)点度数分别为1,1,0,2,密度是1/4,1/4,0/4,2/4) [1] 0.0000000 0.1666667 0.3333333 0.5000000 #分别对应度数为0,1,2,3的点个数/结点总数,在此为(0,1,2,3)/6 #接近中心度 #该点与网络中其他点距离之和的倒数,越大说明越在中心,越能够很快到达其他点。与点度中心度不同的是,点度更强调某点的相对价值;而接近中心度是某点在网络的价值。 closeness(g,mode="in") #mode="out"是有向图,默认是无向图为in,设置normalized = T为相对接近中心度 [1] 0.14285714 0.14285714 0.11111111 0.12500000 0.09090909 0.12500000 #结果对应的是ABCEDF的接近中心度 closeness(g,vids=which(V(g)$label=="E")) #仅输出指定结点E的接近中心度 [1] 0.125 #中间中心度——点的中心度以及线的中心度 #点的中心度,代表最短距离是否都经过该点,如果都经过说明这个点很重要。也是强调点与网络的价值,而且更能说明转发、中介的情况 betweenness(g,normalized = T) #点的中心度:normalized = T代表相对数,默认值为F为绝对值,mode有Out和in分别代表有向和无向 [1] 0.30 0.45 0.00 0.15 0.00 0.10 edge.betweenness(g) #线的中间中心度 [1] 5.5 3.0 2.5 5.0 3.5 2.0 3.5 #点的特征向量中心度——evcent #如果某人四周都是大牛人,那么这个人也很牛逼,这个方法是根据相邻点的重要性来衡量该点的价值。首先计算邻接矩阵,然后计算邻接矩阵的特征向量 evcent(g,scale = F)$vector ##scale=F没有归一化,T代表输出数据进行标准化,mode有Out和in分别代表有向和无向 [1] 0.5162516 0.4075861 0.4010975 0.5023290 0.1604996 0.3583071 #page.rank特征向量中心度,这个是谷歌开发的,对于一些搜索的竞价排名做的指标。原理跟特征向量中心度差不多 page.rank(g)$vector [1] 0.20466978 0.21836231 0.14090543 0.20440819 0.08686932 0.14478497 #简单网络图形展示 plot(g,layout=layout.grid)
参考资源:
#SNA-社会关系网络 R语言实现专题(基础篇)(一) http://blog.csdn.net/sinat_26917383/article/details/51443846
#SNA-社会关系网络—igraph包(中心度、中心势)(二) http://blog.csdn.net/sinat_26917383/article/details/51443846
#SNA-社会关系网络—igraph包(社群划分、画图)(三) http://blog.csdn.net/sinat_26917383/article/details/51444536 -
复杂网络中最经典的BA无标度网络模型matlab源程序并且有求解度的程序代码
2018-03-08 16:47:19复杂网络中最经典的BA无标度网络模型matlab源程序并且有求解度的程序代码,非常的实用,是研究复杂网络必备的网络模型。 -
论文研究-复杂网络局部社区挖掘的节点接近度算法.pdf
2019-09-13 08:37:08为了准确、快速地发现大规模复杂网络中的局部社区,提出了一种基于节点接近度的局部社区发现算法。该算法以最大度节点作为起始节点,利用节点接近度和局部社区Q值不断搜索其邻居节点,将接近度最大的节点加入初始... -
复杂网络中聚类系数与度度关联系数的matlab
2009-10-27 23:15:08本程序用于求在网络的邻接矩阵给定的情况下的网络的聚类系数和度度关联系数的求法 -
论文研究-复杂网络中节点重要度评估的节点收缩方法.pdf
2019-09-19 17:28:03论文研究-复杂网络中节点重要度评估的节点收缩方法.pdf, -
论文研究-基于谱方法的复杂网络中社团结构的模块度.pdf
2019-09-20 17:44:17论文研究-基于谱方法的复杂网络中社团结构的模块度.pdf, 现实中的大量复杂网络表现出明显的社团结构, 模块度是衡量网络社团结构划分的重要指标函数, 但最常用的NG模块度... -
模块度Q——复杂网络社区划分评价标准
2016-07-27 18:35:25对复杂网络进行社区划分,需要有一些评价指标,来评判算法对网络划分结果的好坏优劣。如果我们预先知道网络的真实划分结果,那么我们可以用NMI(归一化互信息)去衡量算法划分结果和真实结果的重合程度,这个会在...对复杂网络进行社区划分,需要有一些评价指标,来评判算法对网络划分结果的好坏优劣。如果我们预先知道网络的真实划分结果,那么我们可以用NMI(归一化互信息)去衡量算法划分结果和真实结果的重合程度,这个会在以后的文章中具体介绍。大多数情况下,我们是不知道网络的真实划分的,尤其是对于大型网络来说更是如此,复杂网络的命名明确的说明了这种现实情况。但是我们依然有方法可以量化或评判我们的社区划分水平,也就是今天要介绍的模块度(Modularity)概念,也称Q值。
从网上看到其他同学写的博客,首先对这方面介绍的不多,仅有的一些文章也是有好有坏,所以决定自己梳理一下,也是对其他人的分享。资料
这次,先贴链接:
wiki:https://en.wikipedia.org/wiki/Modularity_(networks) 一定要搜英文的,中文版的并没有什么信息量。
原定义作者论文:Finding and evaluating community structure in networks (1)
Modularity and community structure in networks (2)
一篇认为介绍的比较好的文章:Community Detection – Modularity的概念
建议是:看一下那篇博客,再看一下wiki,然后看一下原作者论文定义。
当然,也可以只看我的文章~O(∩_∩)O哈哈~。
之所以选择那篇博客是因为该作者从历史演进角度介绍了模块度概念的由来及变化,从方法论上来说,认识历史可以更好的认识现在,这几乎可以套用在对任何事物的认识上面。。。扯远了
定义
我这里大概以通俗的语言翻译一下,严格的定义还是要看论文的,
定义一:
最早由Newman在文章(1)中给出的模块度的概念:
Consider a particular division of a network into k communities. Let us define a k ×k symmetric matrix e whose element eij is the fraction of all edges in the network that link vertices in community i to vertices in community j.
假设网络被划分为k 个社区,那么定义一个k×k 的对称矩阵e ,它的元素eij 表示社区i 和社区j 之间的边的数量。
The trace of this matrixTre=∑ieii gives the fraction of edges in the network that connect vertices in the same community, and clearly a good division into communities should have a high value of this trace.
矩阵的迹Tre=∑ieii ,也就表示了在相同社区内节点之间的边集合。显然,社区划分的好,也就是社区内部节点之间联系密集,那么该值就越高,这与我们通常对社区的认识是一致的。
作者也指出,仅通过矩阵的迹这个值不能完全反应社区结构,因为如果把网络仅划分成1个社区的话,那么会导致Tre=1 。So we further define the row (or column) sums
ai=∑jeij , which represent the fraction of edges that connect to vertices in communityi 。
因此又定义了一个值ai=∑jeij ,表示所有连接到社区i 的边数量。
于是,作者定义了第一版模块度的概念:
Q=∑i(eii−a2i)=Tre−||e2||
||x|| 表示矩阵x 的所有元素的和。
简单展开一下上面的公式会更清晰:
Q=∑i(eii−a2i)=∑ieii−∑ia2i=Tre−||e2||(1) 例如下面的网络,10个节点,12条边,被分成3个社区:
根据上述定义生成的社区矩阵为:
模块度Q=3+3+412−(72×12)2−(72×12)2−(102×12)2=0.49 定义二:
再来看第二版定义:
Newman在论文(2)中更新了模块度Q的定义,增加了矩阵的表达,感觉更不直观了。
个人感觉从wiki里的定义理解更清楚一些,下面是一些定义及推导:
Modularity is the fraction of the edges that fall within the given groups minus the expected such fraction if edges were distributed at random.
模块度 = (落在同一组内的边的比例) 减 (对这些边进行随机分配所得到的概率期望)
为了说明上述公式,对定义如下内容:
假设网络有n 个节点,有m 条边,节点v 的度表示为kv 。
将网络的邻接矩阵表示为A ,Avw=0 表示节点v 和w 之间没有边,Avw=1 表示有边。
定义变量s ,svw=1 表示v 和w 属于同一社区,svw=−1 表示不在同一社区,那么可以用δvw=12(svw+1) 量化表示v 和w 是否在同一社区,如果是则等于1,不是则等于0.
那么上述模块度定义就可以表示为:
Q=12∑vwAvwmδvw−(对这些边进行随机分配所得到的概率期望)
∑vwAvwδvw/m 表示在同一社区内的边的数量占所有边数量的比例, 乘以1/2 ,是因为对每条边计算过两次。
以上这部分计算很清楚,下面主要看那个期望值如何计算。
这里面用到了Configuration Models,大体意思就是,对网络的边进行随机分配,需要将每条边切断一分为二,切断的点我们称作末梢点(stub),这样m 条边就会产生ln=2m=∑nv=1kv 个末梢点,随机的将这ln 个末梢点进行连接,包括同一节点拥有的末梢点的自连接。这样可以保持每个节点原有的度不变的条件下,可以得到一个完全随机网络。
在该随机网络下,任意两点v、w 连接边数的期望值是:expvw=kvkwln=kvkw2m
因此,节点v 和w 的实际边数与随机网络下边数期望之差为:Avw−kvkw2m
模块度最终可表示为:Q=12m∑vw(Avw−kvkw2m)δvw(2)
定义eij 表示连接社区i 和j 的边的总数,eij=∑vwAvw2mδviδwj ,ai 表示连接 社区i 的边的总数,ai=∑jeij=ki2m ,那么模块度可以表示为:Q=12m∑vwAvwδvw−12m∑vwkvkw2mδvw=∑i=1c(eii−a2i)
可以看到,虽然初始含义不同,但经过推导,模块度的公式(1)和公式(2)具有一致的表现形式,而且最终的结果非常简单。
应当注意,模块度的取值范围为:[−1/2,1) ,有可能得到负值。
代码实现
虽然推导过程非常复杂,但是最终形式非常简单,代码自然也清晰易懂。
#python2.7 #type(graph) = networkx.Graph def Q(graph, cluster): e = 0.0 a_2 = 0.0 cluster_degree_table = {} for vtx, adj in graph.edge.iteritems(): label = cluster[vtx] for neighbor in adj.keys(): if label == cluster[neighbor]: e += 1 if label not in cluster_degree_table: cluster_degree_table[label] =0 cluster_degree_table[label] += len(adj) e /= 2 * graph.number_of_edges() for label, cnt in cluster_degree_table.iteritems(): a = 0.5 * cnt / graph.number_of_edges() a_2 += a * a Q = e - a_2 return Q
-
复杂网络分析——模块度计算
2014-05-10 09:05:04Modularity Measure(模块化度量值),由Newman等人提出,是目前常用的一种衡量网络中社区稳定度的方法。 如上图所示,我们将这个图以图中两根横线为方式进行划分,共得三个社区(community),其中红色 -
复杂网络RR随机规则网络
2019-02-21 15:43:15复杂网络中随机规则网络的C语言实现,RR网络也就是Random Regular network,其中网络的平均度设定为8. -
igraph 算网络指标_复杂网络抗毁性的谱测度和自然连通度及R计算
2020-11-21 15:25:48复杂网络抗毁性的谱测度和自然连通度上周有同学咨询了一篇文献,问能帮忙分析下该文献中的微生物网络稳定性推断方法是怎样应用的吗?(Shi et al, 2020)然后就抽时间了解了下。这种方法叫复杂网络的抗毁性测试,用到... -
networkx中求解平均度_复杂网络分析之python利器NetworkX
2021-01-04 19:17:08点击蓝字 关注我们1networkx介绍networkx在2002年5月产生,是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。networkx支持... -
复杂网络作业四:第三题——随机图、小世界网络和真实网络的度分布
2020-10-17 01:14:203. 随机图、小世界网络和真实网络的度分布 (1)ER图:生成n=5242个节点以及m=14484条边的随机图。可以自己写代码,也可以使用SNAP或Networkx函数。 (2)SW随机网络,从n=5242个节点的环形网络开始,加上节点连成...
-
RabbitMQ讲义.pdf
-
元素周期表-three.js实战详解
-
项目经理成长之路
-
docker commit方式制作nginx+php-fpm镜像(源码编译)nginx-1.18.0.tar.gz + php-7.4.15.tar.gz
-
RapidScada从入门到精通
-
2021 年该学的 CSS 框架 Tailwind CSS 实战视频
-
NFS 实现高可用(DRBD + heartbeat)
-
git maven.mp4
-
win_Eagle 1.8.2.zip
-
暗影骑士擎黑苹果efi.zip
-
微信接口API整合.rar
-
使用forEach 加载出来树节点
-
高压H
-
用于百瓦级的连续激光功率计的研制
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
html2canvas.js
-
QReplaceDicomInfo.rar
-
NFS 网络文件系统
-
HTTP1.1HelpFile-English
-
python正则获取网页标签里面的内容