网络社区划分算法

合集下载

大规模动态网络的社区发现算法

大规模动态网络的社区发现算法

大规模动态网络的社区发现算法社区发现是网络分析中一个重要的研究领域,目的是发现网络中的子群体,这些子群体可以通过相似性特征或交互行为相互联系。

然而,现实中的网络不仅数量庞大,而且是动态的,社区结构也随时间不断演化。

因此,在大规模动态网络中发现社区结构成为了一项挑战性的任务。

传统的聚类算法在大规模动态网络中会遇到一些问题,例如巨大的计算时间、存储空间和精度。

因此,近年来,一些新的算法和框架被提出来解决这些问题。

在这篇文章里,我们将重点介绍几种主流的大规模动态网络的社区发现算法。

1. 静态方法静态方法是最简单的社区发现算法之一,因为它是针对一个固定的网络进行计算。

其中有一个经典的聚类算法叫作Louvain算法。

这种算法使用一种称为“模块度”的指标来评估社区结构的质量,并且能够搜寻整个社区空间以找到最优和最稳定的社区划分,得到了广泛的应用。

然而,静态方法在处理大规模动态网络时并不是特别有效。

因为在动态网络中,每时每刻都会有新的节点和边加入,社区结构也随之不断演化。

因此,需要一种可以处理动态网络的算法。

2. 动态网络的增量方法在动态网络中,边的加入和节点的加入不可避免。

因此,增量聚类算法是一种直接处理动态网络中的方法。

其中有一种增量聚类算法叫做IGF(Incremental Growing of Finite Increment)。

这种方法首先将每个节点作为一个独立的社区,然后在每个时间步中重新分配每个节点的社区,直到达到最优的社区结构。

3. 基于社区结构演化的方法社区结构是动态网络中最为重要的部分,也是最具相似性的部分。

因此,在社区结构变化时,是有可能用过去的社区结构来预测未来的社区结构。

其中有一种基于社区结构演化的方法叫做COSMIC(Community Structure Monitoring and Identification in Changing networks)。

该方法会在整个网络结构上进行社区划分,并利用网络演化过程中的结构相似性来维护社区的一致性。

louvain算法例子

louvain算法例子

louvain算法例子Louvain算法是一种用于社区发现的图算法,它能够将一个大的复杂网络分解为多个较小的子图,每个子图代表一个社区或群组。

本文将以Louvain算法为例,介绍该算法的原理和应用。

Louvain算法是由Vincent Blondel等人于2008年提出的。

它基于图的模块度(modularity)的概念,通过不断优化模块度的方法,将网络划分为多个社区。

模块度是一种衡量网络分割质量的指标,它表示网络中节点之间的连接程度与预期连接程度之间的差异。

Louvain算法的基本步骤如下:1. 初始化:将每个节点视为一个社区,计算网络的初始模块度。

2. 迭代优化:对于每个节点,将其移动到相邻社区中,计算移动后的模块度增量。

选择增量最大的移动,将节点移动到对应的社区中。

3. 合并社区:将相邻的节点所在的社区合并为一个新的社区,计算合并后的模块度。

4. 重复迭代:重复步骤2和步骤3,直到模块度不再增加或迭代次数达到预设值。

Louvain算法的优点在于它的高效性和可扩展性。

该算法能够在大规模网络上快速找到社区结构,并且能够处理具有数百万甚至数十亿节点的网络。

它的时间复杂度为O(nlogn),其中n是节点数。

Louvain算法在社区发现、社交网络分析、生物信息学等领域都有广泛的应用。

例如,在社交网络中,可以使用Louvain算法来识别具有相似兴趣或背景的用户群体,从而为个性化推荐和社交关系分析提供基础。

在生物信息学中,Louvain算法可以用于识别蛋白质相互作用网络中的功能模块,帮助研究人员理解生物系统的结构和功能。

总结一下,Louvain算法是一种高效且可扩展的社区发现算法。

它通过优化网络的模块度指标,将复杂网络分解为多个社区,有助于揭示网络结构和功能。

