基于模块度优化的重叠社区发现方法及装置与流程

文档序号:32651796发布日期:2022-12-23 17:50阅读:99来源:国知局
基于模块度优化的重叠社区发现方法及装置与流程

1.本发明涉及计算机技术领域,具体涉及一种基于模块度优化的重叠社区发现方法及装置。


背景技术:

2.目前,标签传播方法lpa是一种基于图的半监督学习方法,其主要思想是利用已标记节点的标签信息预测未标记节点的标签信息。在标签传播过程中,每一个节点利用唯一的标签作为社区标识,对图中所有的顶点进行标签迭代更新。每个节点的标签选取邻居节点中出现次数最多的标签进行更新,若出现次数最多的标签不唯一时,随机选择一个标签进行更新,直到所有节点的标签不再发生变化为止。
3.该方法思路简单清晰,其基本过程如下:

为每个节点随机指定一个特有的标签;

逐轮刷新所有节点的标签,直到网络中节点的标签不再发生变化为止。对于每一轮刷新,节点标签的刷新规则如下:对于某一节点,考察其所有邻居节点的标签,并进行统计,将出现次数最多的标签赋值给当前节点。当出现次数最多的标签不唯一时,随机选择一个标签赋值给当前节点。lpa方法具有线性的时间复杂度,但是该方法只能发现非重叠社区,无法满足发现重叠社区。
4.在slpa方法中引入了listener和speaker两个形象的概念,在刷新节点标签的过程中,任意选取一个节点作为listener,即消息的接收者,则其所有邻居节点都为speaker,即消息的发送者,speaker通常不止一个,所以需要制定一个规则来更新节点listener的标签。在lpa方法中,每个节点有且只有一个标签,但在slpa方法中,每个节点设置了一个标签存储列表,将每次迭代更新的标签都存储在该列表中。slpa方法中,用户需定义方法最大迭代次数t和后处理阈值r这两个参数。其基本思想为:

使用唯一的标签初始化每个节点的标签列表;

循环以下步骤直到达到最大迭代次数t:a.选择一个节点作为listener;b.所选节点的每个邻居(speaker)随机选择概率正比于该标签在其存储器中出现频率的标签,把所选择的标签发送给listener;c.listener将接受到的出现次数最多的标签添加到其标签列表中。根据标签列表中的标签和后处理阈值r,输出每个节点最终的标签集。
5.与lpa方法相比,slpa方法最大的特点为:slpa会记录每个节点在迭代过程中的历史标签序列,例如迭代t次,则每个节点将保存一个长度为t+1的标签序列。当迭代停止后,对每个节点的标签列表中各互异标签出现的概率进行统计,按照某一给定的阈值r删除出现频率小的标签。所以方法结束后,一些节点会拥有多个标签,则这些节点即为重叠节点。所以lpa方法到slpa方法,完成了非重叠社区发现方法到重叠社区发现方法的跨越。
6.因此,如何提供一种基于模块度优化的重叠社区发现方案,能够加快标签传播的速度,增加了原始方法的稳定性和鲁棒性,使得节点标签在较短时间内趋于稳定是本领域技术人员亟待解决的技术问题。


技术实现要素:

