基于低通过滤和决策函数的重叠社区改变点检测方法与流程

文档序号:11217246阅读:949来源:国知局
基于低通过滤和决策函数的重叠社区改变点检测方法与流程

本发明涉及复杂网络领域。



背景技术:

目前,重叠社区发现已经揭示出网络中不同节点间隐含的聚集关系,有助于检测复杂系统中的功能模块或深入理解其组织结构,是一种从静态的角度来分析复杂网络的方法。然而,现实中的网络大多数是处于动态演化过程中的,其中的重叠社区也是跟随网络不断演化的。正如重叠社区能揭示节点间隐含的关系一样,网络及其重叠社区的动态演化也蕴含许多有趣的信息或知识亟待发现。例如,通过跟踪分析引文网络中重叠社区的演化,人们可以知道对应某个研究领域的重叠社区发生了哪些改变,从而判断该领域发生了何种改变。例如,重叠社区的分裂对应学科产生了分支,而增长表示该领域正在快速发展等。

总体来看,目前对重叠社区演化事件的基本类型已形成共识,并提出了重叠社区事件的检测算法。但是,依然没有方法检测重叠社区改变点,即无法检测改变的类型、改变时间和量化改变程度。另外,网络节点的度存在着幂律分布和枢纽节点,导致重叠社区演化趋势被高度节点掩盖。

现有研究主要基于扩展、密度、层级聚类和统计推断等方法实现重叠社区发现,使得重叠社区发现及分析方法客观存在检测准确率低、重叠节点分配错误率高、无法预测重叠社区未来演化等缺陷,缺乏在动态网络环境中实现重叠社区演化分析的方法体系,成为阻碍复杂网络中重叠社区的相关理论和应用发展的瓶颈。



技术实现要素:

重叠社区改变点检测是网络动态演化分析中的一项重要任务,有助于深入理解系统演化或检测异常。目前的改变点检测方法,例如“两阶段”法或ghrg+glr方法不能量化改变程度、无法检测局部社区改变、对改变点的类型没有合理分类。针对这些问题,本发明给出了一种基于低通过滤和决策函数的重叠社区改变点检测方法,实现重叠社区的改变类型检测和改变程度量化,克服演化趋势被枢纽节点掩盖的问题。

本发明技术方案:

一种复杂网络中基于低通过滤和决策函数的重叠社区改变点检测方法,其特征在于,首先将重叠社区所对应的子图建模为一维社区流,使得信号处理方法能应用于重叠社区,然后通过将改变点分为两类和基于决策函数,实现了对重叠社区改变点的检测和量化。

有益效果

针对重叠社区改变点检测的研究没有考虑过量度起伏、重叠程度改变和局部演化趋势不同等问题,实现了对重叠社区改变点的检测和量化,有助于更深入了解复杂网络系统的组织及系统的动态特征,从而可了解相关研究领域中已发生的变化,以及某领域是否活跃、产生分支或消失等结论。

本研究方法可应用于社会学、生物学、化学、互联网等领域,分析重叠社区演化从而发现有用的信息或知识,具有广阔的应用前景。

附图说明

图1为单社区建模过程。

图2为两社区建模过程。

图3为实施例验证步骤中,ccp(左)和pristine(右)对二元改变点的检测结果。

图4为实施例验证步骤中,ccp(左)和pristine(右)对二元改变点的检测结果。

图5为实施例方法流程图。

附表说明

表1符号约定及其含义

表2二元改变点的检测条件及改变量

具体实施方式

实施例

如图5所示,本发明实施例基于低通过滤和决策函数的重叠社区改变点检测方法,包括如下步骤:

步骤1.讨论如何建模重叠社区子图;

步骤2.重叠社区低通过滤;

步骤3.给出基于决策函数的改变点检测;

步骤4.给出在合成网络上改变点检测的正确性验证。

以下依次详述。

一、社区子图建模

本发明符号约定如表1所示。

