一种基于Spark的并行蚁群优化社区发现方法技术

技术编号:24169279 阅读:34 留言:0更新日期:2020-05-16 02:25
本发明专利技术为一种基于Spark的并行蚁群优化社区发现方法,主要包含三个并行模块:确定蚂蚁转移顺序、构造最优解和解的优化。确定蚂蚁转移顺序模块负责计算网络节点的凝聚性度量值,并将其升序排列,获取对应的节点顺序列表,作为蚁群的转移顺序,降低蚂蚁转移过程中的随机性,从而提高算法的精确度;构造最优解模块负责使每只蚂蚁均完成解向量的构造,构成解空间,并获取最优解空间中模块度最高的解;解的优化模块负责对蚁群产生的最优解进行优化,以获得更好的社区划分结果。该方法提高了在大规模网络中进行社区发现的可行性和有效性。

【技术实现步骤摘要】
一种基于Spark的并行蚁群优化社区发现方法
本专利技术属于大规模复杂网络中的社区发现领域,具体涉及一种基于Spark的并行蚁群优化社区发现方法。
技术介绍
自然界中各种数据关系存在复杂的网络结构,如社会网中人与人的关系,生物蛋白质中蛋白质的相互作用,互联网中网页的链接关系等。自从有网络社区发现概念以来,复杂网络的社区发现研究已经成为了现代网络科学中最热门的课题之一。随着近年来互联网的高速发展,复杂网络的种类和规模得到了快速的发展和变化,数据量呈指数级增长。单机执行的FN算法基于贪心思想,每次只能合并一对社区,需要多次循环,耗时严重,因此不适用于大规模网络。GN算法通过计算各边的边介数,并通过循环删除边介数最大的边来达到划分社区的目的,但是GN算法的求解效率低,依然不适用于大规模网络。2013年,Jierui等人将马尔科夫聚类算法的思想引入到LPA中,借助矩阵相乘来完成标签传播过程,从而提高算法的稳定性。但是该算法在实现过程中使用矩阵相乘会消耗大量内存和计算资源,因而不适用于大规模网络。因此需要借助分布式平台,进行并行的社区发现算法研究。在社区发现算法中以蚁群算法为代表的元启发式算法是对自然界中的优秀种群协作完成某种行为的抽象和总结,该类算法具有天然的并行性,本专利技术进行并行的蚁群优化社区发现方法研究。目前并行蚁群优化算法多用于解决TSP或航路规划等路径问题,而没有直接用于挖掘网络社区结构的先例。因此,本专利技术主要着眼于提出一种可行有效的蚁群优化算法,并在Spark平台上实现并行化,用于挖掘大规模网络中的社区结构。
技术实现思路
本专利技术的目的在于提高在大规模网络中进行社区发现的可行性和有效性,提出一种基于Spark的并行蚁群优化社区发现方法。本专利技术充分利用Spark平台提供的RDD算子,实现了并行化蚁群算法在社区发现中的应用。本专利技术主要包含三个并行模块:确定蚂蚁转移顺序、构造最优解和解的优化。确定蚂蚁转移顺序模块负责计算网络节点的凝聚性度量值,并将其升序排列,获取对应的节点顺序列表,作为蚁群的转移顺序,降低蚂蚁转移过程中的随机性,从而提高算法的精确度;构造最优解模块负责使每只蚂蚁均完成解向量的构造,构成解空间,并获取最优解空间中模块度最高的解;解的优化模块负责对蚁群产生的最优解进行优化,以获得更好的社区划分结果。本专利技术提出的一种基于Spark的并行蚁群优化社区发现方法,该方法的步骤如下:步骤一:确定蚂蚁转移顺序:确定大规模网络中网络节点数量N,并行独立计算每个网络节点的凝聚性度量值,将每个网络节点的凝聚性度量值按照升序排列,获取对应的节点顺序列表,作为蚁群的转移顺序;步骤二:构造最优解:将蚂蚁个体分布到大规模网络的各分区中,并行的使每只蚂蚁为网络中节点确定标签,蚂蚁按照步骤一确定的蚂蚁的转移顺序在网络中移动,结合信息素和启发式信息综合确定节点标签的概率,同时按照式(7)计算任意两个节点的皮尔逊系数C(i,j),按公式(9)计算此次蚂蚁产生的社区划分的模块度Q,其中,i和j表示任意两个节点;A是邻接矩阵,记录网络的拓扑结构,Aiq表示邻接矩阵的第i行第q列的元素值,代表节点i与节点q之间是否有边相连,有边相连则该值为1,反之则为0;γi表示观测值Aiq的均值;σi表示观测值Aiq的标准差;Ajq表示邻接矩阵的第j行第q列的元素值,代表节点j与节点q之间是否有边相连,有边相连则该值为1,反之则为0;γj表示观测值Ajq的均值;σj表示观测值Ajq的标准差;公式(9)中,nc表示网络图中含有的社区个数,lc表示社区c内部包含的边数,dc表示社区c内部节点的度数总和,e则表示网络图的总边数;完成每个解向量的构造,从而构成整个解空间,最后获取解空间中模块度最高的解作为蚁群产生的最优解,实现网络社区的划分;步骤三:解的优化:并行的计算划分后的网络社区中相连社区对合并后的模块度增量是否大于零,若大于零则筛选出待合并的社区对,并按照连边率从大到小的顺序对待合并的社区对一一合并,同时用模块度增量控制合并过程,从而对步骤二中蚁群产生的最优解进行优化,直至模块度增量为零,形成最终解,获得最终的社区划分结果。与现有的技术相比,本专利技术的优点及有益效果是,本专利技术具有如下突出的特点和显著的进步:(1)针对大规模网络数据量大的问题,本专利技术设计了并行的蚁群优化算法,充分利用了Spark平台的RDD算子,实现算法的并行化,解决现有蚁群算法难以在大规模网络中进行社区发现的问题。(2)针对蚂蚁转移过程中的随机性问题,本专利技术在并行的蚁群优化算法中引入节点凝聚性度量,以节点凝聚性为参考确定蚂蚁转移顺序,降低蚂蚁转移过程中的随机性,从而提高算法精度。(3)针对蚁群优化算法的收敛速度慢的问题,本专利技术在并行的蚁群优化算法中将标签传播思想引入到蚁群搜索过程,提出一种蚂蚁定标策略,该策略结合信息素和启发式信息,综合确定节点标签,该方法通过更短的时间得到了模块度更高的社区划分,有效的提高算法的收敛速度。(4)本专利技术在并行的蚁群优化算法中引入连边率概念进行解的优化,提高合并的效率,按照连边率将社区对降序排列,再以模块度作为目标函数,采用基于模块度优化的合并策略,进行社区发现得到了更高模块度的社区划分,从而进一步提高算法精度。(5)本专利技术主要着眼于提出一种可行有效的蚁群优化算法,并在Spark平台上实现并行化,用于挖掘大规模网络中的社区结构。附图说明图1为蚂蚁转移顺序并行框架图。图2为蚂蚁转移顺序RDD状态转换流程图。图3为构造最优解并行框架图。图4为构造最优解RDD状态转换流程图。图5为解的优化并行框架图。图6为解的优化RDD状态转换流程图。图7(a)为不同蚂蚁数量下的CA-GrQc网络的加速比,图7(b)不同蚂蚁数量下的PGP网络的加速比,图7(c)不同蚂蚁数量下的CA-Astroph网络的加速比。具体实施方式下面结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚完整的描述,显然所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术的保护范围。本专利技术方法是在Spark集群上执行的,集群包括Master节点和Worker节点,所有节点均属于同一局域网。Spark集群采用的是主/从模式,即Master-Slave模型。Master表示主节点,是集群的资源管理器,控制整个集群的资源分配和任务下达等工作。Slave表示从节点,即集群中含有Worker进程的节点,Worker节点负责接收Master节点下达的工作指令,并将工作指令传达给Executer进程,使其执行任务,任务结束后,Worker节点负责向Master节点做出相应的工作汇报。本专利技术提出的一种基于Spark的并行蚁群优化社区发现方法,整体流程如下所示本文档来自技高网
...