该算法在社交网络分析、生物信息学等领域有广泛的应用前景。

希望本文能为读者介绍Louvain算法提供一些帮助。

复杂网络中的社区发现算法

复杂网络中的社区发现算法

复杂网络中的社区发现算法在当今信息爆炸的时代,人们在不断地创造着各种各样的数据,其中网络数据也是其中之一。

在大规模的网络数据中,我们往往需要对这些数据进行挖掘和分析,而其中一个重要的问题就是社区发现问题。

社区发现算法可以将网络中的节点划分为若干个社区,每个社区内部的节点连通度较高,而与其他社区的节点的连通度较低。

然而,复杂网络的拓扑结构千变万化,如何寻找到一个较好的社区划分是一个复杂而困难的问题。

在社区发现算法中,一般使用的指标为模块度,而模块度的求解可以转化为一个优化问题,即如何最大化社区内部的连通度,最小化社区之间的连通度。

随着社区发现算法的发展,出现了许多传统的基于聚类或者图分区的算法,如K-means、谱聚类、Louvain等算法。

但是这些算法在处理大规模网络数据时存在复杂度高、收敛速度慢、鲁棒性不强等问题。

于是,随着人们对网络科学的深入了解,也涌现出许多新的社区发现算法,比如Markov聚类、拉普拉斯谱聚类、模块度优化模型等算法。

这些算法能够处理大规模网络数据,并且可以发现更加合理的社区结构。

以下我将列举一些常见的社区发现算法以及它们的特点和优缺点。

1. 高效快速种子扩张算法高效快速种子扩张算法是一种较为简单的社区发现算法,其基本思想是从一些已知社区内的种子节点开始扩散,形成一个社区。

具体实现是从种子节点开始不断向外扩张,直接某个条件后停止。

这个条件可以是节点的个数、节点的度数或者其他的信息。

优点是算法简单易实现,速度非常快,但是对于社区的分辨率不够高,可能会将比较松散的节点也纳入同一个社区中。

2. 层次聚类算法层次聚类算法是一种自底向上的社区发现算法,其基本思想是将每个节点每次都当做一个社区,然后逐步将相邻的社区合并,形成一个聚类层次。

最终层次中的每一层就代表了一个划分,而选择哪一层则是一个权衡的问题。

优点是算法比较稳定,鲁棒性强,并且可以生成一个社区结构的序列。

缺点是算法的时间复杂度比较高,不适合处理大规模数据。

动态演化网络中的社区划分算法及应用研究

动态演化网络中的社区划分算法及应用研究

动态演化网络中的社区划分算法及应用研究近年来,互联网的高速发展和信息技术的不断创新,使得网络结构日益变得复杂多样。

在这样的背景下,如何对网络进行分析和划分,成为了研究的热点之一。

社区划分算法是其中的重要一环。

本文将介绍动态演化网络中的社区划分算法及其应用研究。

一、动态演化网络的特点动态演化网络是指网络结构会因为节点之间的相互作用、节点属性的改变等外部因素而不断演化。

相较于静态网络,动态演化网络更加复杂、难以把握,具有以下特点:1. 网络的节点和边是不断变化的。

2. 网络的结构会发生不可预测的变化。

3. 网络的属性和演化规律也是难以预测的。

二、社区划分算法的概念和分类社区划分算法是将网络中的节点划分为若干个社区,使得同一社区内部的节点之间具有很强的相似性,而不同社区之间的节点差异较大,这种划分有利于深入研究网络的结构和演化规律。

社区划分算法可以分为两类:1. 基于网络结构的社区划分算法。

这类算法主要利用网络中节点和边的联系信息进行社区划分,通常采用聚类、划分等方法。

2. 基于网络特征的社区划分算法。

这类算法主要是基于节点的属性信息对网络进行社区划分,通常采用分类、回归等方法。