表1

社区结构的演化较为复杂且难以准确表示。目前通常将其表示为两个集合,然后度量二者的公共节点从而分析社区演化,但是该方法忽略了社区内部结构的变化方式。为了建模社区的动态演化,需要采用一种新的社区表示方法。首先,将一个社区所对应的子图表示为一个邻接矩阵。然后,按照特定方式扫描矩阵元素,构造一个长度与社区节点个数有关的一维信号,称为社区流。这样,信号处理领域的方法可用于处理社区流,有助于解决过量度起伏问题。

为了检测社区ct的改变点,需比较ct在中的拓扑结构差异。因此,首先将ct所对应的子图表示为一个n×n的邻接矩阵,其中的一行对应一个源节点u,一列对应目标节点v,矩阵元素为边(u,v)上的权。如图1所示,社区ct在增长发生前包含4个节点,其邻接矩阵为:

其中第1‐4行(列)对应编号1‐4的节点。gt只包含了社区节点间的连接,不包含社区内节点与社区外节点的连接。由于社区成员节点可能改变,还需让矩阵包含ct与外部节点的关系。因此,我们假设ct包含一个虚节点,代表ct的外部,然后扩展gt为g′t。以图1为例,gt经过扩展后得到

其中,最后一行(列)对应虚节点。节点1与外部节点有两条边,权分别为1、2,在引入外部虚节点后,视为节点1与虚节点存在一条权为3的边。扩展后的矩阵g′t既包含了内部节点连接,也包含与外部的连接关系。

矩阵g′t中的节点顺序是任意的,因而其转换得到的一维的社区流可以视为随机信号,而分析该信号无意义。另外,如果更改节点编号顺序,则产生另一种社区流,无法保证社区流的唯一性。因此,为了使社区对应唯一的社区流,本发明对g′t中的节点进行排列,使得g′t中的每一行元素按降序排列且方差最小。以图1为例,g′t经过排列以后,得到新的矩阵:

排列以交换两个节点在矩阵中的位置为基本操作,且在排列过程中,虚节点所对应的行(列)始终固定在最后。本发明将g″t中的每个矩阵元素视为一个信号,并将矩阵转换为信号,自左向右逐行扫描g″t的元素,且跳过对角线元素。扫描g″t生成社区流的过程如图1所示,得到了社区流x(ct)={4,2,1,2,1,2,3,1,1,0}。

上面讨论了如何将社区建模为社区流。然而二元改变点涉及两个社区,以上方法无法建模对应两个社区的子图。因此,本发明引入对两个社区的建模方法。首先,分别为社区构造邻接矩阵g1和g2。然后,合并g1和g2得到

有公共(重叠)节点,则这些节点在g12中出现了两次且g12忽略了间的重叠关系。通过前面介绍的排列中的交换操作,将g1中的重叠节点移至右下角,将g2中的重叠节点移至左上角,且保证然后保留其中的一个,得到新的矩阵

其中,g′1和g′2分别对应中的非重叠节点,gov对应重叠节点。此时,g′12完成了对两个社区的建模。以上所述建模过程如图2所示。

由矩阵g′12可以看出,当社区的重叠达到较高程度时,此时可以认为因此,“重叠增加”在达到一定程度时可以视为“合并”,“重叠减少”与“分裂”类似。接下来,按照前面介绍过的步骤,为g′12增加一个虚节点表示两社区的外部节点,排列节点从而保证最小方差。此处的排列过程与前面略有不同,需要保证g′1,gov和g′2之间的节点相对顺序不变,得到矩阵g″12。最后,依然自左向右逐行扫描g″12,忽略对角元素、且只扫描右上角,得到对应两个社区的社区流

二、重叠社区低通过滤