7.本发明提供一种基于模块度优化的重叠社区发现方法及装置,能够加快标签传播的速度,增加了原始方法的稳定性和鲁棒性,使得节点标签在较短时间内趋于稳定。
8.第一方面,本发明提供一种基于模块度优化的重叠社区发现方法,包括:
9.获取网络节点的社区标签以及所述网络节点的邻接关系数据;
10.基于所述社区标签以及所述邻接关系数据确定模块度比率,并基于所述模块度比率确定是否对所述网络节点进行合并;
11.基于当前更新的网路节点与相邻的网络节点的相似性值,确定是否对网络节点的社区标签进行更新,并将更新的社区标签存储于对应的标签列表;
12.基于所述标签列表中的社区标签的出现概率确定与所述标签列表对应的网络节点的社区。
13.在一种实施例中,所述获取网络节点的社区标签以及所述网络节点的邻接关系数据包括:
14.分配所述网络节点所属的社区标签;
15.获取网络邻接矩阵net,所述net用于表示当前所需处理网络的内部结构,包括n阶矩阵,如下所示:
[0016][0017]
取任意的a
kl
,k∈[1,n],l∈[1,n],当节点k和节点l间有边存在时,a
kl
=1,当节点k和节点l间无边存在时,a
kl
=0,k和l为正整数。
[0018]
在一种实施例中,所述基于所述社区标签以及所述邻接关系数据确定模块度比率,并基于所述模块度比率确定是否对所述网络节点进行合并包括:
[0019]
假设对所述网路节点两两合并相邻社区;确定社区区合并后与社区合并前的模块度变化比率qratio;若qratio最大且qratio》1,则合并两社区;
[0020]
若qratio≤1,则保留原始社区分类;若当前的网络节点的社区与多个邻居社区合并后模块度比率最大且大于1,依然保留原始社区划分;
[0021]
迭代进行社区合并指定次数s或者直到模块度比率不再出现大于1的情况时,将每个网络节点此时所携带的社区标签作为节点标签列表的初始标签。
[0022]
在一种实施例中,所述确定社区区合并后与社区合并前的模块度变化比率qratio包括:
[0023]
如果一个特定的网络被划分为c个社区,则模块度定义如下所示:
[0024][0025]
其中,e
cc
表示社区c内所有边占整个网络边的比例,ac表示社区c内的节点的度占整个网络度的比例;还有一个清晰的物理意义:表示在相应的具有相同度序列的配置模型中这些节点之间的连边数占整个网络边数比例的期望值;lc表示社区c内所包含的边数,
dc表示社区c内所有节点的度值之和,则式的等价表示方式为:
[0026][0027]
假设某一网络n被划分为两个社区c1和c2,网络的模块度值为:
[0028][0029]
将社区c1中的节点i移至社区c2中,此时网络的模块度值为:
[0030][0031]
其中,k
i,c1
表示节点i与社区c1的连边数,k
i,c2
表示节点i与社区c2的连边数,ki表示节点i的度;节点i移动后与移动前网络的模块度比率值为:
[0032][0033]
在一种实施例中,所述基于当前更新的网路节点与相邻的网络节点的相似性值,确定是否对网络节点的社区标签进行更新,并将更新的社区标签存储于对应的标签列表包括:
[0034]
将所有节点随机排序,依次更新节点标签列表;
[0035]
对于当前所需更新标签列表的目标节点,确定所述目标节点与其邻居节点的相似性值;
[0036]
基于所述相似性值选取具有最大相似性值的邻居节点;在所述邻居节点的标签列表中随机选择概率正比于该标签在其列表中出现频率的社区标签传递给当前节点;
[0037]
若具有最大相似性值的邻居节点不唯一,则在这些最大相似性值的邻居节点的标签列表中依然按出现概率随机选取标签作为待传递标签,并将待传递标签中频次最高者更新至当前节点。
[0038]
在一种实施例中,所述基于所述标签列表中的社区标签的出现概率确定与所述标签列表对应的网络节点的社区包括:
[0039]
统计网路节点对应的标签列表中的各社区标签出现的概率;
[0040]
保留所有出现概率大于预设阈值r的社区标签;
[0041]
将所述社区标签所代表的社区确定为节点最终所属社区,当网络节点同时具有两种及两种以上社区标签时,则所述网络节点属于重叠节点。
[0042]
第二方面,本发明实施例提供一种基于模块度优化的重叠社区发现装置,包括:
[0043]
数据获取模块,用于获取网络节点的社区标签以及所述网络节点的邻接关系数据;
[0044]
节点合并模块,用于基于所述社区标签以及所述邻接关系数据确定模块度比率,并基于所述模块度比率确定是否对所述网络节点进行合并;
[0045]
标签更新模块,用于基于当前更新的网路节点与相邻的网络节点的相似性值,确定是否对网络节点的社区标签进行更新,并将更新的社区标签存储于对应的标签列表;
[0046]
社区确定模块,用于基于所述标签列表中的社区标签的出现概率确定与所述标签
列表对应的网络节点的社区。
[0047]
在一种实施例中,所述数据获取模块包括:
[0048]
标签分配单元,用于分配所述网络节点所属的社区标签;
[0049]
关系获取单元,用于获取网络邻接矩阵net,所述net用于表示当前所需处理网络的内部结构,包括n阶矩阵,如下所示:
[0050][0051]
取任意的a
kl
,k∈[1,n],l∈[1,n],当节点k和节点l间有边存在时,a
kl
=1,当节点k和节点l间无边存在时,a
kl
=0,k和l为正整数。
[0052]
在一种实施例中,所述节点合并模块包括:
[0053]
第一单元,用于假设对所述网路节点两两合并相邻社区;确定社区区合并后与社区合并前的模块度变化比率qratio;若qratio最大且qratio》1,则合并两社区;
[0054]
第二单元,用于若qratio≤1,则保留原始社区分类;若当前的网络节点的社区与多个邻居社区合并后模块度比率最大且大于1,依然保留原始社区划分;
[0055]
第三单元,用于迭代进行社区合并指定次数s或者直到模块度比率不再出现大于1的情况时,将每个网络节点此时所携带的社区标签作为节点标签列表的初始标签。
[0056]
在一种实施例中,所述第一单元包括:
[0057]
第一子单元,用于如果一个特定的网络被划分为c个社区,则模块度定义如下所示:
[0058][0059]
其中,e
cc
表示社区c内所有边占整个网络边的比例,ac表示社区c内的节点的度占整个网络度的比例;还有一个清晰的物理意义:表示在相应的具有相同度序列的配置模型中这些节点之间的连边数占整个网络边数比例的期望值;lc表示社区c内所包含的边数,dc表示社区c内所有节点的度值之和,则式的等价表示方式为:
[0060][0061]
第二子单元,用于假设某一网络n被划分为两个社区c1和c2,网络的模块度值为:
[0062][0063]
第三子单元,用于将社区c1中的节点i移至社区c2中,此时网络的模块度值为:
[0064][0065]
其中,k
i,c1
表示节点i与社区c1的连边数,k
i,c2
表示节点i与社区c2的连边数,ki表示节点i的度;节点i移动后与移动前网络的模块度比率值为:
[0066][0067]
在一种实施例中,所述标签更新模块包括:
[0068]
依次更新单元,用于将所有节点随机排序,依次更新节点标签列表;
[0069]
相似确定单元,用于对于当前所需更新标签列表的目标节点,确定所述目标节点与其邻居节点的相似性值;
[0070]
第一标签确定单元,用于基于所述相似性值选取具有最大相似性值的邻居节点;在所述邻居节点的标签列表中随机选择概率正比于该标签在其列表中出现频率的社区标签传递给当前节点;
[0071]
第二标签确定单元,用于若具有最大相似性值的邻居节点不唯一,则在这些最大相似性值的邻居节点的标签列表中依然按出现概率随机选取标签作为待传递标签,并将待传递标签中频次最高者更新至当前节点。
[0072]
在一种实施例中,所述社区确定模块包括:
[0073]
概率统计单元,用于统计网路节点对应的标签列表中的各社区标签出现的概率;
[0074]
标签保留单元,用于保留所有出现概率大于预设阈值r的社区标签;
[0075]
社区确定单元,用于将所述社区标签所代表的社区确定为节点最终所属社区,当网络节点同时具有两种及两种以上社区标签时,则所述网络节点属于重叠节点。
[0076]
第三方面,本发明提供一种电子设备,包括存储器和存储有计算机程序的存储器,所述处理器执行所述程序时实现第一方面所述基于模块度优化的重叠社区发现方法的步骤。
[0077]
第四方面,本发明提供一种处理器可读存储介质,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使所述处理器执行第一方面所述基于模块度优化的重叠社区发现方法的步骤。。
[0078]
本发明提供的一种基于模块度优化的重叠社区发现方法及装置,利用模块度比率对网络进行初始划分,一方面加快了后续标签传播的速度,另一方面增加了原始方法的稳定性和鲁棒性;同时,在标签传播阶段,考虑到节点之间不同的相似性,首先选取具有最高相似性节点的标签传递给当前节点,度量节点相似性的方法采取资源分配指标。若存在不唯一的情况,再选取频次最高者添入内存,降低了原始方法的随机性,减少了标签传播过程的迭代次数,使得节点标签在较短时间内趋于稳定。
附图说明
[0079]
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0080]
图1为本发明实施例提供的一种基于模块度优化的重叠社区发现方法的流程示意图;
[0081]
图2为本发明实施例提供的一种基于模块度优化的重叠社区发现方法的流程示意图之二;
[0082]
图3为本发明实施例提供的一种基于模块度优化的重叠社区发现方法的流程示意图之三;
[0083]
图4为本发明实施例提供的一种基于模块度优化的重叠社区发现装置的组成结构示意图;
[0084]
图5是本发明实施例提供的电子设备的结构示意图。
具体实施方式
[0085]
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0086]
下面结合图1-图3描述本发明的基于模块度优化的重叠社区发现方法。图1为本发明实施例提供的一种基于模块度优化的重叠社区发现方法的流程示意图;图2为本发明实施例提供的一种基于模块度优化的重叠社区发现方法的流程示意图之二;图3为本发明实施例提供的一种基于模块度优化的重叠社区发现方法的流程示意图之三。
[0087]
在本发明一种具体实施方式中,本发明提供一种基于模块度优化的重叠社区发现方法,包括:
[0088]
步骤110:获取网络节点的社区标签以及所述网络节点的邻接关系数据;
[0089]
具体地,在一种实施例中,所述获取网络节点的社区标签以及所述网络节点的邻接关系数据包括:分配所述网络节点所属的社区标签;获取网络邻接矩阵net,所述net用于表示当前所需处理网络的内部结构,包括n阶矩阵,如下所示:
[0090][0091]
取任意的a
kl
,k∈[1,n],l∈[1,n],当节点k和节点l间有边存在时,a
kl
=1,当节点k和节点l间无边存在时,a
kl
=0,k和l为正整数。
[0092]
当然还可以进行其他参数的设置,初始化其他的相关参数:网络邻接矩阵net,模块度最大叠加次数s,标签传播最大次数t和后处理阈值r。例如,模块度最大叠加次数s:s的取值较大的影响了网络最终社区检测结果。通过实验观察可知,在规模较小结构较清晰的网络中,s通常取较小值,取值范围为[5,15];相反,在规模较大结构较模糊的网络中,s通常取较大值,即s∈[10,30]。标签传播最大迭代次数t:参数t与网络的规模和结构无关,当t》20时,该方法的输出相对稳定。后处理阈值r:r∈[0,0.5],当r》0.5时,处理后的每个节点标签内存只携带一个标签,方法输出非重叠社区。
[0093]
步骤120:基于所述社区标签以及所述邻接关系数据确定模块度比率,并基于所述模块度比率确定是否对所述网络节点进行合并;
[0094]
在一种实施例中,具体可以,假设对所述网路节点两两合并相邻社区;确定社区区合并后与社区合并前的模块度变化比率qratio;若qratio最大且qratio》1,则合并两社区;
[0095]
若qratio≤1,则保留原始社区分类;若当前的网络节点的社区与多个邻居社区合
并后模块度比率最大且大于1,依然保留原始社区划分;
[0096]
迭代进行社区合并指定次数s或者直到模块度比率不再出现大于1的情况时,将每个网络节点此时所携带的社区标签作为节点标签列表的初始标签。
[0097]
在一种实施例中,为了确定社区区合并后与社区合并前的模块度变化比率qratio可以进行以下步骤:
[0098]
如果一个特定的网络被划分为c个社区,则模块度定义如下所示:
[0099][0100]
其中,e
cc
表示社区c内所有边占整个网络边的比例,ac表示社区c内的节点的度占整个网络度的比例;还有一个清晰的物理意义:表示在相应的具有相同度序列的配置模型中这些节点之间的连边数占整个网络边数比例的期望值;lc表示社区c内所包含的边数,dc表示社区c内所有节点的度值之和,则式的等价表示方式为:
[0101][0102]
假设某一网络n被划分为两个社区c1和c2,网络的模块度值为:
[0103][0104]
将社区c1中的节点i移至社区c2中,此时网络的模块度值为:
[0105][0106]
其中,k
i,c1
表示节点i与社区c1的连边数,k
i,c2
表示节点i与社区c2的连边数,ki表示节点i的度;节点i移动后与移动前网络的模块度比率值为:
[0107][0108]
步骤130:基于当前更新的网路节点与相邻的网络节点的相似性值,确定是否对网络节点的社区标签进行更新,并将更新的社区标签存储于对应的标签列表;
[0109]
在一种实施例中,为了基于当前更新的网路节点与相邻的网络节点的相似性值,确定是否对网络节点的社区标签进行更新,并将更新的社区标签存储于对应的标签列表可以将所有节点随机排序,依次更新节点标签列表;对于当前所需更新标签列表的目标节点,确定所述目标节点与其邻居节点的相似性值;基于所述相似性值选取具有最大相似性值的邻居节点;在所述邻居节点的标签列表中随机选择概率正比于该标签在其列表中出现频率的社区标签传递给当前节点;若具有最大相似性值的邻居节点不唯一,则在这些最大相似性值的邻居节点的标签列表中依然按出现概率随机选取标签作为待传递标签,并将待传递标签中频次最高者更新至当前节点。
[0110]
步骤140:基于所述标签列表中的社区标签的出现概率确定与所述标签列表对应的网络节点的社区。
[0111]
具体地,可以统计网路节点对应的标签列表中的各社区标签出现的概率;保留所有出现概率大于预设阈值r的社区标签;将所述社区标签所代表的社区确定为节点最终所
属社区,当网络节点同时具有两种及两种以上社区标签时,则所述网络节点属于重叠节点。
[0112]
本发明实施例提供的一种基于模块度优化的重叠社区发现方法,利用模块度比率对网络进行初始划分,一方面加快了后续标签传播的速度,另一方面增加了原始方法的稳定性和鲁棒性;同时,在标签传播阶段,考虑到节点之间不同的相似性,首先选取具有最高相似性节点的标签传递给当前节点,度量节点相似性的方法采取资源分配指标。若存在不唯一的情况,再选取频次最高者添入内存,降低了原始方法的随机性,减少了标签传播过程的迭代次数,使得节点标签在较短时间内趋于稳定。
[0113]
请参考图2、图3,在本发明又一具体实施方式中,基于slpa方法,mslpa方法首先利用模块度优化思想对网络进行初始划分,其次在标签传播阶段,该方法优先考虑拥有较高相似性的邻居节点标签,使得网络社区划分更符合真实社区结果。mslpa增加了slpa的稳定性和鲁棒性,具体流程图如图3所示。
[0114]
参数初始化阶段,初始化方法所需个各类参数,包括net,s,t和r,在本示例网络下,s取值5,t取值10,r取值0.3。
[0115]
分配网络中节点所属的社区标签,本提案方法中1号节点分配标签0,2号节点分配标签1,依次类推。两两合并相邻社区,通过公式(1-5)计算社区合并后与社区合并前的模块度变化比率,若qratio最大且qratio》1,合并两社区;若qratio≤1,保留原始社区分类。若处理社区与多个邻居社区合并后模块度比率最大且大于1,依然保留原始社区划分。迭代进行社区合并指定次数s或者直到模块度比率不再出现大于1的情况,将每个节点此时所携带的社区标签作为节点标签内存的初始标签。
[0116]
在预处理阶段,使用模块度比率体现社区合并前后模块度的变化成功避免了在实验过程中小于等于0的结果出现。同时,随着参数s的取值增大,模块度预处理结果对本文方法mslpa检测的最终社区划分结果影响越大,所以参数s会根据网络规模及复杂程度进行取值调节。
[0117]
模块度初始划分阶段,首先初始化节点社区标签{1:[0],2:[1],3:[2],4:[3],5:[4],6:[5],7:[6],8:[7],9:[8],10:[9]},两两合并两节点,同时计算合并前后模块度变化比率,若模块度比率大于1,合并两节点社区,若模块度比率小于等于1,节点保留在原社区,若当前节点与多个邻居节点合并后模块度比率最大且大于1,节点依然保留在原社区。通过模块度预处理,可以对网络进行粗聚类,在本实例中,经过粗聚类后,每个节点拥有的社区标签为{1:[0],2:[0],3:[0],4:[3],5:[5],6:[5],7:[5],8:[9],9:[9],10:[9]}。
[0118]
标签传播阶段,考虑到网络中每个邻居节点与当前节点具有不同的相似性,所以在节点标签进行更新时,选择具有相似性最高节点的标签使得方法检测结果更符合真实网络结构且更加稳定。
[0119]
将所有节点随机排序,依次更新节点标签内存。对于当前所需更新标签内存的目标节点,通过公式(1-6)计算该节点与其邻居节点的相似性值,即资源分配指标ra。首先选取具有最大相似性值的邻居节点,然后在该邻居节点的标签内存中随机选择概率正比于该标签在其列表中出现频率的标签传递给当前节点。若具有最大相似性值的邻居节点不唯一,在这多个邻居节点的标签内存中依然按出现概率随机选取标签作为待传递标签,将待传递标签中频次最高者更新至当前节点的内存中,若该值有多个,进一步通过随机选取确定需更新的标签,从而实现节点标签内存的更新。
[0120]
具体地,标签传播阶段,通过计算相似性决定当前节点的更新标签,例如节点4,其邻居节点集合为{1,2,3,5,6,7,8},节点4与其邻居节点的资源分配指标ra为{1:1.3333,2:1.3333,3:1.3333,5:1.3333,6:1.3333,7:1.3333,8:0},可以看出,节点4与1号、2号、3号、5号、6号和7号节点的相似性最高且相同,此时方法采用传统的标签传播方式,在6个相似性最高且相同的邻居节点标签内存中按概率选取待传播的标签传递至当前节点,首次进行标签传播时,传递的标签为{1:[0],2:[0],3:[0],5:[5],6:[5],7:[5]},节点4接收到出现频次最高的标签为{0,5},随机取一,第一轮选取标签5。通过方法实例可看出,节点4在10次标签传播过程后,取得标签内存为[3,5,5,5,5,0,0,0,0,5,5],其中有6次随机选取标签5,4次随机选取标签0,符合随机选取原则。
[0121]
后处理阶段,计算每个节点标签内存中互异标签出现的概率,并用阈值r进行后处理。例如节点4标签传播阶段结束后的标签内存为[3,5,5,5,5,0,0,0,0,5,5],其中3号标签出现的概率为p1=1/11=0.091,5号标签出现的概率为p2=6/11=0.545,0号标签出现的概率为p3=4/11=0.364。阈值r=0.3,p1<r,3号标签删除;p2>r,5号标签保留;p3>r,0号标签保留。故节点4的最终标签值为[0,5]。将网络中剩余节点的标签内存进行相同的处理,得到的列表即为最终网络节点社区划分。
[0122]
后处理过程中,通过阈值r对网络中所有节点的标签内存依次处理。保留所有出现概率大于阈值r的标签,这些标签所代表的社区即为节点最终所属社区,同时具有两种及两种以上标签的节点属于重叠节点。输出结果,将网络节点的最终社区划分利用图形化形式进行展示,其中,相同颜色的节点代表节点位于同一社区,例如节点1和节点2;反之,不同颜色的节点代表节点属于不同的社区,例如节点1和节点6。其中,红色节点4为重叠节点,分属于粉色社区和绿色社区。
[0123]
本发明实施例提案提出的基于模块度优化的社区发现方法,根据模块度优化思想对网络进行粗聚类,同时依据同一社区中的节点具有更高的相似性,利用节点间相似性选取标签。(1)通过模块度优化对网络进行预处理,降低后续标签传播带来的随机性,同时加快方法的执行效率;(2)通过资源分配指标ra实现标签传播,使得方法运行结果更符合真实社区结构。利用模块度优化思想,引进模块度比率概念,将模块度比率大于1的两两社区进行合并,使mslpa方法在初始化阶段利用模块度最大化原理对网络进行粗聚类。通过该方法不但减少了后续标签传播过程中的随机性,而且提高了原始方法的执行效率。改进标签传播方式,mslpa根据同一社区中的节点具有更高相似性的原理,利用资源分配指标ra进行标签选取,从而使社区检测结果更符合真实的网络结构。若拥有最高ra指标的邻居并非一个,那么选取频次最高者添入内存。
[0124]
下面对本发明提供的基于模块度优化的重叠社区发现装置进行描述,下文描述的基于模块度优化的重叠社区发现装置与上文描述的基于模块度优化的重叠社区发现方法可相互对应参照。
[0125]
请参考图4,图4为本发明实施例提供的一种基于模块度优化的重叠社区发现装置的组成结构示意图。
[0126]
在本发明又一具体实施方式中,本发明实施例提供一种基于模块度优化的重叠社区发现装置400,包括:
[0127]
数据获取模块410,用于获取网络节点的社区标签以及所述网络节点的邻接关系
数据;
[0128]
节点合并模块420,用于基于所述社区标签以及所述邻接关系数据确定模块度比率,并基于所述模块度比率确定是否对所述网络节点进行合并;
[0129]
标签更新模块430,用于基于当前更新的网路节点与相邻的网络节点的相似性值,确定是否对网络节点的社区标签进行更新,并将更新的社区标签存储于对应的标签列表;
[0130]
社区确定模块440,用于基于所述标签列表中的社区标签的出现概率确定与所述标签列表对应的网络节点的社区。
[0131]
在一种实施例中,所述数据获取模块包括:
[0132]
标签分配单元,用于分配所述网络节点所属的社区标签;
[0133]
关系获取单元,用于获取网络邻接矩阵net,所述net用于表示当前所需处理网络的内部结构,包括n阶矩阵,如下所示:
[0134][0135]
取任意的a
kl
,k∈[1,n],l∈[1,n],当节点k和节点l间有边存在时,a
kl
=1,当节点k和节点l间无边存在时,a
kl
=0,k和l为正整数。
[0136]
在一种实施例中,所述节点合并模块包括:
[0137]
第一单元,用于假设对所述网路节点两两合并相邻社区;确定社区区合并后与社区合并前的模块度变化比率qratio;若qratio最大且qratio》1,则合并两社区;
[0138]
第二单元,用于若qratio≤1,则保留原始社区分类;若当前的网络节点的社区与多个邻居社区合并后模块度比率最大且大于1,依然保留原始社区划分;
[0139]
第三单元,用于迭代进行社区合并指定次数s或者直到模块度比率不再出现大于1的情况时,将每个网络节点此时所携带的社区标签作为节点标签列表的初始标签。
[0140]
在一种实施例中,所述第一单元包括:
[0141]
第一子单元,用于如果一个特定的网络被划分为c个社区,则模块度定义如下所示:
[0142][0143]
其中,e
cc
表示社区c内所有边占整个网络边的比例,ac表示社区c内的节点的度占整个网络度的比例;还有一个清晰的物理意义:表示在相应的具有相同度序列的配置模型中这些节点之间的连边数占整个网络边数比例的期望值;lc表示社区c内所包含的边数,dc表示社区c内所有节点的度值之和,则式的等价表示方式为:
[0144][0145]
第二子单元,用于假设某一网络n被划分为两个社区c1和c2,网络的模块度值为:
[0146]
[0147]
第三子单元,用于将社区c1中的节点i移至社区c2中,此时网络的模块度值为:
[0148][0149]
其中,k
i,c1
表示节点i与社区c1的连边数,k
i,c2
表示节点i与社区c2的连边数,ki表示节点i的度;节点i移动后与移动前网络的模块度比率值为:
[0150][0151]
在一种实施例中,所述标签更新模块包括:
[0152]
依次更新单元,用于将所有节点随机排序,依次更新节点标签列表;
[0153]
相似确定单元,用于对于当前所需更新标签列表的目标节点,确定所述目标节点与其邻居节点的相似性值;
[0154]
第一标签确定单元,用于基于所述相似性值选取具有最大相似性值的邻居节点;在所述邻居节点的标签列表中随机选择概率正比于该标签在其列表中出现频率的社区标签传递给当前节点;
[0155]
第二标签确定单元,用于若具有最大相似性值的邻居节点不唯一,则在这些最大相似性值的邻居节点的标签列表中依然按出现概率随机选取标签作为待传递标签,并将待传递标签中频次最高者更新至当前节点。
[0156]
在一种实施例中,所述社区确定模块包括:
[0157]
概率统计单元,用于统计网路节点对应的标签列表中的各社区标签出现的概率;
[0158]
标签保留单元,用于保留所有出现概率大于预设阈值r的社区标签;
[0159]
社区确定单元,用于将所述社区标签所代表的社区确定为节点最终所属社区,当网络节点同时具有两种及两种以上社区标签时,则所述网络节点属于重叠节点。
[0160]
本发明提供的一种基于模块度优化的重叠社区发现装置,利用模块度比率对网络进行初始划分,一方面加快了后续标签传播的速度,另一方面增加了原始方法的稳定性和鲁棒性;同时,在标签传播阶段,考虑到节点之间不同的相似性,首先选取具有最高相似性节点的标签传递给当前节点,度量节点相似性的方法采取资源分配指标。若存在不唯一的情况,再选取频次最高者添入内存,降低了原始方法的随机性,减少了标签传播过程的迭代次数,使得节点标签在较短时间内趋于稳定。
[0161]
在此需要说明的是,本发明实施例提供的终端以及网络设备,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
[0162]
图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communication interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的计算机程序,以执行基于模块度优化的重叠社区发现方法的步骤,例如包括:
[0163]
获取网络节点的社区标签以及所述网络节点的邻接关系数据;
[0164]
基于所述社区标签以及所述邻接关系数据确定模块度比率,并基于所述模块度比
率确定是否对所述网络节点进行合并;
[0165]
基于当前更新的网路节点与相邻的网络节点的相似性值,确定是否对网络节点的社区标签进行更新,并将更新的社区标签存储于对应的标签列表;
[0166]
基于所述标签列表中的社区标签的出现概率确定与所述标签列表对应的网络节点的社区。
[0167]
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0168]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的基于模块度优化的重叠社区发现方法的步骤,例如包括:
[0169]
获取网络节点的社区标签以及所述网络节点的邻接关系数据;
[0170]
基于所述社区标签以及所述邻接关系数据确定模块度比率,并基于所述模块度比率确定是否对所述网络节点进行合并;
[0171]
基于当前更新的网路节点与相邻的网络节点的相似性值,确定是否对网络节点的社区标签进行更新,并将更新的社区标签存储于对应的标签列表;
[0172]
基于所述标签列表中的社区标签的出现概率确定与所述标签列表对应的网络节点的社区。
[0173]
另一方面,本技术实施例还提供一种处理器可读存储介质,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使所述处理器执行上述各实施例提供的基于模块度优化的重叠社区发现方法的步骤,例如包括:
[0174]
获取网络节点的社区标签以及所述网络节点的邻接关系数据;
[0175]
基于所述社区标签以及所述邻接关系数据确定模块度比率,并基于所述模块度比率确定是否对所述网络节点进行合并;
[0176]
基于当前更新的网路节点与相邻的网络节点的相似性值,确定是否对网络节点的社区标签进行更新,并将更新的社区标签存储于对应的标签列表;
[0177]
基于所述标签列表中的社区标签的出现概率确定与所述标签列表对应的网络节点的社区。
[0178]
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nand flash)、固态硬盘(ssd))等。
[0179]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可
以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0180]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0181]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1