三、动态演化网络中的社区划分算法随着网络的演化,社区结构也会发生变化,这就要求社区划分算法不仅要考虑网络的结构信息,还要整合节点的属性信息,将社区结构与节点特征相结合,解决动态演化网络中的社区划分问题。

下面介绍一些常用的动态演化网络社区划分算法。

1. AP-GRNN算法基于保持核密度函数不变的条件下使用逆距离权重算法所实现聚类操作,将聚类中心作为自身的状态变量,同时引入链接紧密度作为动态更新边权值的权重,最后合并聚类中心生成社区的划分结果。

2. IGBS算法IGBS(Incremental Graph-based Sociality)算法先记录每个节点的社区归属,再在压缩图上使用Max-flow算法找到最大流最小割,实现社区的划分。

网络社区划分算法_图文

网络社区划分算法_图文

网络社区划分算法目录1 简介2 构建一个点击流网络3 网络社区划分的两种主要思路:拓扑分析和流分析4 拓扑分析o 4.1 计算网络的模块化程度Q-Modularityo 4.2 计算网络的连边紧密度Edge betweennesso 4.3 计算网络拉普拉斯矩阵的特征向量Leading eigenvectoro 4.4 通过fast greedy方法搜索网络模块化程度Q-Modularity的最大值o 4.5 通过multi level方法搜索网络模块化程度Q-Modularity的最大值5 流分析o 5.1 随机游走算法Walk Trapo 5.2 标签扩散算法label propagationo 5.3 流编码算法the Map Equationo 5.4 流层级算法Role-based Similarity6 总结[]简介使用许多互联网数据,我们都可以构建出这样的网络,其节点为某一种信息资源,如图片,视频,帖子,新闻等,连边为用户在资源之间的流动。

对于这样的网络,使用社区划分算法可以揭示信息资源之间的相关性,这种相关性的发现利用了用户对信息资源的处理信息,因此比起单纯使用资源本身携带的信息来聚类(例如,使用新闻包含的关键词对新闻资源进行聚类),是一种更深刻的知识发现。

假设我们手头有一批用户在一段期间内访问某类资源的数据。

为了减少数据数理规模,我们一般只考虑最经常被访问的一批资源。

因此在数据处理中,我们考虑UV(user visit)排名前V的资源,得到节点集合|V|,然后对于一个用户i在一段时间内(例如一天)内访问的资源,选择属于|V|的子集vi。

如果我们有用户访问资源的时间,就可以按照时间上的先后顺序,从vi中产生vi-1条有向边。

如果我们没有时间的数据,可以vi两两间建立联系,形成vi(vi-1)/2条无向边。

因为后者对数据的要求比较低,下文中,暂时先考虑后者的情况。

对于一天内的n个用户做这个操作,最后将得到的总数为的连边里相同的边合并,得到|M|个不同的边,每条边上都带有权重信息。

社交网络图分析与社区划分研究

社交网络图分析与社区划分研究

社交网络图分析与社区划分研究随着互联网的迅猛发展,社交网络已经渗透到我们日常生活的方方面面。

社交网络图分析与社区划分研究成为了一个备受关注的热门话题。

通过对社交网络图的分析和社区划分,我们可以深入理解社交网络中的人际关系、信息传播以及社区结构等方面的特征。

本文将深入探讨社交网络图分析与社区划分研究的相关概念、方法和应用。

一、社交网络图分析社交网络图是由一系列节点和连接节点的边组成的。

节点代表社交网络中的个体,边代表个体之间的联系。

社交网络图分析旨在研究和理解社交网络中的节点之间的关系以及节点的属性。

通过社交网络图分析,我们可以获取一系列有关社交网络的重要信息,包括节点的度数中心性、介数中心性、接近中心性等。

1. 节点的度数中心性度数中心性是指一个节点在社交网络中与其他节点直接相连的程度。

度数中心性越高,代表一个节点在社交网络中的重要程度越大。

2. 节点的介数中心性介数中心性是指一个节点在社交网络中作为信息传播的桥梁的程度。

介数中心性越高,代表节点在社交网络中的位置越关键。