如前所述,重叠社区内存在过量度起伏问题,即高度节点与低度节点的度的差较大,高度节点容易掩盖重叠社区总体改变。因此,需使x(ct)或变得更平滑。常用于音频和图像压缩领域的子带编码方法,可将信号分解为一系列带限信号(band‐limitedsignal),称为子带(sub‐band)。子带叠加之后与原信号等价,且没有信息损失。当仅有两个子带时,高频子带代表信号的近似值而低频子带代表信号细节。这里也面临着类似的问题,社区被转换为社区流以后,也可分解为高频和低频子带,分别代表社区的近似结构和细节。对x(ct)和应用低通过滤,只保留社区总体结构的近似值,去掉节点的度分布细节,可使信号平滑从而解决过量度起伏的问题。

本实施例选择用sinc过滤器处理社区流,因为其冲击响应是频域中的矩形函数,是理论上最完美的过滤器且容易用算法实现。它的截止频率由参数β指定。在频域中sinc过滤器的冲击响应函数为:

其中的rect(·)代表矩形函数,其定义为

社区流x(ct)和是位于空间域的。为了进行过滤,应通过傅里叶逆变换推导出sinc过滤器在空间域的冲击响应函数,即

从而得到在空间域中的冲击响应函数,

h(x)=2β·sinc(2βx)(9)

其中,sinc(·)是归一化的函数且sinc(0)=1。至此,本实施例可以对前面得到的社区流x(ct)进行过滤,即通过在空间域中与h(x)卷积,

其中,xk(ct)表示x(ct)中的第k个值,w是限定从w个信号值的范围中过滤的窗口值。当w=1时,y(ct)=x(ct),本发明实施例通常将w设为3。另外,当n+w开始超过x(ct)的总长度时,将n+w替换为x(ct)的总长度。对于一个社区流xk(ct),以上低通过滤的过程可以统一表示为:

所生成的一维信号y(x)保留了社区ct中节点间关系的近似信息,节点度分布的方差更小、信号波形更平滑,避免了过量度起伏问题,使得改变点更易于检测。

三、基于决策函数的改变点检测

尽管社区ct转换为了社区流x(ct),依然能从x(ct)得到社区拓扑信息。例如,社区中的节点个数n与社区流的长度|x(ct)|存在关系并且,x(ct)中位于左侧的|x(ct)|-n个值取自社区内部的边,而剩余的n个值取自与虚节点相连的边。本发明步骤三中,将分别为一元改变点和二元改变点建立各自的决策函数进行检测,从而得到ct的改变点集合it,t+1(ct)。

(1)一元改变点检测

如前所述,一元改变点包括增长、收缩、消失且任何两者不能同时成立。为了检测这类改变点,本发明分析社区流x(ct)波形的变化,从而构造决策函数。例如,x(ct)在发生后,x(ct)波形右侧升高、左侧降低可能表明社区ct发生了收缩或消失事件。接下来分别针对增长、收缩和消失提出决策函数。

在传统的“两阶段”法中,先分别在中进行社区发现,找到最相似的社区ct和ct+1且然后通过比较ct和ct+1获得结果。社区增长事件通常定义为在社区保持存在条件下的节点数增加。现在,假设过滤后的社区流y(ct)={ω1,ω2,…,ωk,ωk+1,…,ωk+n},其中n是节点个数,因而且|y(ct)|=k+n。社区ct的p‐value定义如下

这里的p‐value定义在y(ct)上而非x(ct),因而避免了过量度起伏。ct存在于中可表示为pt=p‐value(y(ct))>η,而在演化后,社区依然存在可表示为pt+1=p‐value(y(ct+1))>η。因此,增长可以表示为|ct+1|>|ct|,pt>η且pt+1>η,其中参数η指定重叠社区的最小p‐value。与“两阶段”法不同,本发明只需要中的重叠社区、无需中的重叠社区,并且根据ct到ct+1的拓扑改变来估计节点个数的变动。

社区成员增加通常是由周围节点与社区新创建大量边导致的,因而引入社区流的外部权(externalweight),即虚节点的边权和为:

