CN103345531B - 一种复杂网络中网络社团的确定方法及装置 - Google Patents
一种复杂网络中网络社团的确定方法及装置 Download PDFInfo
- Publication number
- CN103345531B CN103345531B CN201310320095.0A CN201310320095A CN103345531B CN 103345531 B CN103345531 B CN 103345531B CN 201310320095 A CN201310320095 A CN 201310320095A CN 103345531 B CN103345531 B CN 103345531B
- Authority
- CN
- China
- Prior art keywords
- node
- corporations
- gravity center
- network
- initial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种复杂网络中网络社团的确定方法及装置,所述复杂网络包括多个节点,每个所述节点分别与至少一个区别于自身节点的节点相连,相连节点之间的边具有两个边方向,且每个边方向具有各自的边权值,所述方法包括:依据所述复杂网络中相连节点之间边的边权值,获取所述复杂网络中每个节点的局部重心性数值;依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点;在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团;确定所述初始社团中的网络社团。
Description
技术领域
本申请涉及计算机应用技术领域,特别涉及一种复杂网络中网络社团的确定方法及装置。
背景技术
随着目前对网络的性质、物理意义及数学特性的深入研究,发现在一个复杂网络中可以含有多个网络社团,各个网络社团均为一组相互之间有着较大的相似性而与其所在复杂网络中的其他网络社团之间有着很大不同的节点群,也就是说,各个网络社团中内部节点之间的连接非常紧密,而每个网络社团之间的连接相对稀疏。例如,万维网可以看作为由大量网络社团组成的复杂网络,在万维网中,同一个网络社团内部的各个网站关注共同兴趣的话题。例如,在生物、电路等网络中,可以将各个节点依据其各自不同的性质划分为不同的网络社团。
其中,复杂网络及每个网络社团通常为有向赋权网络,在每个网络社团中包括多个节点,节点之间的连线称为边,每条边具有方向性,每条边在其每个方向上具有其各自的边权值。例如,在邮件网络中,从边的方向可以辨别通信行为中的收件人和发件人,邮件网络中的两个节点之间收发邮件的数量可能各不相同,由此可以在一定程度上标明双方关系的紧密型。
现有技术中,已经有多种实现网络社团发现的方案。以基于聚合思想的Newman快算算法的发现方案为例,其思想为:将复杂网络中的每个节点作为一个社团,合并使得模块度函数值增益最大的两个社团,依次迭代计算,直到整个复杂网络合并成为一个大社团。整个计算过程以树状图呈现,在模块度函数Q取得最大值时对网络进行划分。Newman快速算法的优点是计算速度很快,总的时间复杂度为O(m(m+n)),其中m为网络中的边数,n为节点数。
上述Newman快速算法虽然能够实现复杂网络中的社团发现,但该方案忽略了复杂网络中存在节点间边的方向及权重等特点,使得其进行社团发现的准确率较低。
发明内容
本申请所要解决的技术问题是提供一种复杂网络中网络社团的确定方法及装置,用以解决现有技术中采用Newman快速算法进行复杂网络中的社团发现时,由于忽略了复杂网络中存在节点间边的方向及权重等特点,使得其进行社团发现的准确率较低的技术问题。
本申请提供了一种复杂网络中网络社团的确定方法,所述复杂网络包括多个节点,每个所述节点分别与至少一个区别于自身节点的节点相连,相连节点之间的边具有两个边方向,且每个边方向具有各自的边权值,所述方法包括:
依据所述复杂网络中相连节点之间边的边权值,获取所述复杂网络中每个节点的局部重心性数值;
依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点;
在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团;
确定所述初始社团中的网络社团。
上述方法,优选的,所述依据所述复杂网络中相连节点之间边的边权值,获取所述复杂网络中每个节点的局部重心性数值,包括:
利用获取所述复杂网络中每个节点的权重值;
其中,wij为所述复杂网络中节点vi指向节点vj的边方向的边权值,wji为节点vj指向节点vi的边方向的边权值,r为边权值wji中与边权值wij相关联的数值,Hi={vj|eij∈E∪eij∈E}∪{vi}为所述复杂网络中节点vi所属的邻域节点,λ、β为参数,wi为所述复杂网络中节点vi的权重值;
依据所述复杂网络中每个节点的权重值,利用获取所述复杂网络中每个节点的局部重心性数值;
其中,wj为所述复杂网络中节点vj的权重值,Act(vi)为所述节点vi的局部重心性数值。
上述方法,优选的,所述依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点,包括:
获取局部重心性数值大于预设第一数值的节点作为初始局部重心点;
在所述复杂网络中,确定分别以每个所述初始局部重心点为重心的初始局部社团;
分别在每个所述初始局部社团中,确定到该初始局部社团中其他节点的距离之和最小的节点作为目标局部重心点。
上述方法,优选的,所述依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点,包括:
分别确定每个所述节点的邻域所组成社团各自的社团密度值;
获取每个所述节点的局部重心性数值与该节点对应的社团密度值的乘积;
确定所述乘积大于预设第二数值的节点作为目标局部重心点。
上述方法,优选的,所述在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团,包括:
对所述目标局部重心点依据其各自的局部重心性数值的大小进行排序;
依次分别确定以排序后的每个所述目标局部重心点为重心的初始社团。
上述方法,优选的,所述依次分别确定以排序后的每个所述目标局部重心点为重心的初始社团,包括:
选取排序后的第一个目标局部重心点作为当前目标局部重心点;
将与所述当前目标局部重心点及所述当前目标局部重心点相连接的节点确定为一个初始社团;
选取排序在所述当前目标局部重心点之后的第一个目标局部重心点作为当前目标局部重心点;
将所述当前目标局部重心点及与所述当前目标局部重心点相连接且不存在与其他初始社团中的节点确定为一个初始社团,返回执行所述选取排序在所述当前目标局部重心点之后的第一个目标局部重心点作为当前目标局部重心点,直到所述当前目标局部重心点为排序后的最后一个目标局部重心点。
上述方法,优选的,所述确定所述初始社团中的网络社团,包括:
任意选取两个所述初始社团组成一个社团组;
获取每个所述社团组的模块度函数值增量;
对每个所述社团组依据其各自的模块度函数值增量的大小进行排序;
在排序后的所述社团组中,依次选取L个其模块度函数值增量大于零且其内所包含的初始社团唯一被选取的社团组;
将选取的社团组中的两个初始社团进行合并,得到新的社团,将所述新的社团作为初始社团,返回执行所述任意选取两个所述初始社团组成一个社团组,直到任意选取两个初始社团组成的社团组的模块度函数值增量小于或者等于零;
确定当前存在的初始社团为所述复杂网络中的网络社团;
其中,L为所述社团组中,其模块度函数值增量大于或者等于(ΔQbiggest-ΔQsmallest)2的社团组的数量值,ΔQbiggest为模块度函数值增量大于零的社团组中模块度函数值增量的最大值,ΔQsmallest为模块度函数值增量大于零的社团组中模块度函数值增量的最小值。
上述方法,优选的,所述方法还包括:
确定每个所述网络社团中,与区别于其所属网络社团的目标网络社团节点相连接的目标节点,所述目标节点组成节点组;
选取所述节点组中的一个目标节点作为当前节点;
获取所述目标网络社团中,在所述当前节点添加至所述目标网络社团时的目标社团强度增量;
判断所述目标社团强度增量是否小于或者等于零,如果是,将所述当前节点移除出所述节点组中,返回执行所述选取所述节点组中的一个目标节点作为当前节点,直到所述节点组为空,否则,将所述当前节点确定为该当前节点的所属网络社团及所述目标网络社团的重叠节点,并将所述当前节点移除出所述节点组中,选取所述当前节点的相连节点作为目标节点添加至所述节点组中,返回执行所述选取所述节点组中的一个目标节点作为当前节点,直到所述节点组为空;
依据所述重叠节点,确定每两个所述网络社团之间的重叠网络社团。
本申请还提供了一种复杂网络中网络社团的确定装置,所述复杂网络包括多个节点,每个所述节点分别与至少一个区别于自身节点的节点相连,相连节点之间的边具有两个边方向,且每个边方向具有各自的边权值,所述方法包括:
局部重心性获取单元,用于依据所述复杂网络中相连节点之间边的边权值,获取所述复杂网络中每个节点的局部重心性数值;
局部重心点确定单元,用于依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点;
初始社团确定单元,用于在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团;
网络社团确定单元,用于确定所述初始社团中的网络社团。
上述装置,优选的,所述局部重心性获取单元,包括:
权重值获取子单元,用于利用获取所述复杂网络中每个节点的权重值;
其中,wij为所述复杂网络中节点vi指向节点vj的边方向的边权值,wji为节点vj指向节点vi的边方向的边权值,r为边权值wji中与边权值wij相关联的数值,Hi={vj|eij∈E∪eij∈E}∪{vi}为所述复杂网络中节点vi所属的邻域节点,λ、β为参数,wi为所述复杂网络中节点vi的权重值;
局部重心性获取子单元,用于依据所述复杂网络中每个节点的权重值,利用获取所述复杂网络中每个节点的局部重心性数值;
其中,wj为所述复杂网络中节点vj的权重值,Act(vi)为所述节点vi的局部重心性数值。
上述装置,优选的,所述局部重心点确定单元,包括:
初始局部重心点确定子单元,用于获取局部重心性数据值大于预设第一数值的节点作为初始局部重心点;
初始局部社团确定子单元,用于在所述复杂网络中,确定分别以每个所述初始局部重心点为重心的初始局部社团;
第一局部重心点确定子单元,用于分别在每个所述初始局部社团中,确定到该初始局部社团中其他节点的距离之和最小的节点作为目标局部重心点。
上述装置,优选的,所述局部重心点确定单元包括:
社团密度值确定子单元,用于分别确定每个所述节点的邻域所组成社团各自的社团密度值;
乘积获取子单元,用于获取每个所述节点的局部重心性数值与该节点对应的社团密度值的乘积;
第二局部重心点确定子单元,用于确定所述乘积大于预设第二数值的节点作为目标局部重心点。
上述装置,优选的,所述初始社团确定单元,包括:
局部重心点排序子单元,用于对所述目标局部重心点依据其各自的局部重心性数值的大小进行排序;
初始社团确定子单元,用于依次分别确定以排序后的每个所述目标局部重心点为重心的初始社团。
上述装置,优选的,所述初始社团确定子单元,包括:
第一局部重心点选取模块,用于选取排序后的第一个目标局部重心点作为当前目标局部重心点;
第一初始社团确定模块,用于将与所述当前目标局部重心点及所述当前目标局部重心点相连接的节点确定为一个初始社团;
迭代局部重心点选取模块,用于选取排序在所述当前目标局部重心点之后的第一个目标局部重心点作为当前目标局部重心点,触发迭代初始社团确定模块;
所述迭代初始社团确定模块,用于将所述当前目标局部重心点及与所述当前目标局部重心点相连接且不存在与其他初始社团中的节点确定为一个初始社团,返回触发所述迭代局部重心点选取模块,直到所述当前目标局部重心点为排序后的最后一个目标局部重心点。
上述装置,优选的,所述网络社团确定单元,包括:
社团组组合子单元,用于任意选取两个所述初始社团组成一个社团组;
增量获取子单元,用于获取每个所述社团组的模块度函数值增量;
社团组排序子单元,用于对每个所述社团组依据其各自的模块度函数值增量的大小进行排序;
社团组选取子单元,用于在排序后的所述社团组中,依次选取L个其模块度函数值增量大于零且其内所包含的初始社团唯一被选取的社团组;
社团组合子单元,用于将选取的中的两个初始社团进行合并,得到新的社团,将所述新的社团作为初始社团,返回触发所述社团组组合子单元,直到所述社团组组合子单元组合到的社团组的模块度函数值增量小于或者等于零;
社团确定子单元,用于确定当前存在的初始社团为所述复杂网络中的网络社团;
其中,L为所述社团组中,其模块度函数值增量大于或者等于(ΔQbiggest-ΔQsmallest)2的社团组的数量值,ΔQbiggest为模块度函数值增量大于零的社团组中模块度函数值增量的最大值,ΔQsmallest为模块度函数值增量大于零的社团组中模块度函数值增量的最小值。
上述装置,优选的,所述装置还包括:
目标节点确定单元,用于在所述网络社团确定单元确定到所述网络社团之后,确定每个所述网络社团中,与区别于其所属网络社团的目标网络社团节点相连接的目标节点,所述目标节点组成节点组;
当前节点确定单元,用于选取所述节点组中的一个目标节点作为当前节点;
强度增量获取单元,用于获取所述目标网络社团中,在所述当前节点添加至所述目标网络社团时的目标社团强度增量;
重叠判断单元,用于判断所述目标社团强度增量是否小于或者等于零,如果是,将所述当前节点移除出所述节点组中,返回触发所述当前节点确定单元,直到所述节点组为空,否则,将所述当前节点确定为该当前节点的所属网络社团及所述目标网络社团的重叠节点,并将所述当前节点移除出所述节点组中,选取所述当前节点的相连节点作为目标节点添加至所述节点组中,返回触发所述当前节点确定单元,直到所述节点组为空;
重叠社团确定单元,用于依据所述重叠节点,确定每两个所述网络社团之间的重叠网络社团。
由上述方案可知,本申请提供的一种复杂网络中网络社团的确定方法及装置,通过依据所述复杂网络中相连节点之间边的边权值,获取所述复杂网络中每个节点的局部重心性数值,再依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点,之后在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团,从而确定所述初始社团中的网络社团。本申请中区别与现有技术中忽略网络的有向性和有权性导致网络社团的发现准确率低的情况,首先依据复杂网络中各个节点间边权值计算整个复杂网络中每个节点的局部重心性数值,进而确定整个复杂网络中的目标局部重心点,进而确定初始社团,再经过对初始社团的筛选得到准确率较高的网络社团。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种复杂网络中网络社团的确定方法实施例一的流程图;
图2为本申请实施例一中复杂网络中局部重心的示例图;
图3为本申请实施例一中的部分流程图;
图4为本申请实施例一中的另一部分流程图;
图5为本申请提供的一种复杂网络中网络社团的确定方法实施例二的部分流程图;
图6为本申请实施例二中重叠节点的示例图;
图7为本申请提供的一种复杂网络中网络社团的确定装置实施例三的结构示意图;
图8为本申请实施例三的部分结构示意图;
图9为本申请实施例三的另一部分结构示意图;
图10为本申请实施例三的又一部分结构示意图;
图11为本申请实施例三的又一部分结构示意图;
图12为本申请实施例三的又一部分结构示意图;
图13为本申请实施例三的又一部分结构示意图;
图14为本申请提供的一种复杂网络中网络社团的确定装置实施例四的部分结构示意图;
图15为本申请各个实施例实际实现中的系统总体框架图;
图16为本申请在实际实现中所处的总体交互关系图;
图17为本申请系统实现网络社团确定并绘制图示的细节时序图;
图18为本申请实际实现中各算法输出的社团强度曲线的示意图;
图19为本申请实际实现中各算法输出的社团强度曲线的另一示意图;
图20为本申请实例中的可视化网络示意图;
图21为现有社团发现方案的社团发现输出结果示意图;
图22为本申请实例中的社团发现输出结果示意图;
图23为本申请实例中的重叠社团发现的输出结果示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1,为本申请提供的一种复杂网络中网络社团的确定方法实施例一的流程图,所述方法适用于所述复杂网络中,而所述复杂网络包括多个节点,每个所述节点分别与至少一个区别于自身节点的节点相连,而相连节点之间的连线称为边,每条所述边均具有两个边方向,且每条所述边具有各自的边权值。即为,在复杂网络中,节点1和节点2相连,两者之间的边具有两个边方向:节点1指向节点2的方向和节点2指向节点1的方向,所述边在这两个方向上均具有各自的边权值即各自方向上的边的权重值。
例如,在电子邮件网络中,所述电子邮件网络作为上述的复杂网络,电子邮件网络中邮件的收件方和发件方即为所述复杂网络中相连的两个节点。例如,邮箱用户A与邮箱用户B之间有邮件来往,邮箱用户A向邮箱用户B发送了1封邮件,而邮箱用户B向邮箱用户A发送了10封邮件,由此,可以看出,节点1(邮箱用户A)与节点2(邮箱用户B)之间具有边,该边在节点1指向节点2的方向上具有边权值1,在节点2指向节点1的方向上具有边权值10。
需要说明的是,相连节点之间边的权重值在一定程度上表明两节点之间的紧密性。例如,邮箱用户A向邮箱用户B发送了1封邮件,而A向邮箱用户C发送了10封邮件,显然A对B和A对C的紧密关系是不同的,所以邮件发送数量,即网络中边的权重值是非常重要的信息;另外,如果A向B发送了100封邮件,B没有向A发送邮件,而A向C发送了50封邮件,C给A回复50封邮件,虽然在A和B、A和C之间总的收发邮件数目相同,但是,A和C的关系要比A和B的关系紧密,即每个方向上邮件的收发数量,即网络中边在每个方向上的边权值也是很重要的信息。为此,本申请将充分考虑复杂网络中节点之间边的方向和权重。
因此,本申请实施例一中所述方法可以包括以下步骤:
步骤101:依据所述复杂网络中相连节点之间边的边权值,获取所述复杂网络中每个节点的局部重心性数值。
其中,所述步骤101中的边权值包括相连节点之间边的两个边方向上的边权值。
而所述步骤101在实际实现时可以通过以下方式实现:
首先对所述复杂网络中每个节点的邻域进行定义表示,即为:所述复杂网络中节点vi的邻域节点为:Hi={vj|eij∈E∪eij∈E}∪{vi},其中,E为数学定义表示中的限值。
其次,对节点vi的权重值进行计算:利用以下公式(1)获取所述复杂网络中每个节点的权重值:
其中,wij为所述复杂网络中节点vi指向节点vj的边方向的边权值,wji为节点vj指向节点vi的边方向的边权值,r为边权值wji中与边权值wij相关联的数值,Hi为所述复杂网络中节点vi所属的邻域节点,λ、β为参数,而计算的到wi即为所述复杂网络中节点vi的权重值。
最后,依据所述复杂网络中每个节点的权重值wi,利用以下公式(2)获取所述复杂网络中每个节点的局部重心性数值;
其中,wi为所述复杂网络中节点vi的权重值,wj为所述复杂网络中节点vj的权重值,计算得到的Act(vi)即为所述节点vi的局部重心性数值。
例如,在电子邮件网络中,节点wij表示由节点vi向节点vj发送邮件的数目,wji表示节点vj向节点vi发送邮件的数目,r表示节点vi向节点vj中发送的wij封邮件中收到的回复邮件数目,λ、β为参数,因此,电子邮件网络中节点vi的权重由公式(1)计算得到wi,而Hi为所述复杂网络中节点vi所属的邻域节点,由Hi={vj|eij∈E∪eij∈E}∪{vi}计算得到。之后,利用公式(2)计算节点vi的局部重心性数值。
步骤102:依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点。
其中,所述步骤102可以通过以下方式实现:
对每个所述节点依据其各自的局部重心性数值进行排序,选取排序在前n个的节点作为所述复杂网络的目标局部重心点。
需要说明的是,在所述步骤101对每个节点的局部重心性数值计算的过程中,其每个节点步长即边权值设置为1,即值考虑了与节点vi直接相连的节点的情况,若直接由上述目标局部重心点的获取方式获取目标局部重心点,那么会使得获取到的目标局部重心性过于狭隘,并不准确,且使得最终得到的网络社团的准确率降低。
如图2中所示,每条边的边权值为1,利用上述步骤101获取到的局部重心性排序确定的目标局部重心点为节点a和节点b,而将每条边的边权值修改为2时,图2中就只有节点b为局部重心,因此,上述步骤102直接对局部重心性数值排序得到目标局部重心点的方式会影响获取到的目标局部重心点的准确性。
因此,所述步骤102中也可以依据以下两种方式实现目标局部重心点的确定。
第一方式:
获取局部重心性数值大于预设第一数值的节点作为初始局部重心点,其中,所述预设第一数值可以由用户设置,也可以先对依据局部重心性数值的大小顺序进行排序,再选取排序在第k个的节点的局部重心性数值作为第一数值,所述k值由用户设置。在获取到初始局部重心点之后,分别以每个所述初始局部重心点为中心确定初始局部社团,即以初始局部重心点为中心,步长为m的节点组成初始局部社团Ci,由此利用以下公式(3)对每个Ci计算其各自的社团强度函数值:
其中,表示Ci内的节点vi在Ci内部的边的边权值之和。表示Ci内的节点vi在Ci外部的边的边权值之和。该公式的实质含义即为Ci内部边的边权值总和除以Ci内成员所连边的边权值的总和。
需要说明的是,D(Ci)的值越大,Ci内节点的连接越紧密,社团的紧密性强度就越高,当然D(Ci)的最优值还需要大量实验来获取验证。
其中,在每个社团网络中,其局部重心所应当满足的条件应该为:在其所在的局部范围内,该重心节点到达其他任意节点的距离应该是最短的,由此才能保证其重心的位置。因此,在上述确定初始局部社团之后,分别在每个所述初始局部社团中,确定到该初始局部社团中其他节点的距离之和最小的节点作为目标局部重心点,即为,在所有的初始局部社团中,选取该初始局部社团内到其所在初始局部社团中其他节点的距离之和最小的节点,该节点即为该初始局部社团内新的局部重心点即本步骤中所需要的目标局部重心点。
例如,在电子邮件网络中,对每个初始局部社团中,其内节点到其所在初始局部社团中其他节点的距离之和的计算可以利用以下公式(4)实现:
其中,wij为节点vi向vj发送邮件次数,wji为节点vj向vi发送邮件的次数,λ为参数。由此,节点vi到C内各节点的最短距离为:
利用vi′=argmini∈Clengthi得到新的重心,不断进行迭代,直到连续两次计算的ΔD≤0结束,由此保证最后的vi′为C范围内的局部重心。
以下为对上述第一方式在实际的软件逻辑中实现的算法解释(包含有上述步骤101的实现算法解释):
第一局部重心发现(Local Center of Gravity Detection1,LCGD1)算法
输入:有向赋权网络图G=(V,E,W)
输出:网络中的局部重心节点
1、对所述复杂网络中的原始数据预处理,剔除所述复杂网络中的干扰节点,得到节点数据集Init_Data_Set;
2、for(Init_Data_Set中的每个节点vi)
根据公式(1)求节点vi的点权wi;
end for
3、得到节点的权重集和Node_Weight_Set;
4、for(Init_Data_Set中的每个节点vi)
根据公式(2)求节点vi的局部重心性数值Act(vi);
end for
5、初步得到节点的局部重心性数值后,对各节点的局部重心性数值的大小顺序进行排序,取出top d构成初始局部重心集合Init_Import_Set;
9、输出局部重心结果集Import_Set。
第二方式:
分别确定所述复杂网络中每个所述节点的邻域所组成社团各自的社团紧密度值,即每个所述节点的邻域均作为一个网络社团,计算每个邻域网络社团的社团紧密度值。在有向赋值网络中区域内的社团密度为区域内所有边的总权值除以区域内的节点个数,因此,所述每个节点的邻域的社团密度为其中,为节点vi邻域Hi内所有边的总权值,count(Hi)为Hi内的节点总数。
由于社团的局部重心性越强及社团内的社团密度值越大,那么该节点既可以作为网络局部重心点,而其邻域即可看作为初始的社团结构。因此,在获取到每个节点的邻域的社团密度值之后,获取每个所述节点的局部重心性数值与该节点对应的社团密度值的乘积,即的数值,由此再确定所述乘积大于预设第二数值的节点作为目标局部重心点。所述第二数值可以由用户设置,也可以对所述乘积进行大小排序之后,选取排序在第m个的乘积值作为第二数值,该m值由用户设置。
以下对上述第二方式在实际的软件逻辑中实现的算法解释(包含有上述步骤101的实现算法解释):
第一局部重心发现LCGD2算法:
1、对所述复杂网络中的原始数据预处理,剔除所述复杂网络中的干扰节点,得到节点数据集Init_Data_Set;
2、for(Init_Data_Set中的每个节点vi)
根据公式(1)求节点vi的点权wi;
end for
3、得到节点的权重集和Node_Weight_Set;
4、for(Init_Data_Set中的每个节点vi)
计算节点vi邻域Hi内节点及节点数目count(Hi);
根据点权集合Node_Weight_Set和公式(2)求节点vi的局部重心性数值Act(vi);
计算每个节点的局部重心性数值和其各自对应的邻域社团强度的乘积
end for
5、选取Import(vi)大于所述第二数值的节点作为目标局部重心点,或选取其对应的Import(vi)按照大小排序后排序在前m-1位的节点作为目标局部重心点。
步骤103:在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团。
其中,所述步骤103在实际应用中可以采用下述方式实现,参考图3,为所述步骤103的流程图,所述步骤103可以包括以下步骤:
步骤301:对所述目标局部重心依据其各自的局部重心性数值的大小进行排序。
其中,在所述步骤301之后,再依次分别确定以排序后的每个所述目标局部重心点为中心的初始社团。其中,在分别确定以排序后的每个所述目标局部重心点为中心的初始社团时,需要保证后续确定的初始社团中的节点不属于已经被确定为初始社团,即:
步骤302:选取排序后的第一个目标局部重心点作为当前目标局部重心点。
步骤303:将与该当前目标局部重心点及所述当前目标局部重心点相连接的节点确定为一个初始社团。
步骤304:判断在所述当前目标局部重心点之后是否排序有其他目标局部重心点,如果是执行所述步骤305,否则,结束当前对所述复杂网络中初始社团的确定。
步骤305:选取排序在所述当前目标局部重心点之后的第一个目标局部重心点作为当前目标局部重心点。
步骤306:将所述当前目标局部重心点及所述当前目标局部重心点相连接且不存在与其他初始社团中的节点确定为一个初始社团,返回执行所述步骤304,直到所述当前目标局部重心点为排序后的最后一个目标局部重心点。
有上述图3中所述的各个步骤,保证后续确定的初始社团中的节点不属于已经被确定为初始社团。
步骤104:确定所述初始社团中的网络社团。
需要说明的是,在所述目标局部重心点对应的初始社团被确定之后,所述初始社团中仍然存在社团合并使得模块度函数值增长的可能,因此,在实现所述步骤104时,需要对初始社团中满足模块度函数值增长的初始社团对进行合并,即参考图4,为所述步骤104的实现步骤流程图,所述步骤104可以包括:
步骤401:任意选取两个所述初始社团组成一个社团组。
其中,所述社团组中包括两个初始社团,所述步骤401可以理解为:在所述步骤103中得到的每个初始社团均分别与区别于其自身初始社团的其他初始社团组成一个社团组。
步骤402:获取每个所述社团组的模块度函数值增量。
其中,所述模块度函数值增量是指,若将每两个初始社团进行合并之后的模块度函数值的变化量,例如,Ci、Cj分别为所述社团组中的两个初始社团,Qdw即为所述社团组中Ci、Cj的模块度函数值,在将这两个初始社团进行合并之后,其模块度函数值会发生变化(增加或降低),其变化量即为Ci、Cj的模块度函数值增量。
其中,两个社团之间的模块度函数由以下公式(5)计算获取:
其中,2w为所述复杂网络中的所有节点的权重值之和,当Ci=Cj时,δ(Ci,Cj)的值为0,否则为1,wij为所述复杂网络中节点vi指向节点vj的边方向的边权值,wi为节点vi的权重值,wj为节点vj的权重值,Ci、Cj分别为所述社团组中的两个初始社团,Qdw即为所述社团组的模块度函数。
因此,所述步骤402可以通过以下方式实现:
利用以下公式(6)获取每个所述社团组的模块度函数值增量:
例如,在公式(6)中,社团i与社团j进行合并得到社团I,而社团k为社团i与社团j合并之前,与社团i或社团j有边相连的社团,当社团i、社团j和社团k之间均有边相连时,当社团i和社团k有边相连而社团j和社团k之间没有边相连时,当社团j和社团k有边相连而社团i和社团k之间没有边相连时,
其中,为社团Cj内部边的权重之和,W表示网络中所有边的权重总和。
步骤403:判断每个所述社团组的模块度函数值增量是否均小于零,如果是,执行步骤404,否则,执行步骤407。
步骤404:对每个所述社团组依据其各自的模块度函数值增量的大小进行排序。
步骤405:在排序后的所述社团组中,依次选取L个其模块度函数值增量大于零且其内所包含的初始社团唯一被选取的社团组。
其中,L为所述社团组中,其模块度函数值增量大于或者等于(ΔQbiggest-ΔQsmallest)2的社团组的数量值,ΔQbiggest为模块度函数值增量大于零的社团组中模块度函数值增量的最大值,ΔQsmallest为模块度函数值增量大于零的社团组中模块度函数值增量的最小值。
其中,所述步骤405可以通过以下方式具体实现:
在排序后的所述社团组中,选取第一个其模块度函数值增量大于零的社团组作为当前社团组,将该当前社团组中的初始社团进行标记,再选取排序在所述当前社团组之后的第一个其模块度函数值增量大于零且其内所包含的初始社团均未被标记的社团组作为当前社团组,将该当前社团组中的初始社团进行标记,依次类推,直到无法选取的社团组中其模块度函数值增量大于零的社团组、选取的社团组内所包含的初始社团均被标记或已经被选取的社团组的数量超过L。
步骤406:将选取的社团组中的两个初始社团进行合并,得到新的社团,将所述新的社团作为初始社团,返回执行所述步骤401,直到每个所述社团组的模块度函数值增量小于或者等于零。
步骤407:确定当前存在初始社团为所述复杂网络中的网络社团。
其中,在所述步骤401至所述步骤406之间的轮回迭代完成之后,在所述复杂网络中最终会剩余至少一个无法再与其他社团进行合并使得模块度函数值增量大于零的初始社团,这些初始社团即为所述复杂网络中的网络社团。
以下为上述步骤104在实际的软件逻辑中实现的算法解释:
改进的多步扩展贪心(Improved Multistep Greedy Algorithm,IMSG)算法:
输入:有向赋权网络图G=(V,E,W)
输出:社团划分结果
1、将上述LCGD1算法或上述LCGD2算法中得到的目标局部重心点进行初始社团确定,得到的组织Ci(i=1,2,…n)作为初始社团结构;
2、计算模块度初始值
3、符合条件的三元组集合TripleSet←将ΔQ矩阵的元素三元组(i,j,ΔQ)(即社团i、社团j及其模块度函数值增量)按照ΔQ降序同时(i,j)升序排列;
4、While TripleSet中的第一个元素满足ΔQ>0do
设置用来表明相应社团是否在本轮中已经和别的社团向合并了的布尔向量;
change←(0,0,…,0),该向量为n维向量,n即网络中节点个数;
count←TripleSet中满足ΔQ>(ΔQbiggest-ΔQsmallest)2且ΔQ>0的元素个数;
由上述方案可知,本申请提供的一种复杂网络中网络社团的确定方法实施例一,通过依据所述复杂网络中相连节点之间边的边权值,获取所述复杂网络中每个节点的局部重心性数值,再依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点,之后在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团,从而确定所述初始社团中的网络社团。本申请实施例一中区别与现有技术中忽略网络的有向性和有权性导致网络社团的发现准确率低的情况,首先依据复杂网络中各个节点间边权值计算整个复杂网络中每个节点的局部重心性数值,进而确定整个复杂网络中的目标局部重心点,进而确定初始社团,再经过对初始社团的筛选得到准确率较高的网络社团。
在上述实施例的描述中可知,利用本申请实施例一发现的网络社团中的每个节点均被归属到某个网络社团中,如此,在最终获取到的网络社团中并不会出现重叠社团,但在实际的复杂网络中,往往存在一个节点连接于两个网络社团中而被归属于其中的一个网络社团中,但无法确定该节点是否能够被归属于另一个网络社团中,即无法判断出该节点是否为两个网络社团的重叠节点,进而无法得到整个复杂网络中各个网络社团中的重叠网络社团。
因此,参考图5,为本申请提供的一种复杂网络中网络社团的确定方法实施例二的部分流程图,其中,在所述步骤104之后,所述方法还包括:
步骤501:确定每个所述网络社团中,与区别于其所属网络社团的目标网络社团相连接的目标节点,所述目标节点组成节点组。
如图6中示例所示,所述复杂网络中有两个网络社团,节点c被归属于网络社团x,该节点c同时连接于网络社团y,此时,节点c即为与区别与其所属网络社团x的目标网络社团y相连接的目标节点。
步骤502:判断所述节点组中是否为非空,如果是,执行步骤503,否则,执行步骤508。
步骤503:选取所述节点组中的一个目标节点作为当前节点。
其中,所述步骤502中,可以任意选取所述节点组中的一个目标节点作为当前节点。
步骤504:获取所述目标网络社团中,在所述当前节点添加至所述目标网络社团时的目标社团强度增量。
其中,所述步骤504可以理解为:在所述目标网络社团中,若将所述当前节点添加至所述目标网络社团时,所述目标网络社团的社团强度值就会发生变化,因此,在所述步骤504中获取该目标网络社团在所述当前节点添加时的目标社团强度增量。
需要说明的是,在所述步骤504中,所述当前节点在实际上并非被归属到所述目标网络社团中,而是在虚拟概念上理解为:获取若该当前节点添加至该目标网络社团时,该目标网络社团的目标社团强度增量。
步骤505:判断所述目标社团强度增量是否小于或者等于零,如果是,执行步骤506,否则,执行步骤507。
步骤506:将所述当前节点移除出所述节点组中,返回执行所述步骤502,直到所述节点组为空。
其中,所述步骤506中所述目标社团强度增量小于或或者等于零,说明若将所述当前节点添加至所述目标网络社团时,该目标网络社团的社团强度会减少,表明该当前节点并非能够归属为该目标网络社团的节点,即该当前节点虽然与该目标网络社团相连接,但该当前节点并非其当前所属网络社团与该目标网络社团的重叠节点,只归属于其当前网络社团,此时将该当前节点剔除出所述节点组中,之后选取所述节点组中另一个节点作为当前节点进行重叠判断,直到所述节点组为空。
步骤507:将所述当前节点确定为该当前节点的所述网络社团及所述目标网络社团的重叠节点,并将所述当前节点移除出所述节点组,选取所述当前节点的相连节点作为目标节点添加至所述节点组中,返回执行所述步骤502中,直到所述节点组为空。
其中,所述步骤507中所述目标社团强度增量大于零,说明若将所述当前节点添加至所述目标网络社团中,该目标网络社团的社团强度会增加,表明该当前节点能够被归属于该目标网络社团,即该当前节点为其当前所属网络社团与该目标网络社团的重叠节点,此时,选取所述当前节点的相连节点作为目标节点添加至所述节点组中,进一步确定与该当前节点相连的节点是否为网络社团之间的重叠节点。
步骤508:依据所述重叠节点,确定每两个所述网络社团之间的重叠网络社团。
其中,在所述步骤506及所述步骤507中所述节点组中为空之后,表明对每两个网络社团之间的不确定节点进行重叠判断完成,此时,每个所述重叠节点中均包括有其所属的至少两个网络社团的标识信息,由此,即可判断出在所述复杂网络中每两个所述网络社团之间的重叠网络社团。
例如,通过上述IMSG算法发现的网络社团为{C1,C2,…,Ck},现将这k个社团中与其他社团有边相连的节点vi放入集合overlapping中,然后对overlapping做如下处理:取overlapping中任意节点vi加入到与该节点有边相连的另一个社团Cj中,计算节点vi加入后社团Cj的强度。如果(1)ΔD>0,那么节点vi可视为重叠节点,同时属于社团Ci和Cj,此时,将节点vi从overlapping移除并将节点vi的邻接节点放入到集合overlapping中;(2)ΔD≤0,那么将节点从集合overlapping中移除。按照上面的步骤进行计算,直到集合overlapping为空集为止。
以下为所述步骤501至步骤508在软件逻辑实现中的算法解释(包含步骤101至步骤104的实现算法解释):
基于局部重心的重叠社团发现(Improved Multistep Greedy Algorithm Basedon Local Center,LCG-IMSG)算法:
输入:有向赋权网络
输出:重叠社团结构
1、对数据集预处理,构建有向赋权网络图G=(V,E,W);
2、根据LCGD1算法或上述LCGD2算法计算网络的目标局部重心点,得到k个元素的局部重心集合LGCSet;
3、以LGCSet中的元素为重心,以m为步长的节点构成初始社团InitialCommunityi(i=1,2,3,…,k);
4、将每个InitialCommunityi看作一个节点,并将其作为IMSG算法的初始化社团;
5、利用IMSG算法发现网络社团结构{C1,C2,…,Ck};
6、利用上述步骤501至步骤508所述的重叠社团构建策略发现网络中的重叠网络社团。
由上述方案可知,本申请实施例二中的LCG-IMSG算法首先对有向赋权网络进行预处理,结合边的方向给边赋予合理的权重并构建网络图G=(V,E,W),然后利用LCGD1算法或LCGD2算法计算局部重心并得到IMSG的初始社团,利用IMSG算法每轮合并多对符合条件的社团,迭代计算,最后采用重叠社团构建方法发现重叠社团。在面对大规模的复杂网络时,由于本申请实施例中的算法首先进行局部重心的发现,只考虑网络的局部特征,从而使得时间复杂度大幅下降,随着网络规模的不断扩大将更加明显。同时,本申请实施例中,模块度直接优化算法不会发现小规模的社团结构,IMSG算法避免了Newman快速算法使网络很快收缩到较大社团的问题。
参考图7,为本申请提供的一种复杂网络中网络社团的确定装置实施例三的结构示意图,所述装置适用于复杂网络中,而所述复杂网络包括多个节点,每个所述节点分别与至少一个区别于自身节点的节点相连,而相连节点之间的连线称为边,每条所述边均具有两个边方向,且每条所述边具有各自的边权值。即为,在复杂网络中,节点1和节点2相连,两者之间的边具有两个边方向:节点1指向节点2的方向和节点2指向节点1的方向,所述边在这两个方向上均具有各自的边权值即各自方向上的边的权重值。
例如,在电子邮件网络中,所述电子邮件网络作为上述的复杂网络,电子邮件网络中邮件的收件方和发件方即为所述复杂网络中相连的两个节点。例如,邮箱用户A与邮箱用户B之间有邮件来往,邮箱用户A向邮箱用户B发送了1封邮件,而邮箱用户B向邮箱用户A发送了10封邮件,由此,可以看出,节点1(邮箱用户A)与节点2(邮箱用户B)之间具有边,该边在节点1指向节点2的方向上具有边权值1,在节点2指向节点1的方向上具有边权值10。
需要说明的是,相连节点之间边的权重值在一定程度上表明两节点之间的紧密性。例如,邮箱用户A向邮箱用户B发送了1封邮件,而A向邮箱用户C发送了10封邮件,显然A对B和A对C的紧密关系是不同的,所以邮件发送数量,即网络中边的权重值是非常重要的信息;另外,如果A向B发送了100封邮件,B没有向A发送邮件,而A向C发送了50封邮件,C给A回复50封邮件,虽然在A和B、A和C之间总的收发邮件数目相同,但是,A和C的关系要比A和B的关系紧密,即每个方向上邮件的收发数量,即网络中边在每个方向上的边权值也是很重要的信息。为此,本申请将充分考虑复杂网络中节点之间边的方向和权重。
因此,本申请实施例三中可以包括:
局部重心性获取单元701,用于依据所述复杂网络中相连节点之间边的边权值,获取所述复杂网络中每个节点的局部重心性数值。
需要说明的是,本申请实施例三实现的硬件配置可以为Intel(R)Pentium(R)4CPU3.06GHz,内存512M。而其软件平台:Microsoft Visual Studio2010、MySql、NetDraw、Matlab等。
其中,所述局部重心性获取单元701中的边权值包括相连节点之间边的两个边方向上的边权值。
参考图8,为所述局部重心性获取单元701的结构示意图,所述局部重心性获取单元701在实际实现时可以包括:
权重值获取子单元711,用于利用上述公式(1)获取所述复杂网络中每个节点的权重值;
其中,在上述公式(1)中,wij为所述复杂网络中节点vi指向节点vj的边方向的边权值,wji为节点vj指向节点vi的边方向的边权值,r为边权值wji中与边权值wij相关联的数值,Hi={vj|eij∈E∪eij∈E}∪{vi}为所述复杂网络中节点vi所属的邻域节点,λ、β为参数,E为数学定义表示中的限值,wi为所述复杂网络中节点vi的权重值。
局部重心性获取子单元712,用于依据所述复杂网络中每个节点的权重值,利用上述公式(2)获取所述复杂网络中每个节点的局部重心性数值;
其中,在所述公式(2)中,wj为所述复杂网络中节点vj的权重值,Act(vi)为所述节点vi的局部重心性数值。
例如,在电子邮件网络中,节点wij表示由节点vi向节点vj发送邮件的数目,wji表示节点vj向节点vi发送邮件的数目,r表示节点vi向节点vj中发送的wij封邮件中收到的回复邮件数目,λ、β为参数,因此,电子邮件网络中节点vi的权重由公式(1)计算得到wi,而Hi为所述复杂网络中节点vi所属的邻域节点,由Hi={vj|eij∈E∪eij∈E}∪{vi}计算得到。之后,利用公式(2)计算节点vi的局部重心性数值。
局部重心点确定单元702,用于依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点。
其中,所述局部重心点确定单元702可以通过以下方式实现:
对每个所述节点依据其各自的局部重心性数值进行排序,选取排序在前n个的节点作为所述复杂网络的目标局部重心点。
需要说明的是,所述局部重心点确定单元702在对每个节点的局部重心性数值计算的过程中,其每个节点步长即边权值设置为1,即值考虑了与节点vi直接相连的节点的情况,若直接由上述目标局部重心点的获取方式获取目标局部重心点,那么会使得获取到的目标局部重心性过于狭隘,并不准确,且使得最终得到的网络社团的准确率降低。
如图2中所示,每条边的边权值为1,利用上述局部重心性获取单元701获取到的局部重心性排序确定的目标局部重心点为节点a和节点b,而将每条边的边权值修改为2时,图2中就只有节点b为局部重心,因此,上述局部重心点确定单元702直接对局部重心性数值排序得到目标局部重心点的方式会影响获取到的目标局部重心点的准确性。
因此,参考图9,为所述局部重心点确定单元702的结构示意图,所述局部重心点确定单元702在实际实现中也可以包括:
初始局部重心点确定子单元721,用于获取局部重心性数据值大于预设第一数值的节点作为初始局部重心点。
其中,所述初始局部重心点确定子单元721的实现可以理解为:
获取局部重心性数值大于预设第一数值的节点作为初始局部重心点,其中,所述预设第一数值可以由用户设置,也可以先对依据局部重心性数值的大小顺序进行排序,再选取排序在第k个的节点的局部重心性数值作为第一数值,所述k值由用户设置。
初始局部社团确定子单元722,用于在所述复杂网络中,确定分别以每个所述初始局部重心点为重心的初始局部社团。
其中,在所述初始局部重心点确定子单元721获取到初始局部重心点之后,所述初始局部社团确定子单元722分别以每个所述初始局部重心点为中心确定初始局部社团,即以初始局部重心点为中心,步长为m的节点组成初始局部社团Ci。
由此,利用上述公式(3)对每个Ci计算其各自的社团强度函数值:
其中,表示Ci内的节点vi在Ci内部的边的边权值之和。表示Ci内的节点vi在Ci外部的边的边权值之和。该公式的实质含义即为Ci内部边的边权值总和除以Ci内成员所连边的边权值的总和。
需要说明的是,D(Ci)的值越大,Ci内节点的连接越紧密,社团的紧密性强度就越高,当然D(Ci)的最优值还需要大量实验来获取验证。
第一局部重心点确定子单元723,用于分别在每个所述初始局部社团中,确定到该初始局部社团中其他节点的距离之和最小的节点作为目标局部重心点。
其中,在每个社团网络中,其局部重心所应当满足的条件应该为:在其所在的局部范围内,该重心节点到达其他任意节点的距离应该是最短的,由此才能保证其重心的位置。因此,在上述初始局部社团确定子单元722确定初始局部社团之后,第一局部重心点确定子单元723分别在每个所述初始局部社团中,确定到该初始局部社团中其他节点的距离之和最小的节点作为目标局部重心点,即为,在所有的初始局部社团中,选取该初始局部社团内到其所在初始局部社团中其他节点的距离之和最小的节点,该节点即为该初始局部社团内新的局部重心点即所述局部重心点确定单元702中所需要的目标局部重心点。
例如,在电子邮件网络中,对每个初始局部社团中,其内节点到其所在初始局部社团中其他节点的距离之和的计算可以利用上述公式(4)实现:
中,wij为节点vi向vj发送邮件次数,wji为节点vj向vi发送邮件的次数,λ为参数。由此,节点vi到C内各节点的最短距离为:
利用vi′=argmini∈Clengthi得到新的重心,不断进行迭代,直到连续两次计算的ΔD≤0结束,由此保证最后的vi′为C范围内的局部重心。
以下为对上述局部重心点确定单元702在实际的软件逻辑中实现的算法解释(包含有上述局部重心性获取单元701的实现算法解释):
第一局部重心发现(Local Center of Gravity Detection1,LCGD1)算法
输入:有向赋权网络图G=(V,E,W)
输出:网络中的局部重心节点
1、对所述复杂网络中的原始数据预处理,剔除所述复杂网络中的干扰节点,得到节点数据集Init_Data_Set;
2、for(Init_Data_Set中的每个节点vi)
根据公式(1)求节点vi的点权wi;
end for
3、得到节点的权重集和Node_Weight_Set;
4、for(Init_Data_Set中的每个节点vi)
根据公式(2)求节点vi的局部重心性数值Act(vi);
end for
5、初步得到节点的局部重心性数值后,对各节点的局部重心性数值的大小顺序进行排序,取出top d构成初始局部重心集合Init_Import_Set;
9、输出局部重心结果集Import_Set。
参考图10,为所述局部重心点确定单元702的结构示意图,所述局部重心点确定单元702也可以包括:
社团密度值确定子单元724,用于分别确定每个所述节点的邻域所组成社团各自的社团密度值。
乘积获取子单元725,用于获取每个所述节点的局部重心性数值与该节点对应的社团密度值的乘积。
第二局部重心点确定子单元726,用于确定所述乘积大于预设第二数值的节点作为目标局部重心点。
其中,上述图10中所示的局部重心点确定单元702的实现结构可以理解为:分别确定所述复杂网络中每个所述节点的邻域所组成社团各自的社团紧密度值,即每个所述节点的邻域均作为一个网络社团,计算每个邻域网络社团的社团紧密度值。在有向赋值网络中区域内的社团密度为区域内所有边的总权值除以区域内的节点个数,因此,所述每个节点的邻域的社团密度为其中,为节点vi邻域Hi内所有边的总权值,count(Hi)为Hi内的节点总数。
由于社团的局部重心性越强及社团内的社团密度值越大,那么该节点既可以作为网络局部重心点,而其邻域即可看作为初始的社团结构。因此,在获取到每个节点的邻域的社团密度值之后,获取每个所述节点的局部重心性数值与该节点对应的社团密度值的乘积,即的数值,由此再确定所述乘积大于预设第二数值的节点作为目标局部重心点。所述第二数值可以由用户设置,也可以对所述乘积进行大小排序之后,选取排序在第m个的乘积值作为第二数值,该m值由用户设置。
以下对上述局部重心点确定单元702的第二种实现结构在实际的软件逻辑中实现的算法解释(包含有上述局部重心性获取单元701的实现算法解释):
第一局部重心发现LCGD2算法:
1、对所述复杂网络中的原始数据预处理,剔除所述复杂网络中的干扰节点,得到节点数据集Init_Data_Set;
2、for(Init_Data_Set中的每个节点vi)
根据公式(1)求节点vi的点权wi;
end for
3、得到节点的权重集和Node_Weight_Set;
4、for(Init_Data_Set中的每个节点vi)
计算节点vi邻域Hi内节点及节点数目count(Hi);
根据点权集合Node_Weight_Set和公式(2)求节点vi的局部重心性数值Act(vi);
计算每个节点的局部重心性数值和其各自对应的邻域社团强度的乘积
end for
5、选取Import(vi)大于所述第二数值的节点作为目标局部重心点,或选取其对应的Import(vi)按照大小排序后排序在前m-1位的节点作为目标局部重心点。
初始社团确定单元703,用于在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团。
参考图11,为所述初始社团确定单元703的结构示意图,所述初始社团确定单元703可以包括以下结构:
局部重心点排序子单元731,用于对所述目标局部重心点依据其各自的局部重心性数值的大小进行排序。
初始社团确定子单元732,用于依次分别确定以排序后的每个所述目标局部重心点为重心的初始社团。
其中,所述初始社团确定子单元732在分别确定以排序后的每个所述目标局部重心点为中心的初始社团时,需要保证后续确定的初始社团中的节点不属于已经被确定为初始社团,因此,参考图12,为所述初始社团确定子单元732的结构示意图,所述初始社团确定子单元732可以包括:
第一局部重心点选取模块7321,用于选取排序后的第一个目标局部重心点作为当前目标局部重心点。
第一初始社团确定模块7322,用于将与所述当前目标局部重心点及所述当前目标局部重心点相连接的节点确定为一个初始社团。
迭代局部重心点选取模块7323,用于选取排序在所述当前目标局部重心点之后的第一个目标局部重心点作为当前目标局部重心点,触发迭代初始社团确定模块7324。
所述迭代初始社团确定模块7324,用于将所述当前目标局部重心点及与所述当前目标局部重心点相连接且不存在与其他初始社团中的节点确定为一个初始社团,返回触发所述迭代局部重心点选取模块7323,直到所述当前目标局部重心点为排序后的最后一个目标局部重心点。
由此,所述初始社团确定子单元732保证后续确定的初始社团中的节点不属于已经被确定为初始社团。
网络社团确定单元704,用于确定所述初始社团中的网络社团。
需要说明的是,本申请实施例中在所述目标局部重心点对应的初始社团被确定之后,所述初始社团中仍然存在社团合并使得模块度函数值增长的可能,因此,在实现所述网络社团确定单元704时,需要对初始社团中满足模块度函数值增长的初始社团对进行合并,即参考图13,为所述网络社团确定单元704的结构示意图,所述网络社团确定单元704可以包括:
社团组组合子单元741,用于任意选取两个所述初始社团组成一个社团组。
其中,所述社团组中包括两个初始社团,所述社团组组合子单元741可以理解为:在所述初始社团确定单元703中得到的每个初始社团均分别与区别于其自身初始社团的其他初始社团组成一个社团组。
增量获取子单元742,用于获取每个所述社团组的模块度函数值增量。
其中,所述模块度函数值增量是指,若将每两个初始社团进行合并之后的模块度函数值的变化量,例如,Ci、Cj分别为所述社团组中的两个初始社团,Qdw即为所述社团组中Ci、Cj的模块度函数值,在将这两个初始社团进行合并之后,其模块度函数值会发生变化(增加或降低),其变化量即为Ci、Cj的模块度函数值增量。
其中,两个社团之间的模块度函数由上述公式(5)计算获取。
因此,所述增量获取子单元742可以利用上述公式(6)计算获取每个所述社团组的模块度函数值增量。
例如,在公式(6)中,社团i与社团j进行合并得到社团I,而社团k为社团i与社团j合并之前,与社团i或社团j有边相连的社团,当社团i、社团j和社团k之间均有边相连时,当社团i和社团k有边相连而社团j和社团k之间没有边相连时,当社团j和社团k有边相连而社团i和社团k之间没有边相连时,
其中,为社团Cj内部边的权重之和,W表示网络中所有边的权重总和。
需要说明的是,所述增量获取子单元742在其获取到的模块度函数值增量并非均小于零时,触发所述社团组排序子单元743;所述增量获取子单元742在其获取到的模块度函数值增量均小于零时,无需触发所述社团组排序子单元743而是触发所述社团确定子单元746。
社团组排序子单元743,用于对每个所述社团组依据其各自的模块度函数值增量的大小进行排序。
社团组选取子单元744,用于在排序后的所述社团组中,依次选取L个其模块度函数值增量大于零且其内所包含的初始社团唯一被选取的社团组。
其中,L为所述社团组中,其模块度函数值增量大于或者等于(ΔQbiggest-ΔQsmallest)2的社团组的数量值,ΔQbiggest为模块度函数值增量大于零的社团组中模块度函数值增量的最大值,ΔQsmallest为模块度函数值增量大于零的社团组中模块度函数值增量的最小值。
其中,所述社团组选取子单元744可以通过以下方式具体实现:
在排序后的所述社团组中,选取第一个其模块度函数值增量大于零的社团组作为当前社团组,将该当前社团组中的初始社团进行标记,再选取排序在所述当前社团组之后的第一个其模块度函数值增量大于零且其内所包含的初始社团均未被标记的社团组作为当前社团组,将该当前社团组中的初始社团进行标记,依次类推,直到无法选取的社团组中其模块度函数值增量大于零的社团组、选取的社团组内所包含的初始社团均被标记或已经被选取的社团组的数量超过L。
社团组合子单元745,用于将选取的中的两个初始社团进行合并,得到新的社团,将所述新的社团作为初始社团,返回触发所述社团组组合子单元741,直到所述社团组组合子单元741组合到的社团组的模块度函数值增量小于或者等于零。
社团确定子单元746,用于确定当前存在的初始社团为所述复杂网络中的网络社团;
其中,在所述网络社团确定单元704的上述子单元之间的轮回迭代完成之后,在所述复杂网络中最终会剩余至少一个无法再与其他社团进行合并使得模块度函数值增量大于零的初始社团,这些初始社团即为所述复杂网络中的网络社团。
以下为所述网络社团确定单元704在实际的软件逻辑中实现的算法解释:
改进的多步扩展贪心(Improved Multistep Greedy Algorithm,IMSG)算法:
输入:有向赋权网络图G=(V,E,W)
输出:社团划分结果
1、将上述LCGD1算法或上述LCGD2算法中得到的目标局部重心点进行初始社团确定,得到的组织Ci(i=1,2,…n)作为初始社团结构;
2、计算模块度初始值
3、符合条件的三元组集合TripleSet←将ΔQ矩阵的元素三元组(i,j,ΔQ)(即社团i、社团j及其模块度函数值增量)按照ΔQ降序同时(i,j)升序排列;
由上述方案可知,本申请提供的一种复杂网络中网络社团的确定装置实施例三,通过依据所述复杂网络中相连节点之间边的边权值,获取所述复杂网络中每个节点的局部重心性数值,再依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点,之后在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团,从而确定所述初始社团中的网络社团。本申请实施例三中区别与现有技术中忽略网络的有向性和有权性导致网络社团的发现准确率低的情况,首先依据复杂网络中各个节点间边权值计算整个复杂网络中每个节点的局部重心性数值,进而确定整个复杂网络中的目标局部重心点,进而确定初始社团,再经过对初始社团的筛选得到准确率较高的网络社团。
在上述实施例的描述中可知,利用本申请实施例三发现的网络社团中的每个节点均被归属到某个网络社团中,如此,在最终获取到的网络社团中并不会出现重叠社团,但在实际的复杂网络中,往往存在一个节点连接于两个网络社团中而被归属于其中的一个网络社团中,但无法确定该节点是否能够被归属于另一个网络社团中,即无法判断出该节点是否为两个网络社团的重叠节点,进而无法得到整个复杂网络中各个网络社团中的重叠网络社团。
因此,参考图14,为本申请提供的一种复杂网络中网络社团的确定装置实施例四的部分结构示意图,所述装置还包括:
目标节点确定单元705,用于在所述网络社团确定单元704确定到所述网络社团之后,确定每个所述网络社团中,与区别于其所属网络社团的目标网络社团节点相连接的目标节点,所述目标节点组成节点组。
如图6中示例所示,所述复杂网络中有两个网络社团,节点c被归属于网络社团x,该节点c同时连接于网络社团y,此时,节点c即为与区别与其所属网络社团x的目标网络社团y相连接的目标节点。
当前节点确定单元706,用于选取所述节点组中的一个目标节点作为当前节点。
其中,所述当前节点确定单元706中,可以任意选取所述节点组中的一个目标节点作为当前节点。
需要说明的是,所述当前节点确定单元706在所述节点组非空时,选取所述节点组中的一个目标节点作为当前节点,之后触发所述强度增量获取单元707;而所述当前节点确定单元706在所述节点组为空,无法选取到当前节点时,触发所述重叠社团确定单元709。
强度增量获取单元707,用于获取所述目标网络社团中,在所述当前节点添加至所述目标网络社团时的目标社团强度增量。
其中,所述强度增量获取单元707可以理解为:在所述目标网络社团中,若将所述当前节点添加至所述目标网络社团时,所述目标网络社团的社团强度值就会发生变化,因此,所述强度增量获取单元707获取的是该目标网络社团在所述当前节点添加时的目标社团强度增量。
需要说明的是,在所述强度增量获取单元707中,所述当前节点在实际上并非被归属到所述目标网络社团中,而是在虚拟概念上理解为:获取若该当前节点添加至该目标网络社团时,该目标网络社团的目标社团强度增量。
重叠判断单元708,用于判断所述目标社团强度增量是否小于或者等于零,如果是,将所述当前节点移除出所述节点组中,返回触发所述当前节点确定单元706,直到所述节点组为空,否则,将所述当前节点确定为该当前节点的所属网络社团及所述目标网络社团的重叠节点,并选取所述当前节点的相连节点作为目标节点添加至所述节点组中,返回触发所述当前节点确定单元706,直到所述节点组为空;
其中,所述重叠判断单元708中的所述目标社团强度增量小于或或者等于零,说明若将所述当前节点添加至所述目标网络社团时,该目标网络社团的社团强度会减少,表明该当前节点并非能够归属为该目标网络社团的节点,即该当前节点虽然与该目标网络社团相连接,但该当前节点并非其当前所属网络社团与该目标网络社团的重叠节点,只归属于其当前网络社团,此时将该当前节点剔除出所述节点组中,之后选取所述节点组中另一个节点作为当前节点进行重叠判断,直到所述节点组为空。
而所述重叠判断单元708中的所述目标社团强度增量大于零,说明若将所述当前节点添加至所述目标网络社团中,该目标网络社团的社团强度会增加,表明该当前节点能够被归属于该目标网络社团,即该当前节点为其当前所属网络社团与该目标网络社团的重叠节点,此时,选取所述当前节点的相连节点作为目标节点添加至所述节点组中,进一步确定与该当前节点相连的节点是否为网络社团之间的重叠节点。
重叠社团确定单元709,用于依据所述重叠节点,确定每两个所述网络社团之间的重叠网络社团。
其中,在所述重叠判断单元708判断出所述节点组中为空之后,表明对每两个网络社团之间的不确定节点进行重叠判断完成,此时,每个所述重叠节点中均包括有其所属的至少两个网络社团的标识信息,由此,所述重叠社团确定单元709即可判断出在所述复杂网络中每两个所述网络社团之间的重叠网络社团。
例如,通过上述IMSG算法发现的网络社团为{C1,C2,…,Ck},现将这k个社团中与其他社团有边相连的节点vi放入集合overlapping中,然后对overlapping做如下处理:取overlapping中任意节点vi加入到与该节点有边相连的另一个社团Cj中,计算节点vi加入后社团Cj的强度。如果(1)ΔD>0,那么节点vi可视为重叠节点,同时属于社团Ci和Cj,此时,将节点vi从overlapping移除并将节点vi的邻接节点放入到集合overlapping中;(2)ΔD≤0,那么将节点从集合overlapping中移除。按照上面的步骤进行计算,直到集合overlapping为空集为止。
以下为所述目标节点确定单元705至重叠社团确定单元709在软件逻辑实现中的算法解释(包含局部重心性获取单元701至网络社团确定单元704的实现算法解释):
基于局部重心的重叠社团发现(Improved Multistep Greedy Algorithm Basedon Local Center,LCG-IMSG)算法:
输入:有向赋权网络
输出:重叠社团结构
基于局部重心的重叠社团发现(Improved Multistep Greedy Algorithm Basedon Local Center,LCG-IMSG)算法:
输入:有向赋权网络
输出:重叠社团结构
1、对数据集预处理,构建有向赋权网络图G=(V,E,W);
2、根据LCGD1算法或上述LCGD2算法计算网络的目标局部重心点,得到k个元素的局部重心集合LGCSet;
3、以LGCSet中的元素为重心,以m为步长的节点构成初始社团InitialCommunityi(i=1,2,3,…,k);
4、将每个InitialCommunityi看作一个节点,并将其作为IMSG算法的初始化社团;
5、利用IMSG算法发现网络社团结构{C1,C2,…,Ck};
6、利用上述步骤501至步骤507所述的重叠社团构建策略发现网络中的重叠网络社团。
由上述方案可知,本申请实施例四中的LCG-IMSG算法首先对有向赋权网络进行预处理,结合边的方向给边赋予合理的权重并构建网络图G=(V,E,W),然后利用LCGD1算法或LCGD2算法计算局部重心并得到IMSG的初始社团,利用IMSG算法每轮合并多对符合条件的社团,迭代计算,最后采用重叠社团构建方法发现重叠社团。在面对大规模的复杂网络时,由于本申请实施例中的算法首先进行局部重心的发现,只考虑网络的局部特征,从而使得时间复杂度大幅下降,随着网络规模的不断扩大将更加明显。同时,本申请实施例中,模块度直接优化算法不会发现小规模的社团结构,IMSG算法避免了Newman快速算法使网络很快收缩到较大社团的问题。
参考图15,为本申请实施例一至实施例四在实际实现中的系统总体框架图,实现本申请实施例一至实施例四的系统主要包含三个模块:数据获取及处理模块、局部重心发现模块、社团发现模块。每个模块又细分为若干小的功能模块。其中,数据获取及处理模块包含4个功能模块:获取数据、清洗数据、筛选数据、构建收发矩阵;局部重心模块包含6个功能模块:构建邻域、计算点权、计算连接度、计算社团强度、计算社团密度、计算局部重心;社团发现模块包含3个功能模块:发现初始社团、划分社团结构、构建重叠社团。
参考图16,为系统用户、本系统的重叠社团发现系统、MySql数据库、NetDraw绘图软件的总体交互关系示意图。在本系统启动时,用户启动重叠社团发现系统,该系统启动时会连接MySql数据库,连接成功后,用户与系统进行交互,系统与MySql数据库交互,最后,用户利用生成的结果及NetDraw软件进行绘图。
基于图16中所示的交互关系示意图,参考图17,为本系统实现网络社团确定并绘制图示的细节时序图。
其中,交互过程如下所示:
用户启动重叠社团发现系统,该系统启动时会连接MySql数据库;
连接成功后,用户与系统进行交互,选择算法并设置参数;
导入并处理数据:系统从MySql数据库读取数据并反馈给用户,并对数据进行处理,包括清洗数据、筛选数据等;
构建收发矩阵:在MySql数据库中构建收发矩阵,并反馈给用户;
发现局部重心:在MySql数据库中创建局部重心表格,并填充、反馈给用户;
发现社团:系统对数据进行处理,发现社团,并将结果保存至结果文件;
NetDraw绘图:调用NetDraw软件将发现的社团以图形的形式展现。
以下为本系统采用A公司的邮件数据集为实例进行试验,通过对该邮件数据集的分析可以得到以下有效信息:从邮件中的用户的签名或邮箱账号域名中可提取用户所属机构;从邮件体中可以得到邮箱用户在公司的职位;分析邮件的接收和发送关系可以获得邮箱用户的常用联系人;从邮件的通信结构可以了解邮箱用户的社会关系,此时,本系统的数据获取及处理模块对这些有效信息进行预处理,主要包括清洗数据、筛选数据、构建收发矩阵等。
(1)清洗数据
本系统在网站上下载邮件数据集后,所得到的邮件信息太过繁杂,共包括252759封邮件和一万多个邮箱账号。由于邮箱账号一般都非常的冗长,而且也涉及隐私问题,需要对邮箱地址进行映射转换。此外,在初始的A公司邮件数据集中,还存在着大量的非A公司内部员工的邮箱账号,这些账号的存在也会对实验结果造成影响,将这些账号剔除。还有一类邮箱账号,虽然邮箱结尾是“@A.com”但是该邮箱对应的用户并不在A公司提供的151个员工名单之列,因此也将这类邮箱账号去除。然后给每个邮箱账号分配一个唯一整数来标识。还需要将连接度小于某个阈值的噪声节点剔除掉。对于本系统中使用的数据集,该阈值设置为3。另外,为了只保留有效边,将节点间相互通信次数小于5的边去掉。
(2)筛选数据
由于本系统不考虑节点的自边,因此,将只包含151名员工的安然邮件集中去除自己跟自己发送的邮件记录。同时,考虑到如果两个节点间如果联系极少的话,那么他们之间的联系可以忽略。因此,还去除了相互之间通信少于5的节点之间的联系等。
(3)构建收发矩阵
为统计节点间的通信关系,需要构建矩阵来记录节点间收发邮件的情况。对称矩阵mynet_matrix中的每一行记录一个节点的发送邮件情况。包括发送节点对应的邮箱、接收节点对应的邮箱及发送节点给接收节点所发送的邮件总数。另外,因为本系统中综合考虑网络中边的方向,在电子邮件网络中就是邮件的收发方向,因此,本系统还构建了mynet_half_matrix矩阵。该矩阵是从对称矩阵mynet_matrix得来,是一个非对称矩阵,每行都包括发送节点对应的邮箱、接收节点对应的邮箱、发送节点给接收节点所发送的邮件总数以及接收节点给发送节点发送的邮件总数。
其次,局部重心发现模块主要包含以下功能的子模块:构建邻域、计算点权、计算连接度、计算社团强度、计算社团密度、计算局部重心。
(1)构建邻域
节点邻域的大小关系着节点的局部重心性,因此有必要对节点的邻域范围进行计算。
(2)计算点权
节点的权重代表该节点与其他节点联系的紧密程度,节点权重越大,联系越密切。因此,需要计算每个节点的点权。。
(3)计算连接度
节点本发明从网络的局部重心入手,势必要发现局部范围内重心性最强的节点,那么就需要跟其邻域内节点的权重进行比较。因此,必须知道节点的连接度,即同节点有信件来往的节点的数目,从构建的收发矩阵mynet_half_matrix中可以得到节点的连接度。
(4)计算社团强度
社团强度,表明社团内部相比于社团外部联系的紧密程度,能够在一定程度上说明社团结构的强弱。本发明中是利用局部重心来发现初始的社团结构,因此,算法所发现的局部重心的准确与否可用初始社团的社团强度来说明。初始社团的社团强度越大,代表节点的局部重心性越高。
(5)计算社团密度
同样,社团密度作为社团质量的一个评判标准也可以衡量社团的强弱。所谓的社团密度,对于有向赋权网络就是社团内部边的总权重除以社团内节点的总数。初始社团的社团密度越大,那么节点的局部重心性越强。
(6)计算局部重心
该模块是具体的计算节点的局部重心性,并将满足条件的节点视为局部重心节点,然后将以该节点为中心的邻域看作初始社团。其实,局部重心的确定也是根据初始社团的强弱来确定的。
最后,社团发现模块主要包含以下功能的子模块:发现初始社团、划分初始社团、构建重叠社团。
(1)发现初始社团
发现初始社团模块和前述的局部重心发现模块的计算基本一致。根据初始社团的强弱程度确定网络的局部重心,然后,在根据确定的局部重心构建初始的社团结构。
(2)划分社团结构
根据算法3划分网络的社团结构。算法3采用改进的多步扩展策略来避免网络过早的收缩到较大的社团。而且在计算模块度函数的增量时,只计算与合并社团有边相连的社团的模块度增量,这大大减少了时间复杂度。通过该模块所得到网络的社团划分。
(3)构建重叠社团
“划分社团结构”模块所得到的社团不存在重叠现象,而实际的网络中重叠社团广泛存在。因此,在构建重叠社团模块就是利用重叠社团构建策略将根据算法3得到的社团结构重新调整。这样就可以发现网络中的重叠节点,即重叠社团。
另外,在本系统的数据库设计方面,原始的A数据集包括四个表,分别是employmeeList、message、recipientInfo和referenceInfo。其中,employeeList中包含员工编号eid,员工姓名及邮箱账号。而message中包含了员工发送邮件情况。mynetInfo中记录了员工间的通信行为,包括50572条记录。为了统计员工间通信的次数,本系统结合mynetInfo和employeeList两个表建立了mynet_matrix表。mynet_matrix表为对称矩阵式的表,同时存在着员工a向员工b发送的邮件数以及员工b向员工a发送的邮件数两条记录,总的记录数为2235,共有151个节点。在这2235条记录中去除自己给自己发送邮件后,剩余2149条记录。而mynet_half_matrix表是通过剔除mynet_matrix表中的对称记录及自己给自己所发邮件记录后得到的,记录数为1526,节点数为150。这是因为116号节点只给自己发了一封邮件,因而被剔除,然后再剔除相互通信小于5的边后,剩余149个节点。
本系统对实验数据集所设计的数据库关系中,employeeList为员工表,从该表中可获取公司员工的姓名和邮箱账号;messsage表记录的是邮件的内容,包括主题和邮件正文,其中,mid为该表的主键,唯一标识一封邮件;recipientinfo表中存放的是邮件的接收信息,可以通过字段mid与messsage表建立连接;referenceinfo表给出了messsage表中的记录的详细内容;mynetinfo表统计了信件的收发情况;mynet_matrix表基于mynetinfo表统计出的节点间的通信关系,该矩阵是对称的;vertice_weight表和vertice_activity表分别用来表示节点的权重和节点的局部重心性。通过A数据集关系,本系统对提出的局部重心发现算法进行验证。
需要说明的是,为了用户使用方便,本申请还提供了用户系统界面,其中,首页的菜单栏包括文件、实验、帮助三项。其中实验部分包括重叠社团发现选项,点击该重叠社团发现的选项之后会出现重叠社团发现界面。在本系统的主界面中,包括六个部分:数据、输出、社团发现算法、局部重心发现算法、参数设置、控制。数据部分用于显示当前操作所对应的实验数据;输出部分显示与后台执行过程中的相关状态;社团发现算法中有两种算法可供选择:LCG-IMSG算法和G-N算法;局部重心发现算法中包括LCGD算法、LCGD2算法、基于连接度算法,可任选其一,但是如果在社团发现算法部分选择了G-N算法,那么在该部分就不能做任何选择了;参数设置部分可以设定点权计算中的参数大小;控制部分包括:导入实验数据、对数据的预处理、构建收发矩阵、局部重心发现、社团发现、NetDraw绘图。
在本系统的主界面中,点击“导入数据”按钮之后,会出现导入数据界面,该界面的左上角显示A公司的员工数据。在输出部分显示的是所进行的操作的指令。
在本系统的主界面中,点击“处理数据”按钮之后,会出现处理数据界面。该界面呈现对A数据集进行预处理中所创建的数据表,以及最终得到的经过清洗和筛选的数据集。在数据处理过程中,根据A数据集关系对数据进行处理。
在本系统的主界面中,点击“构建收发矩阵”按钮之后,会出现构建收发矩阵界面。该界面“数据”部分所呈现的数据就是mynet_half_matrix矩阵的内容。该矩阵包括员工ID、发送邮箱账号、接收邮箱账号、发送方给接收方发送邮件总数及接收方给发送方发送邮件的总数。
在本系统的主界面中,点击“局部重心发现”按钮之后,会出现局部重心发现界面。该界面显示的是根据LCGD2算法所发现的局部重心的情况,按照Act(vi)乘以初始社团内节点个数进行排序。
在本系统的主界面中,点击“社团发现”按钮之后,会出现社团发现界面。该界面呈现的是根据LCGD2算法、LCG-IMSG算法及重叠社团构建策略所发现的重叠社团的情况。
点击本系统的主界面中“NetDraw绘图”按钮之后出现绘图界面。NetDraw可以根据给定数据画出相应的社团结构图。在本系统中,就是根据“社团发现”中所生成的数据进行描绘。该界面中可以用不同颜色及不同形状的图形来表示不同的社团结构。
以下对本申请进行网络社团发现确定的实验结果进行分析:
通过社团强度和社团密度两个指标衡量了各算法发现局部重心时所发现的初始社团的质量。为了直观地区分不同算法的实验结果,本申请采用图18来展示各算法所发现初始社团的社团强度曲线,曲线上的每个点所对应的纵坐标并不是按照公式(3)直接计算的社团强度而是一个增量平均值,这样可以使曲线相对平滑,易于比较;横坐标并非是节点ID而是增量平均所对应的节点数目。而且为了便于观察,三条曲线都进行降序排序。实验中参数λ,β分别为0.8和0.75。参数m设置为1,这是因为当m=2时,初始社团内的节点个数已经非常大,甚至达到了141。其中,图18中的LCGD算法即为前文中所提及的LCGD1算法。
图19描述的是各算法所发现初始社团的社团密度曲线。同样,曲线上的每个点所对应的纵坐标坐标并不是具体的社团密度而是一个增量平均值,也是为了使曲线相对平滑,便于观察;横坐标也是增量平均所对应的节点数目。三条曲线同样进行了降序排序。
从图18和图19可得,本申请提出的LCGD算法和LCGD2算法都优于基于节点连接度算法。而前者和后者相比,在起始的小范围内,前者优于后者。但是从图18来看,除了前6个节点,后者就要比前者好。而图19中,本申请提出的两种算法的实验效果都挺好,但是在过了前20几个节点后,LCGD2算法比LCGD算法好。
A数据集的可视化网络图,如图20所示。从图20可以看出A数据集中存在像节点116这样的孤立节点,同时也存在像节点144这样的干扰节点。这些节点在数据预处理时已经去掉了。
G-N算法在Enron邮件网络中的发现的社团结构如图21所示。图21中,相同形状的节点属于同一个社团。从图中可以看到G-N算法将整个邮件网络划分为9个社团,其中有3个社团的节点较多,社团内部联系较紧密。但是有6个社团都只含有一个节点,这违反了社团的划分规则:“社团中的节点个数必须大于或者等于6”。为了更加清晰的展示各社团内的节点情况,现通过表格的形式来描述社图结构的划分。如表1所示:
表1 G-N算法发现的社团结构
LCG-IMSG算法发现的社团结构如图22所示。图22中,属于同一形状的节点属于同一个社团,而位于中间部分的形状较大的节点是重叠节点。从图中,可以发现社团间的连接也十分密集,这也正是因为这些重叠节点的存在,这些节点属于不只一个社团,因此它们会使的他们所处的社团间的联系很密集。下面我们取出社团1和社团4来局部展示社团结构,如图23所示,这两个社团的重叠部分为节点66和节点73。
同样,表2给出LCG-IMSG算法所发现的社团结构的具体划分。从表2中可以看出LCG-IMSG算法所发现的社团相对均匀,而且我们也发现其中存在着多个重叠节点,即社团的重叠现象。而且,G-N算法所发现的社团结构的模块度为0.322,LCG-IMSG算法发现的社区结构的模块度为0.635。从模块度分析,显然本发明所提算法较好。
表2 LCG-IMSG算法发现的社团结构
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种复杂网络中网络社团的确定方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种复杂网络中网络社团的确定方法,所述复杂网络包括多个节点,每个所述节点分别与至少一个区别于自身节点的节点相连,相连节点之间的边具有两个边方向,且每个边方向具有各自的边权值,其特征在于,所述方法包括:
利用获取所述复杂网络中每个节点的权重值;
其中,wij为所述复杂网络中节点vi指向节点vj的边方向的边权值,wji为节点vj指向节点vi的边方向的边权值,r为边权值wji中与边权值wij相关联的数值,Hi为所述复杂网络中节点vi所属的邻域节点,λ、β为参数,wi为所述复杂网络中节点vi的权重值;
依据所述复杂网络中每个节点的权重值,利用获取所述复杂网络中每个节点的局部重心性数值;
其中,wj为所述复杂网络中节点vj的权重值,Act(vi)为所述节点vi的局部重心性数值;
依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点;
在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团;
确定所述初始社团中的网络社团。
2.根据权利要求1所述的方法,其特征在于,所述依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点,包括:
获取局部重心性数值大于预设第一数值的节点作为初始局部重心点;
在所述复杂网络中,确定分别以每个所述初始局部重心点为重心的初始局部社团;
分别在每个所述初始局部社团中,确定到该初始局部社团中其他节点的距离之和最小的节点作为目标局部重心点。
3.根据权利要求1所述的方法,其特征在于,所述依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点,包括:
分别确定每个所述节点的邻域所组成社团各自的社团密度值;
获取每个所述节点的局部重心性数值与该节点对应的社团密度值的乘积;
确定所述乘积大于预设第二数值的节点作为目标局部重心点。
4.根据权利要求1所述的方法,其特征在于,所述在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团,包括:
对所述目标局部重心点依据其各自的局部重心性数值的大小进行排序;
依次分别确定以排序后的每个所述目标局部重心点为重心的初始社团。
5.根据权利要求4所述的方法,其特征在于,所述依次分别确定以排序后的每个所述目标局部重心点为重心的初始社团,包括:
选取排序后的第一个目标局部重心点作为当前目标局部重心点;
将与所述当前目标局部重心点及所述当前目标局部重心点相连接的节点确定为一个初始社团;
选取排序在所述当前目标局部重心点之后的第一个目标局部重心点作为当前目标局部重心点;
将所述当前目标局部重心点及与所述当前目标局部重心点相连接且不存在与其他初始社团中的节点确定为一个初始社团,返回执行所述选取排序在所述当前目标局部重心点之后的第一个目标局部重心点作为当前目标局部重心点,直到所述当前目标局部重心点为排序后的最后一个目标局部重心点。
6.根据权利要求1或5所述的方法,其特征在于,所述确定所述初始社团中的网络社团,包括:
任意选取两个所述初始社团组成一个社团组;
获取每个所述社团组的模块度函数值增量;
对每个所述社团组依据其各自的模块度函数值增量的大小进行排序;
在排序后的所述社团组中,依次选取L个其模块度函数值增量大于零且其内所包含的初始社团唯一被选取的社团组;
将选取的社团组中的两个初始社团进行合并,得到新的社团,将所述新的社团作为初始社团,返回执行所述任意选取两个所述初始社团组成一个社团组,直到任意选取两个初始社团组成的社团组的模块度函数值增量小于或者等于零;
确定当前存在的初始社团为所述复杂网络中的网络社团;
其中,L为所述社团组中,其模块度函数值增量大于或者等于(ΔQbiggest-ΔQsmallest)/2的社团组的数量值,ΔQbiggest为模块度函数值增量大于零的社团组中模块度函数值增量的最大值,ΔQsmallest为模块度函数值增量大于零的社团组中模块度函数值增量的最小值。
7.根据权利要求1至5中任意一项所述的方法,其特征在于,所述方法还包括:
确定每个所述网络社团中,与区别于其所属网络社团的目标网络社团节点相连接的目标节点,所述目标节点组成节点组;
选取所述节点组中的一个目标节点作为当前节点;
获取所述目标网络社团中,在所述当前节点添加至所述目标网络社团时的目标社团强度增量;
判断所述目标社团强度增量是否小于或者等于零,如果是,将所述当前节点移除出所述节点组中,返回执行所述选取所述节点组中的一个目标节点作为当前节点,直到所述节点组为空,否则,将所述当前节点确定为该当前节点的所属网络社团及所述目标网络社团的重叠节点,并将所述当前节点移除出所述节点组中,选取所述当前节点的相连节点作为目标节点添加至所述节点组中,返回执行所述选取所述节点组中的一个目标节点作为当前节点,直到所述节点组为空;
依据所述重叠节点,确定每两个所述网络社团之间的重叠网络社团。
8.一种复杂网络中网络社团的确定装置,其特征在于,所述复杂网络包括多个节点,每个所述节点分别与至少一个区别于自身节点的节点相连,相连节点之间的边具有两个边方向,且每个边方向具有各自的边权值,其特征在于,所述装置包括:
局部重心性获取单元,用于依据所述复杂网络中相连节点之间边的边权值,获取所述复杂网络中每个节点的局部重心性数值;
局部重心点确定单元,用于依据每个节点的局部重心性数值,在所述复杂网络中确定至少一个节点作为目标局部重心点;
初始社团确定单元,用于在所述复杂网络中,确定分别以每个所述目标局部重心点为重心的初始社团;
网络社团确定单元,用于确定所述初始社团中的网络社团;
其中,所述局部重心性获取单元,包括:
权重值获取子单元,用于利用获取所述复杂网络中每个节点的权重值;
其中,wij为所述复杂网络中节点vi指向节点vj的边方向的边权值,wji为节点vj指向节点vi的边方向的边权值,r为边权值wji中与边权值wij相关联的数值,Hi为所述复杂网络中节点vi所属的邻域节点,λ、β为参数,wi为所述复杂网络中节点vi的权重值;
局部重心性获取子单元,用于依据所述复杂网络中每个节点的权重值,利用获取所述复杂网络中每个节点的局部重心性数值;
其中,wj为所述复杂网络中节点vj的权重值,Act(vi)为所述节点vi的局部重心性数值。
9.根据权利要求8所述的装置,其特征在于,所述局部重心点确定单元,包括:
初始局部重心点确定子单元,用于获取局部重心性数据值大于预设第一数值的节点作为初始局部重心点;
初始局部社团确定子单元,用于在所述复杂网络中,确定分别以每个所述初始局部重心点为重心的初始局部社团;
第一局部重心点确定子单元,用于分别在每个所述初始局部社团中,确定到该初始局部社团中其他节点的距离之和最小的节点作为目标局部重心点。
10.根据权利要求8所述的装置,其特征在于,所述局部重心点确定单元包括:
社团密度值确定子单元,用于分别确定每个所述节点的邻域所组成社团各自的社团密度值;
乘积获取子单元,用于获取每个所述节点的局部重心性数值与该节点对应的社团密度值的乘积;
第二局部重心点确定子单元,用于确定所述乘积大于预设第二数值的节点作为目标局部重心点。
11.根据权利要求8所述的装置,其特征在于,所述初始社团确定单元,包括:
局部重心点排序子单元,用于对所述目标局部重心点依据其各自的局部重心性数值的大小进行排序;
初始社团确定子单元,用于依次分别确定以排序后的每个所述目标局部重心点为重心的初始社团。
12.根据权利要求11所述的装置,其特征在于,所述初始社团确定子单元,包括:
第一局部重心点选取模块,用于选取排序后的第一个目标局部重心点作为当前目标局部重心点;
第一初始社团确定模块,用于将与所述当前目标局部重心点及所述当前目标局部重心点相连接的节点确定为一个初始社团;
迭代局部重心点选取模块,用于选取排序在所述当前目标局部重心点之后的第一个目标局部重心点作为当前目标局部重心点,触发迭代初始社团确定模块;
所述迭代初始社团确定模块,用于将所述当前目标局部重心点及与所述当前目标局部重心点相连接且不存在与其他初始社团中的节点确定为一个初始社团,返回触发所述迭代局部重心点选取模块,直到所述当前目标局部重心点为排序后的最后一个目标局部重心点。
13.根据权利要求8或12所述的装置,其特征在于,所述网络社团确定单元,包括:
社团组组合子单元,用于任意选取两个所述初始社团组成一个社团组;
增量获取子单元,用于获取每个所述社团组的模块度函数值增量;
社团组排序子单元,用于对每个所述社团组依据其各自的模块度函数值增量的大小进行排序;
社团组选取子单元,用于在排序后的所述社团组中,依次选取L个其模块度函数值增量大于零且其内所包含的初始社团唯一被选取的社团组;
社团组合子单元,用于将选取的中的两个初始社团进行合并,得到新的社团,将所述新的社团作为初始社团,返回触发所述社团组组合子单元,直到所述社团组组合子单元组合到的社团组的模块度函数值增量小于或者等于零;
社团确定子单元,用于确定当前存在的初始社团为所述复杂网络中的网络社团;
其中,L为所述社团组中,其模块度函数值增量大于或者等于(ΔQbiggest-ΔQsmallest)/2的社团组的数量值,ΔQbiggest为模块度函数值增量大于零的社团组中模块度函数值增量的最大值,ΔQsmallest为模块度函数值增量大于零的社团组中模块度函数值增量的最小值。
14.根据权利要求8至12任意一项所述的装置,其特征在于,所述装置还包括:
目标节点确定单元,用于在所述网络社团确定单元确定到所述网络社团之后,确定每个所述网络社团中,与区别于其所属网络社团的目标网络社团节点相连接的目标节点,所述目标节点组成节点组;
当前节点确定单元,用于选取所述节点组中的一个目标节点作为当前节点;
强度增量获取单元,用于获取所述目标网络社团中,在所述当前节点添加至所述目标网络社团时的目标社团强度增量;
重叠判断单元,用于判断所述目标社团强度增量是否小于或者等于零,如果是,将所述当前节点移除出所述节点组中,返回触发所述当前节点确定单元,直到所述节点组为空,否则,将所述当前节点确定为该当前节点的所属网络社团及所述目标网络社团的重叠节点,并将所述当前节点移除出所述节点组中,选取所述当前节点的相连节点作为目标节点添加至所述节点组中,返回触发所述当前节点确定单元,直到所述节点组为空;
重叠社团确定单元,用于依据所述重叠节点,确定每两个所述网络社团之间的重叠网络社团。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310320095.0A CN103345531B (zh) | 2013-07-26 | 2013-07-26 | 一种复杂网络中网络社团的确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310320095.0A CN103345531B (zh) | 2013-07-26 | 2013-07-26 | 一种复杂网络中网络社团的确定方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103345531A CN103345531A (zh) | 2013-10-09 |
CN103345531B true CN103345531B (zh) | 2017-05-24 |
Family
ID=49280326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310320095.0A Expired - Fee Related CN103345531B (zh) | 2013-07-26 | 2013-07-26 | 一种复杂网络中网络社团的确定方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103345531B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055568B (zh) * | 2016-05-18 | 2019-06-28 | 安徽大学 | 一种基于单步添加团的社交网络的朋友自动分组方法 |
CN107705213B (zh) * | 2017-07-17 | 2022-01-28 | 西安电子科技大学 | 一种静态社交网络的重叠社团发现方法 |
CN110213070B (zh) * | 2018-04-04 | 2021-08-17 | 腾讯科技(深圳)有限公司 | 团网络识别方法、装置、服务器及计算机可读存储介质 |
CN109558522A (zh) * | 2018-12-19 | 2019-04-02 | 重庆百行智能数据科技研究院有限公司 | 企业网络图的建立方法、装置和计算机可读存储介质 |
CN110287237B (zh) * | 2019-06-25 | 2021-07-09 | 上海诚数信息科技有限公司 | 一种基于社会网络结构分析社团数据挖掘方法 |
CN111030854A (zh) * | 2019-12-04 | 2020-04-17 | 兰州交通大学 | 一种Spark云服务环境下面的复杂网络社团发现方法 |
CN111601352B (zh) * | 2020-03-11 | 2022-04-05 | 首都师范大学 | 基于社交属性的车载自组织网络路由选择方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344940A (zh) * | 2008-08-21 | 2009-01-14 | 魏芳 | 一种基于全局划分和局部扩展的网络重叠社团检测方法 |
CN101840543A (zh) * | 2010-05-07 | 2010-09-22 | 南京大学 | 基于顶点差异性的社团发现方法 |
CN102073700A (zh) * | 2010-12-30 | 2011-05-25 | 浙江大学 | 一种复杂网络社团的发现方法 |
CN103164533A (zh) * | 2013-04-09 | 2013-06-19 | 哈尔滨工业大学 | 基于信息理论的复杂网络社团检测方法 |
-
2013
- 2013-07-26 CN CN201310320095.0A patent/CN103345531B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344940A (zh) * | 2008-08-21 | 2009-01-14 | 魏芳 | 一种基于全局划分和局部扩展的网络重叠社团检测方法 |
CN101840543A (zh) * | 2010-05-07 | 2010-09-22 | 南京大学 | 基于顶点差异性的社团发现方法 |
CN102073700A (zh) * | 2010-12-30 | 2011-05-25 | 浙江大学 | 一种复杂网络社团的发现方法 |
CN103164533A (zh) * | 2013-04-09 | 2013-06-19 | 哈尔滨工业大学 | 基于信息理论的复杂网络社团检测方法 |
Non-Patent Citations (1)
Title |
---|
基于有向赋权图的垃圾邮件社团发现算法;黄胜宇等;《微计算机信息》;20111231;第27卷(第7期);164页左栏的3段-165页左栏第10段,即文章第2-3节 * |
Also Published As
Publication number | Publication date |
---|---|
CN103345531A (zh) | 2013-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103345531B (zh) | 一种复杂网络中网络社团的确定方法及装置 | |
Yager et al. | The continuous ordered weighted geometric operator and its application to decision making | |
Buchsbaum et al. | On external memory graph traversal | |
CN103927337B (zh) | 用于联机分析处理中关联关系的数据处理方法和装置 | |
CN105912712B (zh) | 基于大数据的机器人对话控制方法和系统 | |
CN109299436A (zh) | 一种满足本地差分隐私的偏好排序数据收集方法 | |
CN106130899A (zh) | 一种生成业务路径的方法和装置 | |
Ueckerdt et al. | An improved planar graph product structure theorem | |
CN107491512A (zh) | 一种基于图片识别进行内容搜索的方法及系统 | |
Enginoğlu et al. | A generalization of fuzzy soft max-min decision-making method and its application to a performance-based value assignment in image denoising | |
Liu et al. | Overlapping community discovery algorithm based on hierarchical agglomerative clustering | |
CN113919512A (zh) | 基于计算资源逻辑分层的联邦学习通信优化方法及系统 | |
Saad et al. | Novel similarity measures for t-spherical fuzzy sets and their applications in pattern recognition and clustering | |
CN103559318B (zh) | 对异质信息网络包含的对象进行排序的方法 | |
CN107436933A (zh) | 用于病历档案整理的层次聚类系统 | |
CN108680897A (zh) | 一种室内定位方法、装置、电子设备及存储介质 | |
Akgunes et al. | Some properties of zero divisor graph obtained by the ring Z p× Z q× Z r | |
CN106681803A (zh) | 一种任务调度方法及服务器 | |
Hussain et al. | Operations on neutrosophic vague graphs | |
CN110309578A (zh) | 一种基于计算机数据处理的经济数据拟合系统及方法 | |
Haviv | A fixed-parameter algorithm for the Schrijver problem | |
CN104462480A (zh) | 基于典型性的评论大数据挖掘方法 | |
Caro et al. | Forcing $ k $-repetitions in degree sequences | |
Zhao et al. | An algorithm based on game theory for detecting overlapping communities in social networks | |
Morohashi et al. | Some minimum merging networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170524 Termination date: 20190726 |
|
CF01 | Termination of patent right due to non-payment of annual fee |