3. 节点的接近中心性接近中心性是指一个节点在社交网络中距离其他节点的平均路径长度的倒数。

接近中心性越高,代表节点在社交网络中与其他节点的联系越紧密。

社交网络图分析提供了研究社交网络中个体之间关系的方法和工具,为我们深入探索社交网络的结构和功能提供了理论基础。

二、社区划分研究社区是指一个在网络中高度连接并且内部联系紧密的节点集合。

社区划分研究旨在从社交网络图中识别和划定社区,以便更好地理解和分析社交网络中的人际关系和信息传播。

社区划分方法基于节点之间的连接强度和紧密程度,采用不同的算法和度量指标来识别社区结构。

常用的社区划分算法包括Girvan-Newman算法、Louvain算法等。

社区划分研究在社交网络分析中具有重要的意义。

通过识别社区结构,我们可以了解各个社区内部的关系和特点,进一步研究社区间的联系和影响力等。

三、应用与前景社交网络图分析与社区划分研究在实际应用中具有广泛的前景。

网络社区划分算法

网络社区划分算法

网络社区划分算法目录• 1 简介• 2 构建一个点击流网络• 3 网络社区划分的两种主要思路:拓扑分析与流分析• 4 拓扑分析o4、1 计算网络的模块化程度Q-Modularityo4、2 计算网络的连边紧密度Edge betweennesso4、3 计算网络拉普拉斯矩阵的特征向量Leading eigenvectoro4、4 通过fast greedy方法搜索网络模块化程度Q-Modularity的最大值o4、5 通过multi level方法搜索网络模块化程度Q-Modularity的最大值• 5 流分析o5、1 随机游走算法Walk Trapo5、2 标签扩散算法label propagationo5、3 流编码算法the Map Equationo5、4 流层级算法Role-based Similarity• 6 总结使用许多互联网数据,我们都可以构建出这样的网络,其节点为某一种信息资源,如图片,视频,帖子,新闻等,连边为用户在资源之间的流动。

对于这样的网络,使用社区划分算法可以揭示信息资源之间的相关性,这种相关性的发现利用了用户对信息资源的处理信息,因此比起单纯使用资源本身携带的信息来聚类(例如,使用新闻包含的关键词对新闻资源进行聚类),就是一种更深刻的知识发现。

假设我们手头有一批用户在一段期间内访问某类资源的数据。

为了减少数据数理规模,我们一般只考虑最经常被访问的一批资源。

因此在数据处理中,我们考虑UV(user visit)排名前V的资源,得到节点集合|V|,然后对于一个用户i在一段时间内(例如一天)内访问的资源,选择属于|V|的子集vi。

如果我们有用户访问资源的时间,就可以按照时间上的先后顺序,从vi中产生vi-1条有向边。

如果我们没有时间的数据,可以vi两两间建立联系,形成vi(vi-1)/2条无向边。

因为后者对数据的要求比较低,下文中,暂时先考虑后者的情况。

对于一天内的n个用户做这个操作,最后将得到的总数为的连边里相同的边合并,得到|M|个不同的边,每条边上都带有权重信息。

大规模复杂网络中的社区发现算法研究

大规模复杂网络中的社区发现算法研究

大规模复杂网络中的社区发现算法研究随着互联网的快速发展,大规模复杂网络成为了人们生活和工作中不可或缺的一部分。

这些网络包含了海量的节点和边,形成了一个庞大而错综复杂的网络结构。

在这种网络中,节点之间的连接关系对于了解网络的组织结构以及节点之间的相互作用起着至关重要的作用。

而社区发现算法则可以帮助我们理解和分析这些复杂网络中节点之间的聚类方式和关系。

社区发现算法是一种将网络节点划分为不同社区的方法。

社区指的是在网络中相互关联紧密、内部密度较大的节点子集。

社区发现算法的目标是找到这些社区并将其划分出来,以便更好地理解网络结构和节点之间的交互。

