网络社区划分算法

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

网络社区划分算法

目录

• 1 简介

• 2 构建一个点击流网络

• 3 网络社区划分的两种主要思路:拓扑分析和流分析

• 4 拓扑分析

o 4.1 计算网络的模块化程度Q-Modularity

o 4.2 计算网络的连边紧密度Edge betweenness

o 4.3 计算网络拉普拉斯矩阵的特征向量Leading eigenvector

o 4.4 通过fast greedy方法搜索网络模块化程度Q-Modularity的最大值

o 4.5 通过multi level方法搜索网络模块化程度Q-Modularity的最大值

• 5 流分析

o 5.1 随机游走算法Walk Trap

o 5.2 标签扩散算法label propagation

o 5.3 流编码算法 the Map Equation

o 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条边的一个加权无向网络,反应的是在一天之用户在主要的信息资源间的流动情况。在这个网络上,我们可以通过社区划分的算法对信息资源进行分类。

社区划分的算法比较多,但我个人认为大致可以分为两大类:拓扑分析和流分析。前者一般适用于无向无权网络,思路是社区部的连边密度要高于社区间。后者适用于有向有权网络,思路是发现在网络的某种流动(物质、能量、信息)中形成的社区结构。这两种分析各有特点,具体应用取决于网络数据本身描述的对象和研究者想要获得的信息。

我们可以将已知的一些算法归入这两类:

算法优化目标计算复杂度适用情况局限R

拓扑分析

Q Modularity 最大化Q-modularity V|^2

无向无权多分

不适用小网络

spinglass

.community

Edge-Betweenness

最小化社区间连边的

betweenness

V|*|E|^2

有向有权多分

edge.betweenness

.community

Leading Eigenvector

对拉普拉斯矩阵第二小特征

根对应的特征向量聚类

V|^2+ |E|

无向无权多分

leading.eigenvector

.community

Fast Greedy

使用社区合并算法来快速搜

索最大Q-modularity

E|*log(|V|)

无向有权多分

不适用小网络

fastgreedy

.community

Multi Level

使用社区展开算法来快速搜

索最大Q-modularity

V|

无向有权多分

不适用小网络

multilevel

.community

流分析

Walk Trap 最大化社区间的流距离E|*|V|^2

无向有权单分

不太适合网络

数量较小的情

walktrap

.community

Label Propagation

每个节点取邻居中最流行的

标签,迭代式收敛

V| + |E|

无向有权单分

结果不稳定

label.propagation

.community

Info map 最小化随机流的编码长度V|*(|V|+|E|)

有向有权单分

clique

.community

Role-based community 划分出在流中地位类似的节V|^3 有向有权单分结果不稳定

点量

上表中的分量(component)指在网络中的独立“团块”。有向网络里,分量有强弱之分,强分量(strong component )中任意一个节点都可到达另外一个节点,弱分量(weak component)中如果忽略连边方向,则构成强分量。无向网里分量没有强弱之分。在网络中识别强分量的算法有Kosaraju算法,Tarjan算法及其变形Gabow算法等。在这里不展开叙述。接下来,我们逐一讨论拓扑分析和流分析中的各种算法的具体思路。

[4]拓扑分析

[4.1]计算网络的模块化程度Q-Modularity

Q-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,其元素为

相关文档
最新文档