将会增加。社区ct在中的外部权记为中的外部权记为两者之差可用于估计未知的ct+1相对于ct的新增节点数,并且判断增长事件是否成立,以及量化增长的改变程度δ。综上所述,增长改变点的决策函数为:

其中,sgn(·)当条件为真时等于1否则等于0,τg代表增长改变点的类型,直接采用δωext作为增长改变点的改变量。

与增长改变点的检测类似,收缩类型依然定义为ct和ct+1都存在,但是应判断成员节点是否减少。社区的成员个数减少通常是由于内部节点之间删除大量的边,导致p‐value减少,但是依然大于η。同样地,为了根据ct和估计ct+1,引入社区流的内部权和(internalsum)为

因而,社区收缩用表示,其决策函数为

如前所述,收缩改变点在其改变量较大时可以视为消失改变点。因而,消失改变点的决策函数相似。不同在于中与ct相对应的ct+1不存在,因而条件pt+1>η应改为pt+1≤η。用于检测消失改变点的决策函数为

中,为了与增长、收缩具有可比性,依然用|δωint|作为改变量δ。当得到以上决策函数之后,逐个利用对y(ct)进行检测,当其中一个函数检测成功时返回对应的改变点,实现了对一元改变点的检测和量化。

(2)二元改变点检测

二元改变点检测所关注的是两社区间的重叠程度改变。如前所述,二元改变点包括重叠增加、重叠减少、合并、分裂四种类型。其中,重叠增加对应社区间公共节点的增多,重叠减少对应公共节点的减少。合并可以视为较大程度的重叠增加,因为如果两社区的绝大部分节点都是公共节点,则将二者的并集视为一个重叠社区更合理。类似的,较大程度的重叠减少应视为分裂。与一元改变点类似,这四种类型的改变点可相互转换且无法共存,因而归类于二元改变点。

社区被建模为社区流并经过低通过滤得到社区流的信号长度记为的公共节点数为接下来,我们按照与前面类似的方法,计算的p‐value、内部权ωint和外部权ωext等。然后,通过追踪p‐value和重叠节点数变化实现二元改变点检测。我们依然用边的增减数目来估计间的重叠节点个数增减。假设建模和过滤过程表示为г(·),则有如下

然后,分别计算的p‐value如下

为了估计相对于重叠社区间的公共节点的变化,我们分别针对计算δωint和δωext如下

中,原属于的重叠社区发生了改变,相应的p‐value为

即p′1,p′2,p′3是通过假设社区节点不变且以拓扑为依据计算得到的。我们基于决策函数并将以上统计量作为分类条件,实现二元改变点检测。因为四个二元改变点具有内在联系,其决策函数可以统一表示为以下形式

其中,τ可以是τmsoi和τod,分别代表合并、分裂、重叠增加和重叠减少;中对应四种改变点类型的条件表达式,总结如表2所示。

表2

在表2中,重叠增加即的公共节点增加,表现为的节点与外部的连接数增加,大于0,而二者作为一个整体时,内部的连接数增加,即除此以外,还需要一个条件表示在演化发生后两社区依然存在,即p1,p′1≥η,且不能作为一个社区存在,即p′3<η(否则,应检测为合并)。当以上所述的条件同时成立时,将检测得到一个重叠增加事件。节点数改变量的估计值直接作为改变量δ。

其余三个二元改变点的检测条件与重叠增加改变点的检测是类似的。另外,重叠增加与合并改变点的本质是相同的,不同之处在于重叠增加发生后在中对应的社区不能视为同一个社区。完成对以上二元决策函数的推导以后,本发明列出中的所有社区对然后用以上四个二元决策函数对它们进行检测,并返回得到的改变类型和改变量。

进一步的,本实施例以下还给出验证步骤。

四、在合成网络上验证检测改变点的正确性