在大规模复杂网络中,社区发现算法面临着挑战,因为网络规模庞大且结构复杂,难以直观地判断节点之间的聚类方式。

在研究大规模复杂网络中的社区发现算法时,一些常见的算法方法包括谱聚类、模块度优化、标签传播和深度学习等。

谱聚类是一种基于矩阵特征向量分解的方法,通过计算网络的特征向量进行聚类划分。

模块度优化算法通过最大化网络中节点聚类的内部连边数和减少与其他社区的连边数来实现社区发现。

标签传播算法则基于节点之间的局部信息传播划分社区。

深度学习是近年来应用广泛的方法,通过使用神经网络模型来学习网络节点之间的特征和相互关系。

然而,在大规模复杂网络中应用这些算法时也遇到了一些挑战。

首先,网络规模庞大,算法的效率需要得到提高。

其次,网络结构复杂,社区表达方式多样,导致算法的准确性和鲁棒性存在一定的问题。

此外,由于网络中包含大量的噪声和异常节点,算法需要具备一定的鲁棒性和可靠性以应对这些干扰因素。

因此,针对这些挑战,研究者们提出了一系列的改进算法和优化策略。

为了提高算法的效率,研究者们提出了一些加速算法的方法。

例如,可以通过节点采样的方式减少计算量,或者使用分布式计算框架来实现算法的并行计算,以提高算法的速度和效率。

此外,由于网络中存在一些重要的节点和核心社区,可以对这些节点和社区进行优化,减少计算的复杂度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络社区划分算法目录∙1简介∙2构建一个点击流网络∙3网络社区划分的两种主要思路:拓扑分析和流分析∙4拓扑分析o 4.1计算网络的模块化程度Q-Modularityo 4.2计算网络的连边紧密度Edge betweennesso 4.3计算网络拉普拉斯矩阵的特征向量Leading eigenvectoro 4.4通过fast greedy方法搜索网络模块化程度Q-Modularity的最大值o 4.5通过multi level方法搜索网络模块化程度Q-Modularity的最大值∙5流分析o 5.1随机游走算法Walk Trapo 5.2标签扩散算法label propagationo 5.3流编码算法 the Map Equationo 5.4流层级算法 Role-based Similarity∙6总结[]简介使用许多互联网数据,我们都可以构建出这样的网络,其节点为某一种信息资源,如图片,视频,帖子,新闻等,连边为用户在资源之间的流动。

对于这样的网络,使用社区划分算法可以揭示信息资源之间的相关性,这种相关性的发现利用了用户对信息资源的处理信息,因此比起单纯使用资源本身携带的信息来聚类(例如,使用新闻包含的关键词对新闻资源进行聚类),是一种更深刻的知识发现。

假设我们手头有一批用户在一段期间内访问某类资源的数据。

为了减少数据数理规模,我们一般只考虑最经常被访问的一批资源。

因此在数据处理中,我们考虑UV(user visit)排名前V的资源,得到节点集合|V|,然后对于一个用户i在一段时间内(例如一天)内访问的资源,选择属于|V|的子集vi。

如果我们有用户访问资源的时间,就可以按照时间上的先后顺序,从vi中产生vi-1条有向边。

如果我们没有时间的数据,可以vi两两间建立联系,形成vi(vi-1)/2条无向边。

因为后者对数据的要求比较低,下文中,暂时先考虑后者的情况。

对于一天内的n个用户做这个操作,最后将得到的总数为的连边里相同的边合并,得到|M|个不同的边,每条边上都带有权重信息。

这样,我们就得到了V个节点,M条边的一个加权无向网络,反应的是在一天之内用户在主要的信息资源间的流动情况。

在这个网络上,我们可以通过社区划分的算法对信息资源进行分类。

社区划分的算法比较多,但我个人认为大致可以分为两大类:拓扑分析和流分析。

前者一般适用于无向无权网络,思路是社区内部的连边密度要高于社区间。

后者适用于有向有权网络,思路是发现在网络的某种流动(物质、能量、信息)中形成的社区结构。