【技术保护点】
1.一种基于Spark的并行蚁群优化社区发现方法,该发现方法的步骤是:/n步骤一:确定蚂蚁转移顺序:确定大规模网络中网络节点数量N,并行独立计算每个网络节点的凝聚性度量值,将每个网络节点的凝聚性度量值按照升序排列,获取对应的节点顺序列表,作为蚁群的转移顺序;/n步骤二:构造最优解:将蚂蚁个体分布到大规模网络的各分区中,并行的使每只蚂蚁为网络中节点确定标签,蚂蚁按照步骤一确定的蚂蚁的转移顺序在网络中移动,结合信息素和启发式信息综合确定节点标签的概率,同时按照式(7)计算任意两个节点的皮尔逊系数C(i,j),按公式(9)计算此次蚂蚁产生的社区划分的模块度Q,/n

【技术特征摘要】
1.一种基于Spark的并行蚁群优化社区发现方法,该发现方法的步骤是:
步骤一:确定蚂蚁转移顺序:确定大规模网络中网络节点数量N,并行独立计算每个网络节点的凝聚性度量值,将每个网络节点的凝聚性度量值按照升序排列,获取对应的节点顺序列表,作为蚁群的转移顺序;
步骤二:构造最优解:将蚂蚁个体分布到大规模网络的各分区中,并行的使每只蚂蚁为网络中节点确定标签,蚂蚁按照步骤一确定的蚂蚁的转移顺序在网络中移动,结合信息素和启发式信息综合确定节点标签的概率,同时按照式(7)计算任意两个节点的皮尔逊系数C(i,j),按公式(9)计算此次蚂蚁产生的社区划分的模块度Q,