分析真实世界数据前,先在合成网络上验证本发明方法是否正确检测改变点。为生成这样的网络,采用简化的随机块模型来生成包含两个快照的一次网络演化,记为通过让节点编号一致来模拟变为中社区变为社区。当检测一元改变点时,让只包含一个社区,社区内节点从1编号至n;也只包含一个社区,社区内节点从1编号至m。若m>n,应该检测到增长改变点;若m<n,则应检测到收缩或消失改变点。当检测二元改变点时,分别在中生成两个大小相近的社区,通过改变重叠节点个数来生成不同的二元改变点。

在生成一元改变点时,让各包含150个节点,边概率为0.1。各有一个社区,节点个数分别从1变到100,社区内边概率为0.8。这样生成的社区易被检测,避免了社区发现方法的影响。然后在生成的上,分别执行ccp和pristine且假设中的社区已知、中的社区未知。当用ccp检测时,将p‐value阈值η设为0.2,窗口大小设为w=4,截止频率β=0.25。当用pristine检测,先在上执行社区发现,得到中的社区,然后通过比较的社区与中检测到的社区来检测改变点,结果如图3所示。

图3(a)、(b)、(c)分别给出了ccp和pristine对增长、收缩和消失的检测结果。x轴代表社区的节点个数m;y轴代表中社区的节点个数n。图3中的每一个位置,例如(55,61)或(15,90)代表一个测试数据。直线y=x下方的位置对应收缩改变点;y=x上方的位置对应增长改变点;y=x下方靠近x轴的位置对应消失改变点。在测试数据上检测到改变点时,在该处绘一个点。

增长改变点全部检测成功对应于直线y=x上方空白区域被填满。如图3(a),ccp检测到了大部分增长改变点,但也将许多收缩改变点识别为增长。ccp没有检测到初始大小为10到20之间、增长到50个节点以上的社区。pristine只检测到了少数增长改变点,集中于(20,20)附近。收缩改变点则应位于y=x下方且填满下半部分。如图(b),ccp检测到的改变点几乎都位于y=x下方,符合预期;而pristine检测到的收缩改变点仅集中于特定区域且将增长识别为收缩。对于消失类型改变点,如图3(c),ccp的结果比较符合预期且大部分靠近x轴;而pristine检测的消失改变点遍布于所有位置,几乎等价于随机检测法。

生成二元改变点时,让各包含两个大小相同的社区,中的重叠节点比例α和β均从0变到1。当α<β时,测试数据包含重叠增加或合并;当α>β时,包含重叠减少或分裂。然后,类似于一元改变点检测,分别用ccp和pristine对生成的数据进行检测。在用pristine进行改变点检测前,执行acenv来获得中的社区。ccp和pristine对二元改变点的检测结果如图4所示。

在图4中,x轴代表中两社区重叠节点比值α,y轴代表中的比值β,(α,β)代表重叠程度从α变为β的测试数据。在理想情况下,检测的重叠增加应位于y=x之上,重叠减少位于y=x之下。靠近x轴的是分裂改变点,而靠近y轴的是合并改变点。由于合并可视为重叠增加,分裂可视为重叠减少,因而对它们不作区分。ccp和pristine的对重叠增加和重叠减少的检结果如图4(a)和(b)所示。ccp检测到的重叠增加均位于y=x上方,重叠减少也位于y=x下方,符合预期结果。但是ccp也将少量分裂错误地识别为重叠增加。pristine仅检测到少量重叠减少,无法检测重叠增加。虽然pristine的结果很差,但是其检测到的重叠减少改变点均正确位于y=x下方,分裂改变点也靠近x轴。

创新点

提出了一种复杂网络中基于低通过滤和决策函数的重叠社区改变点检测方法,从而有助于更深入了解复杂网络系统的组织及系统的动态特征。针对目前重叠社区改变点检测的研究没有考虑过量度起伏、重叠程度改变和局部演化趋势不同等问题,给出了一种基于低通过滤的重叠社区改变点检测方法,实现了对重叠社区改变点的检测和量化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1