这两种分析各有特点,具体应用取决于网络数据本身描述的对象和研究者想要获得的信息。

我们可以将已知的一些算法归入这两类:算法优化目标计算复杂度适用情况局限拓扑分析Q Modularity 最大化Q-modularity V|^2 无向无权多分量不适用小网络Edge-Betweenness 最小化社区间连边的betweenness V|*|E|^2 有向有权多分量慢Leading Eigenvector 对拉普拉斯矩阵第二小特征根对应的特征向量聚类V|^2+ |E|无向无权多分量Fast Greedy 使用社区合并算法来快速搜索最大Q-modularityE|*log(|V|)无向有权多分量不适用小网络Multi Level 使用社区展开算法来快速搜索最大Q-modularity V| 无向有权多分量 不适用小网络流分析Walk Trap 最大化社区间的流距离 E|*|V|^2 无向有权单分量Label Propagation 每个节点取邻居中最流行的标签,迭代式收敛 V| + |E| 无向有权单分量结果不稳定 Info map 最小化随机流的编码长度 V|*(|V|+|E|) 有向有权单分量Role-based community 划分出在流中地位类似的节点 V|^3 有向有权单分量结果不稳定上表中的分量(component )指在网络中的独立“团块”。

有向网络里,分量有强弱之分,强分量(strong component )中任意一个节点都可到达另外一个节点,弱分量(weak component )中如果忽略连边方向,则构成强分量。

无向网里分量没有强弱之分。

在网络中识别强分量的算法有Kosaraju 算法,Tarjan 算法及其变形Gabow 算法等。

在这里不展开叙述。

接下来,我们逐一讨论拓扑分析和流分析中的各种算法的具体思路。

[ ]计算网络的模块化程度Q-ModularityQ-Modularity 是一个定义在[-0.5,1)区间内的指标,其算法是对于某一种社区结构,考虑每个社区内连边数与期待值之差。

实际连边越是高于随机期望,说明节点越有集中在某些社区内的趋势,即网络的模块化结构越明显。

Newman 在2004年提出这个概念最初是为了对他自己设计的社区划算法进行评估,但因为这个指标科学合理,而且弥补了这个方面的空白,迅速成为一般性的社区划分算法的通用标准。

Q 的具体计算公式如下:其中A 是网络G 对应的邻接矩阵,如果从i 到j 存在边,则Aij=1,否则为0。

m 是总连接数,2m 是总度数,Aij/2m 是两节点之间连接的实际概率。

Ki 和kj 分别是i 和j 的度数。

如果我们保持一个网络的度分布但对其连边进行随机洗牌,任意一对节点在洗牌后存在连接的概率为kikj/(2m)2。

上式中中括号表达的就是节点之间的实际连边概率高于期待值的程度。

后面跟着一个二元函数,如果节点ij属于同一个社区,则为1,否则为0,这就保证了我们只考虑社区内部的连边。

刚才这个定义是以节点为分析单位。

实际上,如果以社区为分析单位看Q指标,可以进一步将其化简为eii和ai之间的差。

其中eii是在第i个社区内部的link占网络总link的比例,ai是第i个社区和所有其他社区的社区间link数。

上式已经清楚定义了Q,但在实际计算里,上式要求对社区及其内部节点进行遍历,这个计算复杂度是很大的。

Newman(2006)对上式进行了化简,得到矩阵表达如下:我们定义Sir为n * r的矩阵,n是节点数,r是社区数。

如果节点i属于社区r,则为1,否则为0。

则有于是有其中B是modularity matrix,其元素为该矩阵的行列和都是0,因为实际网络和随机洗牌后的网络度分布是不变的。

特别地,在仅仅有两个社区的情况下(r=2),可以s定义为一个n长的向量,节点属于一个社区为1,属于另一个社区为-1,Q可以写成一个更简单的形式:通过对社区的划分可能空间进行搜索,可以得到最大化Q值的社区划分。