其中,i和j表示任意两个节点;A是邻接矩阵,记录网络的拓扑结构,Aiq表示邻接矩阵的第i行第q列的元素值,代表节点i与节点q之间是否有边相连,有边相连则该值为1,反之则为0;γi表示观测值Aiq的均值;σi表示观测值Aiq的标准差;Ajq表示邻接矩阵的第j行第q列的元素值,代表节点j与节点q之间是否有边相连,有边相连则该值为1,反之则为0;γj表示观测值Ajq的均值;σj表示观测值Ajq的标准差;



公式(9)中,nc表示网络图中含有的社区个数,lc表示社区c内部包含的边数,dc表示社区c内部节点的度数总和,e则表示网络图的总边数;
完成每个解向量的构造,从而构成整个解空间,最后获取解空间中模块度最高的解作为蚁群产生的最优解,实现网络社区的划分;
步骤三:解的优化:并行的计算划分后的网络社区中相连社区对合并后的模块度增量是否大于零,若大于零则筛选出待合并的社区对,并按照连边率从大到小的顺序对待合并的社区对一一合并,同时用模块度增量控制合并过程,从而对步骤二中蚁群产生的最优解进行优化,直至模块度增量为零,形成最终解,获得最终的社区划分结果。


2.根据权利要求1所述的发现方法,其特征在于,步骤一的具体过程是:
步骤1.1:根据网络节点数量N,实例化N个节点对象,并将其存放于列表NodelList[N],通过parallelize()算子将列表NodeList[N]创建成RDD,记为RDD1;
步骤1.2:根据点数量将RDD1分成若干个分区,并按照负载均衡原则,将RDD1均匀分布到各分区中;然后RDD1通过map()算子,计算当前节点的凝聚性Ψi,记为RDD2;
步骤1.3:通过collect()算子将各个Worker节点上凝聚性的计算结果收集起来,记为RDD3;
步骤1.4:通过sortBy()算子依据节点的凝聚性值对所有的节点进行升序排列,确定蚂蚁的转移顺序列表Ant_transfer;凝聚性越大,代表邻居节点多,所属社区内部链接越紧密,能准确的确定标签。


3.根据权利要求1所述的发现方法,其特征在于,步骤二的具体过程是:
步骤2.1:设定蚁群规模为x,实例化x个蚂蚁对象,并将其存放于列表List(x)中,通过parallelize()算子将列表List(x)创建成并行的RDD,记为...

【专利技术属性】
技术研发人员:顾军华佘士耀陈博李鑫航张丹红常光耀张亚娟
申请(专利权)人:河北工业大学
类型:发明
国别省市:天津;12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1