在这个过程会涉及数值优化的部分,例如表一中的fast greedy和multilevel就是用不同方法进行快速搜索的例子。

以fast greedy为例Newman(2006),它通过不断合并社区来观察Q的增加趋势,得到了一个在最差的情况下复杂度约为O( |E|*log(|V|) ),在最好的情况下接近线性复杂度的算法。

[]计算网络的连边紧密度Edge betweenness这个思路出现得比较早(Newman, 2001)。

Freeman (1975) 提出过一个叫betweenness的指标,它衡量的是网络里一个节点占据其他n-1节点间捷径的程度。

具体而言,首先对每一对节点寻找最短路径,得到一个n * (n-1)/2的最短路径集合S,然后看这个集合中有多少最短路径需要通过某个具体的节点。

Newman借鉴了这个标准,但不是用来分析节点而是分析连边。

一个连边的edge betweenness就是S集合里的最短路径包含该连边的个数。

定义了连边的betweenness后,就可以通过迭代算法来进行社区划分了。

具体做法是先计算所有连边的betweenness,然后去除最高值连边,再重新计算,再去除最高值连边,如此反复,直到网络中的所有连边都被移除。

在这个过程中网络就逐渐被切成一个个越来越小的component。

在这个过程中,我们同样可以用Q-modularity来衡量社区划分的结果。

这种算法定义比较清晰,也不涉及矩阵数学等运算,但问题是计算复杂度比较大。

[]计算网络拉普拉斯矩阵的特征向量Leading eigenvector一个有n个节点的网络G可以被表达为一个n x n的邻接矩阵(adjacency matrix)A。

在这个矩阵上,如果节点i 和j之间存在连边,则Aij=1,否则为0。

当网络是无向的时候,Aij=Aji。

另外我们可以构造n x n的度矩阵(degree matrix)D。

D对角线上的元素即节点度数,例如Dii为节点i的度数,所有非对角线的元素都是0。

无向网的分析不存在度数的选择问题,有向网则要根据分析目标考虑使用出度还是入度。

将度数矩阵减去邻接矩阵即得到拉普拉斯矩阵,即L = D-A。

L的特征根存在一些有趣性质。

首先,最小的特征根总等于0。

因为如果将L乘以一个有n个元素的单位向量,相当于计算每一行的和,刚好是节点的度的自我抵消,结果等于0。

其次,特征根中0 的个数即无向网G中分量的个数。

这意味着如果除了最小特征根,没有别的特征根为0,则整个网络构成一个整体。

在这些特征根里,第二小的特征根(或者最小的非零特征根)又叫做代数连通性(algebraic connectivity),其对应的特征向量叫做Fidler vector。

当,说明网络是一个整体。

越大,说明网络彼此间的链接越紧密。

从这个定义来看,非常像前面讨论的Q-Modularity,实际上在Newman2006的文章里,确实讨论了二者在数学上的对应关系。

例如对示例网络所对应的进行分析,可以得到拉普拉斯矩阵如下:这个矩阵的特征根如下:{5.5, 4.5, 4.0, 3.4, 2.2, 1.3, 1.0, 0}。

取时, Fidler vector={0.29, 0.00,0.29, 0.29, 0.29, -0.58, -0.58, 0.00}。

因为Fidler vector的值分别对应着图里的节点,于是可以写成{a:0.29, b: 0.00, c:0.29, d:0.29, e:0.29, f:-0.58, g:-0.58, h:0.00}。

仅仅从元素的正负号就可以看出,该分析建议我们把f和g节点与其他节点分开,更细致的,对元素值大小的考察则建议把矩阵分成三个社区,{{a, c, d, e}, {b, h}, {e, f}}。

回到图中考察,我们发现这个社区分类基本是合理的。

[]通过fast greedy方法搜索网络模块化程度Q-Modularity的最大值[]通过multi level方法搜索网络模块化程度Q-Modularity的最大值因为以上两种方法都是基于Q-modularity的,只不过是搜索策略的不同,所以在此不展开讨论。

相关文档
最新文档