CN110535681A - 基于开放运算语言OpenCL并行的重叠社区检测方法 - Google Patents

基于开放运算语言OpenCL并行的重叠社区检测方法 Download PDF

Info

Publication number
CN110535681A
CN110535681A CN201910648583.1A CN201910648583A CN110535681A CN 110535681 A CN110535681 A CN 110535681A CN 201910648583 A CN201910648583 A CN 201910648583A CN 110535681 A CN110535681 A CN 110535681A
Authority
CN
China
Prior art keywords
particle
community
node
host side
cpu host
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.)
Granted
Application number
CN201910648583.1A
Other languages
English (en)
Other versions
CN110535681B (zh
Inventor
李阳阳
张家豪
焦李成
孙振翔
刘光远
何爱媛
王蕾
尚荣华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian University of Electronic Science and Technology
Original Assignee
Xian University of Electronic Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian University of Electronic Science and Technology filed Critical Xian University of Electronic Science and Technology
Priority to CN201910648583.1A priority Critical patent/CN110535681B/zh
Publication of CN110535681A publication Critical patent/CN110535681A/zh
Application granted granted Critical
Publication of CN110535681B publication Critical patent/CN110535681B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/906Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/142Network analysis or design using statistical or mathematical methods

Abstract

本发明提出了一种基于开放运算语言OpenCL并行的量子粒子群算法的重叠社区检测方法,在保证检测正确率的基础上,提高检测效率,实现步骤为:配置开放运算语言OpenCL设备端;CPU主机端构建重叠社区结构的边图L(G);CPU主机端构建共邻矩阵M;CPU主机端提取共邻矩阵M的特征值和特征向量;CPU主机端获取评价结果cost;CPU主机端构建网格Grid;OpenCL设备端编写不同的内核程序;OpenCL设备端基于量子粒子群算法并行计算和评价第t+1代粒子群的边图L(G)的重叠社区划分结果;CPU主机端构建非支配解集repnew;CPU主机端获取边图L(G)的重叠社区划分结果。

Description

基于开放运算语言OpenCL并行的重叠社区检测方法
技术领域
本发明属于社交网络分析技术领域,涉及一种重叠社区检测方法,具体涉及一种基于开放运算语言OpenCL并行的重叠社区检测方法,可用于对社交网络,交通运输网等复杂网络进行社区划分。
背景技术
随着计算机技术的飞速发展,当今世界迈入了网络世界,现实世界中的很多群体结构都可以用复杂网络来表示,包括人际关系网,交通运输网,经济贸易关系网等。这些复杂网络虽然多种多样,各不相同,但都可以使用图模型来进行抽象化表达。其中,图模型中的节点表示群体结构的成员,边表示群体结构中成员之间的关系。复杂网络包含“小世界特性”,“无标度特性”以及最具实际意义的社区结构特性。社区结构是复杂网络的重要特征,是指复杂网络中由一些节点组成的簇。根据某种特性或功能,复杂网络可以划分为多个社区,同一社区内的节点连接紧密,不同社区间的节点连接稀疏。
社区检测分为非重叠社区检测和重叠社区检测。早先社交网络分析技术领域内研究的都是非重叠社区检测,然而在现实世界中,社区结构中往往存在着部分的重叠社区,部分成员往往同时属于多个社区,所以重叠社区检测的意义也就更为重要。重叠社区检测实质上是检测各个成员的分类情况,从而形成了多个社区。评价重叠社区检测方法的指标包括检测正确率和计算效率。
为了提高重叠社区检测的检测正确率,通常采用基于种子的三阶段策略方法和基于种子节点扩展方法,以及基于种群的进化多目标优化方法。粒子群算法是一种模拟鸟群觅食过程的一种全局随即搜索算法。自然界中各种生物群体都有其特有的群体运动规律,探索这类群体行为从而使用计算机构建群体模型是人工生命的主要研究领域之一。因为其原理简单、参数规模较小、计算复杂度不高等优点具有很强的通用性,在很多领域都可以应用。然而在粒子群算法中,粒子是在经典力学的原理下运动,有确定的位置和确定的飞行轨迹,因此不能确定搜索到全局最优解。之后,孙俊等人根据量子不确定性原理假设粒子具有波动性,提出了量子粒子群算法。考虑将不确定性的思想引入粒子群算法中,将粒子的搜索空间转变为量子空间,使粒子带有量子特性。量子空间是一个由概率支配的世界,只有发生某件事件的概率,而没有具体事件的发生。
例如2013年,陈静硕士在西安电子科技大学发表的硕士研究生毕业论文“基于自然计算的复杂网络社区检测”一文中,公开了一种基于量子粒子群算法的重叠社区检测方法。将复杂网络的图模型转化为边图,构造基于边图的共临矩阵,再通过共临矩阵的对角矩阵的逆矩阵和共临矩阵相乘,得标准矩阵,对标准矩阵进行特征值分解求得特征值和特征向量,评价初始粒子群的重叠社区划分结果,利用评价结果构造网格,基于量子粒子群算法并通过网格对粒子群中所有粒子进行串行更新,对包含社区个数少于2的所有粒子进行串行修正,对粒子群中所有粒子进行串行重叠社区划分,对粒子群中所有粒子的重叠社区划分结果进行串行评价,根据评价结果构造新的网格,再对所有粒子进行更新,若满足终止条件,输出重叠社区划分结果,否则,继续对粒子进行更新,最后输出的重叠社区划分结果,具有不错的检测正确率。然而,其粒子群的更新、修正、重叠社区划分和评价都是串行进行的,运行时间较长,导致划分效率较低。
发明内容
本发明的目的在于克服上述现有技术存在的缺陷,提出一种基于OpenCL并行的量子粒子群的复杂网络重叠社区检测方法,在保证检测正确率的基础上,提高检测效率。
本发明的技术思路是,利用OpenCL设备端的并行性,使用量子粒子群算法对复杂网络进行重叠社区检测,并行地计算粒子群中每个个体的所代表的网络划分,并行的处理方式克服粒子群中处理每个个体用时长的问题,具体步骤如下:
(1)配置开放运算语言OpenCL设备端:
中央处理器CPU主机端通过PCIe总线与开放运算语言OpenCL设备端进行连接,构建基于OpenCL设备端的上下文并对开放运算语言OpenCL设备端进行配置,同时激活OpenCL设备端中的PN个工作项,PN∈[20,∞];
(2)CPU主机端构建重叠社区结构的边图L(G);
(2a)CPU主机端构建以重叠社区成员为节点、以成员之间的关系为边且边数为N的图模型G,N>0;
(2b)CPU主机端构建以图模型G中的边为边节点、以任意两条边存在的重合节点为边的边图L(G);
(3)CPU主机端构建共邻矩阵M;
(3a)CPU主机端根据边图L(G)构建邻接矩阵A:
其中,Aij表示边图L(G)中第i个边节点与第j个边节点之间的关系,Aij=1,表示第i个边节点与第j个边节点之间有边相连,Aij=0,表示第i个边节点与第j个边节点之间无边相连;
(3b)CPU主机端根据邻接矩阵A构建共邻矩阵M',并判断Aij=0是否成立,若是,将Mij'置0,否则,对Mij'加一,得到共邻矩阵M,其中,M'和M的表达式分别为:
其中,Mij'表示边图L(G)中第i个边节点与第j个边节点的共同邻居节点数,其中AirAjr表示第r个节点是否为边图L(G)中第i个边节点与第j个边节点的共同邻居节点,AirAjr=1,表示第r个节点是边图L(G)中第i个边节点与第j个边节点的共同邻居节点,AirAjr=0,表示第r个节点不是边图L(G)中第i个边节点与第j个边节点的共同邻居节点,Mij=(Mij'+1)×Aij
(4)CPU主机端提取共邻矩阵M的特征值和特征向量:
CPU主机端对共邻矩阵M进行特征值分解,并对分解结果进行降序排列,得到N个特征值λ12,…,λN和N个特征值对应的特征向量V1,V2,…,VN
(5)CPU主机端获取评价结果cost:
(5a)CPU主机端初始化量子粒子群算法的参数,包括迭代次数t=1、最大迭代次数T=200、粒子X'[t]的个数PN,粒子X'[t]的长度m2由激活标志h1的长度m和聚类中心h2的长度m拼接而成,m∈[10,N/4],每个粒子X'[t]表征边图L(G)中的m'个被激活的社区聚类中心centerm',m'∈[2,m];
(5b)CPU主机端对粒子群中包含社区个数少于2的粒子X'[t]进行修正,使其至少包含2个社区,得到修正后的PN个粒子X[t];
(5c)CPU主机端计算特征向量V2中的每个值到每个粒子X[t]中m'个被激活的社区聚类中心centerm'的距离,并用V2中距离centerm'最近的值代替centerm',形成新的m'个被激活的社区聚类中心并计算边图L(G)中每一个边节点分别到每个粒子X[t]中的m'个被激活的社区聚类中心的谱方法加权距离,并将每个边节点分类到距离centerm'最近的社区中,得到每个粒子的长度为N的重叠社区划分结果assignment[t];
(5d)CPU主机端构造多目标优化函数Evaluate,并通过Evaluate对PN个重叠社区划分结果assignment[t]进行评价,得到每个粒子的长度为2的评价结果向量cost[t];
(6)CPU主机端构建网格Grid:
CPU主机端根据PN个粒子的评价结果向量cost[t],对PN个粒子X[t]进行非支配排序,得到非支配解集rep,并通过非支配解集rep中所有非支配粒子的评价结果向量cost[t]构建包括10×10个小格子cell的网格Grid,其中rep中非支配粒子的个数小于等于20;
(7)OpenCL设备端编写不同的内核程序:
OpenCL设备端将基于量子粒子群算法,并通过网格Grid对单个粒子X[t]进行更新的过程编写为内核程序Kernel1,同时根据步骤(5b)的方法将对更新后的单个粒子X'[t+1]进行修正的过程编写为内核程序Kernel2,根据步骤(5c)的方法将对修正后的单个粒子X[t+1]进行重叠社区划分的过程编写为内核程序Kernel3,根据步骤(5d)的方法将对分类后的单个粒子X[t+1]进行评价的过程编写为内核程序Kernel4;
(8)OpenCL设备端基于量子粒子群算法并行计算和评价第t+1代粒子群的边图L(G)的重叠社区划分结果:
(8a)OpenCL设备端的PN个工作项并行执行内核程序Kernel1,实现对PN个粒子X[t]进行更新,得到更新后的PN个粒子X'[t+1];
(8b)OpenCL设备端的PN个工作项并行执行内核程序Kernel2,实现对更新后的PN个粒子X'[t+1]进行修正,得到修正后的PN个粒子X[t+1];
(8c)OpenCL设备端的PN个工作项并行执行内核程序Kernel3,实现对修正后的PN个粒子X[t+1]进行重叠社区划分,得到PN个粒子X[t+1]的重叠社区划分结果assignment[t+1];
(8d)OpenCL设备端的PN个工作项,并行执行内核程序Kernel4,实现对修正后的PN个粒子X[t+1]的重叠社区划分结果assignment[t+1]进行评价,得到PN个粒子X[t+1]的评价结果向量cost[t+1];
(9)CPU主机端构建非支配解集repnew:
CPU主机端根据PN个粒子X[t+1]的评价结果向量cost[t+1],对PN个粒子X[t+1]进行非支配排序,得到非支配解集rep',并对非支配解集rep'与非支配解集rep进行合并,再对合并结果中的粒子进行非支配排序,得到非支配解集repnew;
(10)CPU主机端获取边图L(G)的重叠社区划分结果:
中央处理器CPU主机端判断t+1=T是否成立,若是,采用模块度评价准则对非支配解集repnew中每个粒子所代表的重叠社区划分结果进行评价,并输出检测正确率最大的重叠社区划分结果,否则,以多目标优化函数Evaluate构建关于非支配解集repnew的网格Gridnew,令t=t+1,rep=repnew,Grid=Gridnew,并执行步骤(8)。
本发明与现有技术相比,具有如下优点:
第一,本发明通过OpenCL设备端,使用量子粒子群算法对复杂网络进行重叠社区检测,并行处理粒子群中各个粒子的更新、修正、重叠社区划分和评价,将原有的粒子群内各粒子串行的处理方式改为粒子群内所有粒子同时的、并行的处理方式,从而克服了现有技术中各个粒子更新、修正、重叠社区划分和评价时间长的问题,提高了重叠社区检测的计算效率。
第二,本发明使用对共临矩阵进行特征值分解的方式替代了对由共邻矩阵构造的标准矩阵进行特征值分解的方式,在不影响结果的情况下避免了矩阵求逆的过程,减少了运行时间和计算资源的占用,进一步提高了重叠社区检测的计算效率。
附图说明
图1为本发明的实现流程图;
图2为本发明非支配排序的原理图;
图3为本发明OpenCL设备端工作组划分示意图;
图4为本发明4个内核函数具体任务示意图。
具体实施方式
以下结合附图和具体实施例,对本发明作进一步的详细描述。
参照附图1,本发明包括如下步骤:
步骤1)配置开放运算语言OpenCL设备端:
中央处理器CPU主机端通过PCIe总线与开放运算语言OpenCL设备端进行连接,并对开放运算语言OpenCL设备端进行配置,创建上下文Context,并在上下文Context中构建命令队列Queue,命令队列Queue将用于CPU主机端和OpenCL设备端直接之间数据和内核程序的传输,同时激活OpenCL设备端中的PN个工作项,PN∈[20,∞],由于在计算机相关设备中,使用2的指数个工作项可以减少内存的浪费,因此这里取PN=128;
步骤2)CPU主机端构建重叠社区结构的边图L(G);
步骤2a)CPU主机端构建以重叠社区成员为节点、以成员之间的关系为边且边数为N的图模型G,N>0;
步骤2b)CPU主机端构建以图模型G中的边为边节点、以任意两条边存在的重合节点为边的边图L(G);
步骤3)CPU主机端构建共邻矩阵M;
步骤3a)CPU主机端根据边图L(G)构建邻接矩阵A:
其中,Aij表示边图L(G)中第i个边节点与第j个边节点之间的关系,Aij=1,表示第i个边节点与第j个边节点之间有边相连,Aij=0,表示第i个边节点与第j个边节点之间无边相连;
步骤3b)CPU主机端根据邻接矩阵A构建共邻矩阵M',并判断Aij=0是否成立,若是,将Mij'置0,否则,对Mij'加一,得到共邻矩阵M,其中,M'和M的表达式分别为:
其中,Mij'表示边图L(G)中第i个边节点与第j个边节点的共同邻居节点数,其中AirAjr表示第r个节点是否为边图L(G)中第i个边节点与第j个边节点的共同邻居节点,AirAjr=1,表示第r个节点是边图L(G)中第i个边节点与第j个边节点的共同邻居节点,AirAjr=0,表示第r个节点不是边图L(G)中第i个边节点与第j个边节点的共同邻居节点,Mij=(Mij'+1)×Aij,M比A更能反映重叠社区结构的紧密程度;
步骤4)CPU主机端提取共邻矩阵M的特征值和特征向量:
CPU主机端采用乘幂法,或QR分解,或Jacobi方法对共邻矩阵M进行特征值分解,并对分解结果进行降序排列,得到N个特征值λ12,…,λN和N个特征值对应的特征向量V1,V2,…,VN
由于QR分解求矩阵特征值的最有效并广泛应用的方法,因此采用QR分解来进行特征值分解:
步骤4a)通过Gram-schmidt正交化方法对共邻矩阵M=[a1,a2,…,aN]进行正交化分解,得正交基[b1,b2,…,bN]和系数矩阵K:
其中,(az,av)表示向量az和向量av的内积;
步骤4b)对正交基[b1,b2,…,bN]进行标准化,并进行矩阵相乘,得正交矩阵Q和上三角矩阵R:
步骤4b)取正交矩阵Q对称轴上的值,即为特征值λ1',λ2',…,λN',再将特征值分别代入特征多项式(λ'E-M)x=0求解特征向量,然后对特征值λ1',λ2',…,λN'进行降序排列,得到N个特征值λ12,…,λN和N个特征值对应的特征向量V1,V2,…,VN,其中,E表示单位阵;
步骤5)CPU主机端获取评价结果cost:
步骤5a)CPU主机端初始化量子粒子群算法的参数,包括迭代次数t=1、最大迭代次数T=200、粒子X'[t]的个数PN为128,粒子X'[t]的长度m2由激活标志h1的长度m和聚类中心h2的长度m拼接而成,m∈[10,N/4],由于在计算机中使用2的指数长度的粒子可以节约内存,取m=16,每个粒子X'[t]表征边图L(G)中的m'个被激活的社区聚类中心centerm',m'∈[2,m],粒子X'[t]的具体编码形式如下:
其中的激活标志h1的激活值flagu∈[0,1],u=1,2,...,m,m为h1和h2的长度,若flagu≥0.5,则第u个社区聚类中心centeru被激活,否则,centeru不被激活;
设V2的最小值和最大值分别为a和b,则centeru∈[a,b];
步骤5b)CPU主机端对粒子群中包含社区个数少于2的粒子X'[t]进行修正,具体为,对于每个粒子随机选两个不相等的两个值p和q,p,q∈[1,m],并令激活值flagp=1-0.5×rand(0,1),激活值flagq=1-0.5×rand(0,1),得到修正后的PN=128个粒子X[t],使其至少包含2个社区,其中,m为h1和h2的长度,rand(0,1)表示取0到1之间的随机值;
步骤5c)由于边图L(G)中各个边节点的主要特征是由特征向量V2决定的,因此,我们使用特征向量V2中的值来取代聚类中心h2中的社区聚类中心;
CPU主机端计算特征向量V2中的每个值到每个粒子X[t]中m'个被激活的社区聚类中心centerm'的距离,并用V2中距离centerm'最近的值代替centerm',形成新的m'个被激活的社区聚类中心并计算边图L(G)中每一个边节点分别到每个粒子X[t]中的m'个被激活的社区聚类中心的谱方法加权距离;
谱方法加权距离的实现步骤如下:
(5c1)选取特征向量V1,V2,…,VN中第2个到第r+1个特征向量,r=m-1,构造行表示边图L(G)中N个边节点的信息,列表示r个特征向量的非平凡特征矩阵V:
(5c2)使用谱方法加权距离公式计算第i个边节点和第u个被激活的社区聚类中心之间的谱方法加权距离Diu
其中,λk+1表示第k+1个特征值,vik,vuk分别表示第k个非平凡特征向量Vk的第i个分量和第u个分量,m'是被激活的社区聚类中心的数目;
计算结束后,将每个边节点分类到距离centerm'最近的社区中,得到每个粒子的长度为N的重叠社区划分结果assignment[t];
步骤5d)CPU主机端构造多目标优化函数Evaluate,包括通过模块度公式Q构建的目标函数Eva1和目标函数Eva2:
其中,max表示求最大值操作,min表示求最小值操作,C为所有社区的组合,c为其中的一个社区,n为M中所有元素之和的一半,|M(c)|为社区c中所有节点对之间的修正共同邻居节点的个数之和,M(v)为节点v与网络中所有节点之间修正共同邻居节点的个数之和;
再通过Evaluate对PN个重叠社区划分结果assignment[t]进行评价,得到每个粒子的长度为2的评价结果向量cost[t];
步骤6)CPU主机端构建网格Grid:
CPU主机端根据PN=128个粒子的评价结果向量cost[t],对PN=128个粒子X[t]进行非支配排序,得到非支配解集rep,其中rep中非支配粒子的个数小于等于20;
参照附图2,对非支配排序的原理,作进一步的描述;
图2中的小圆圈代表粒子群中的非支配解,所有小圆圈构成了非支配解集;在粒子群中不存在评价结果向量中任一个分量比粒子X[t]的评价结果向量中分量更小的粒子,则粒子X[t]即为非支配粒子,判断粒子群中每个粒子是否为非支配粒子的方式,即为非支配排序方法;
再通过非支配解集rep中所有非支配粒子的评价结果向量cost[t]构建包括10×10个小格子cell的网格Grid,实现步骤为:
(6a)设评价结果向量cost[t]中通过多目标优化函数Evaluate中的目标函数Eva1计算的评价结果cost[t][0]中的最小值为c0min,最大值为c0max,通过多目标优化函数Evaluate中的目标函数Eva2计算的评价结果cost[t][1]中的最小值为c1min,最大值为c1max;
(6b)将区间[c0min,c0max]进行十等分的结果,作为网格Grid的第一个轴,将区间[c1min,c1max]进行十等分的结果,作为网格Grid的第二个轴,从而构成了大小为10×10的网格Grid,即网格Grid具有10×10个小格子cell;
步骤7)OpenCL设备端编写不同的内核程序:
OpenCL设备端将基于量子粒子群算法,并通过网格Grid对单个粒子X[t]进行更新的过程编写为内核程序Kernel1,具体步骤为:
(7a)计算粒子群中所有粒子的历史最优的均值mbest:
其中,PN为粒子的个数,m2为粒子的长度,t为当前迭代次数,Pw[t]为第w个粒子的历史最优,Pw[t]=g(Xw[1],Xw[2],…,Xw[t]),w=1,2,…PN,g(·)表示非支配排序;
(7b)在非支配解集rep中通过网格Grid选取全局最优Pg[t]:
根据非支配解集rep中每个非支配粒子的cost[t][0]和cost[t][1],将每个非支配粒子对应于10×10网格Grid中的每个小格子cell,并在包含非支配粒子的所有小格子中,随机选取一个小格子cell_selected,若cell_selected包含多个非支配粒子,则随机选择一个非支配粒子作为全局最优Pg[t],若cell_selected包含一个非支配粒子,则将该非支配粒子作为全局最优Pg[t];
(7c)构造第w个粒子的吸引子pw[t+1]:
pw[t+1]=α·Pw[t]+(1-α)·Pg[t]
其中,α为均匀分布于[0,1]的随机数;
(7d)结合(7a)和(7c)的计算结果,对第w个粒子X[t]进行更新,得到更新后的粒子X'w[t+1]:
X'w[t+1]=pw[t+1]±β·|mbest-Xw[t]|·ln(1/u)
其中,u为均匀分布于[0,1]的随机数,β为收缩-扩张因子。
同时根据步骤(5b)的方法将对更新后的单个粒子X'[t+1]进行修正的过程编写为内核程序Kernel2,根据步骤(5c)的方法将对修正后的单个粒子X[t+1]进行重叠社区划分的过程编写为内核程序Kernel3,根据步骤(5d)的方法将对划分后的单个粒子X[t+1]进行评价的过程编写为内核程序Kernel4;
参照附图3,对划分开放运算语言OpenCL设备端工作组的过程,作进一步的描述;
图3(a)为三个内核函数Kernel1,Kernel2,Kernel4的工作组划分示意图,这三个内核函数均只使用1个工作组,每个工作组内设置128个工作项。图3(a)中的纵坐标表示工作项全局行索引,实线圆角矩形框表示全体工作项,虚线矩形框表示工作组,实线矩形框表示工作项。图3(b)为内核程序Kernel3的工作组划分示意图,内核程序Kernel3使用4个工作组,每个工作组内设置32个工作项。图3(b)中的纵坐标表示工作项全局行索引,实线圆角矩形框表示全体工作项,虚线矩形框表示工作组,实线矩形框表示工作项。
步骤8)OpenCL设备端基于量子粒子群算法并行计算和评价第t+1代粒子群的边图L(G)的重叠社区划分结果:
参照附图4,对计算和评价第t+1代粒子群的边图L(G)的重叠社区划分结果,作进一步的描述;
步骤8a)OpenCL设备端的1个工作组,PN=128个工作项并行执行内核程序Kernel1,实现对PN=128个粒子X[t]进行更新,得到更新后的PN=128个粒子X'[t+1];
步骤8b)OpenCL设备端的1个工作组,PN=128个工作项并行执行内核程序Kernel2,实现对更新后的PN=128个粒子X'[t+1]进行修正,得到修正后的PN=128个粒子X[t+1];
步骤8c)OpenCL设备端使用4个工作组,每个工作组32个工作项,共128个工作项并行执行内核程序Kernel3,实现对修正后的PN=128个粒子X[t+1]进行重叠社区划分,得到PN=128个粒子X[t+1]的重叠社区划分结果assignment[t+1],由于每个OpenCL设备端的局部内存恒定,所以使用4个工作组就可以有更大的局部内存参与计算;
步骤8d)OpenCL设备端的1个工作组,PN=128个工作项,并行执行内核程序Kernel4,实现对修正后的PN个粒子X[t+1]的重叠社区划分结果assignment[t+1]进行评价,得到PN=128个粒子X[t+1]的评价结果向量cost[t+1];
步骤9)CPU主机端构建非支配解集repnew:
CPU主机端根据PN=128个粒子X[t+1]的评价结果向量cost[t+1],对PN=128个粒子X[t+1]进行非支配排序,得到非支配解集rep',并对非支配解集rep'与非支配解集rep进行合并,再对合并结果中的粒子进行非支配排序,得到非支配解集repnew;
步骤10)CPU主机端获取边图L(G)的重叠社区划分结果:
中央处理器CPU主机端判断t+1=T是否成立,若是,采用模块度公式对非支配解集repnew中每个粒子所代表的重叠社区划分结果进行评价,并输出检测正确率最大的重叠社区划分结果,否则,以多目标优化函数Evaluate构建关于非支配解集repnew的网格Gridnew,令t=t+1,rep=repnew,Grid=Gridnew,并执行步骤(8)。
下面结合仿真实验,对本发明的效果做进一步详细描述。
1.仿真实验条件:
本发明的仿真实验条件为:异构平台为NVIDIA异构开发平台和FPGA异构开发平台。
NVIDIA异构开发平台主机端CPU为Core(TM)i7-4720HQ,2.60GHz,内存8G,64位WINDOWS 7系统,软件采用Microsoft Visual Studio 2017,编程语言为OpenCL,软件开发工具包为NVIDIA GPU Computing SDK,GPU设备端:NVIDIA GeForce GTX 950M,FPGA设备端:Arria 10Reference Platform。
2.仿真实验内容及其仿真实验结果分析:
本发明仿真采用现有技术的串行量子粒子群分类方法和本发明的方法对真实社区结构以及人造社区结构进行社区检测。
其中,真实网络为Karate数据集,节点数34个,边78个;人造网络的节点数100个,边271个;
将两种方法计算得到的测试样本集分类精度和预测阶段所用时间做对比,结果如表1和表2所示。
表1为本发明仿真实验的复杂网络重叠社区检测模块度对比表
由表1可见,本发明的并行方法和现有技术的串行方法的测试样本集分类精度相似,由于是本方法属于进化计算方法,所以有一定随机性,但结果基本近似。
表2为本发明仿真实验的所用时间对比表
由表2可见,不论是GPU的并行化方法,还是FPGA的并行化方法,与现有串行方法相比都一定程度上减少了程序的运行时间;观察真实网络和人造网络的区别可以发现,人造网络更复杂,串行所消耗的时间更多,从而并行节省的时间也就更多;所以网络规模越大,本发明的方法有效性越明显。
结合表1和表2,可以证明本发明的并行化方法在不影响最终结果的情况下提升了运算效率,减少了程序运行时间。

Claims (8)

1.一种基于开放运算语言OpenCL并行的重叠社区检测方法,其特征在于,包括如下步骤:
(1)配置开放运算语言OpenCL设备端:
中央处理器CPU主机端通过PCIe总线与开放运算语言OpenCL设备端进行连接,并对开放运算语言OpenCL设备端进行配置,同时激活OpenCL设备端中的PN个工作项,PN∈[20,∞];
(2)CPU主机端构建重叠社区结构的边图L(G);
(2a)CPU主机端构建以重叠社区成员为节点、以成员之间的关系为边且边数为N的图模型G,N>0;
(2b)CPU主机端构建以图模型G中的边为边节点、以任意两条边存在的重合节点为边的边图L(G);
(3)CPU主机端构建共邻矩阵M;
(3a)CPU主机端根据边图L(G)构建邻接矩阵A:
其中,Aij表示边图L(G)中第i个边节点与第j个边节点之间的关系,Aij=1,表示第i个边节点与第j个边节点之间有边相连,Aij=0,表示第i个边节点与第j个边节点之间无边相连;
(3b)CPU主机端根据邻接矩阵A构建共邻矩阵M',并判断Aij=0是否成立,若是,将Mij'置0,否则,对Mij'加一,得到共邻矩阵M,其中,M'和M的表达式分别为:
其中,Mij'表示边图L(G)中第i个边节点与第j个边节点的共同邻居节点数,其中AirAjr表示第r个节点是否为边图L(G)中第i个边节点与第j个边节点的共同邻居节点,AirAjr=1,表示第r个节点是边图L(G)中第i个边节点与第j个边节点的共同邻居节点,AirAjr=0,表示第r个节点不是边图L(G)中第i个边节点与第j个边节点的共同邻居节点,Mij=(Mij'+1)×Aij
(4)CPU主机端提取共邻矩阵M的特征值和特征向量:
CPU主机端对共邻矩阵M进行特征值分解,并对分解结果进行降序排列,得到N个特征值λ12,…,λN和N个特征值对应的特征向量V1,V2,…,VN
(5)CPU主机端获取评价结果cost:
(5a)CPU主机端初始化量子粒子群算法的参数,包括迭代次数t=1、最大迭代次数T=200、粒子X'[t]的个数PN,粒子X'[t]的长度m2由激活标志h1的长度m和聚类中心h2的长度m拼接而成,m∈[10,N/4],每个粒子X'[t]表征边图L(G)中的m'个被激活的社区聚类中心centerm',m'∈[2,m];
(5b)CPU主机端对粒子群中包含社区个数少于2的粒子X'[t]进行修正,使其至少包含2个社区,得到修正后的PN个粒子X[t];
(5c)CPU主机端计算特征向量V2中的每个值到每个粒子X[t]中m'个被激活的社区聚类中心centerm'的距离,并用V2中距离centerm'最近的值代替centerm',形成新的m'个被激活的社区聚类中心并计算边图L(G)中每一个边节点分别到每个粒子X[t]中的m'个被激活的社区聚类中心的谱方法加权距离,并将每个边节点分类到距离centerm'最近的社区中,得到每个粒子的长度为N的重叠社区划分结果assignment[t];
(5d)CPU主机端构造多目标优化函数Evaluate,并通过Evaluate对PN个重叠社区划分结果assignment[t]进行评价,得到每个粒子的长度为2的评价结果向量cost[t];
(6)CPU主机端构建网格Grid:
CPU主机端根据PN个粒子的评价结果向量cost[t],对PN个粒子X[t]进行非支配排序,得到非支配解集rep,并通过非支配解集rep中所有非支配粒子的评价结果向量cost[t]构建包括10×10个小格子cell的网格Grid,其中rep中非支配粒子的个数小于等于20;
(7)OpenCL设备端编写不同的内核程序:
OpenCL设备端将基于量子粒子群算法,并通过网格Grid对单个粒子X[t]进行更新的过程编写为内核程序Kernel1,同时根据步骤(5b)的方法将对更新后的单个粒子X'[t+1]进行修正的过程编写为内核程序Kernel2,根据步骤(5c)的方法将对修正后的单个粒子X[t+1]进行重叠社区划分的过程编写为内核程序Kernel3,根据步骤(5d)的方法将对划分后的单个粒子X[t+1]进行评价的过程编写为内核程序Kernel4;
(8)OpenCL设备端基于量子粒子群算法并行计算和评价第t+1代粒子群的边图L(G)的重叠社区划分结果:
(8a)OpenCL设备端的PN个工作项并行执行内核程序Kernel1,实现对PN个粒子X[t]进行更新,得到更新后的PN个粒子X'[t+1];
(8b)OpenCL设备端的PN个工作项并行执行内核程序Kernel2,实现对更新后的PN个粒子X'[t+1]进行修正,得到修正后的PN个粒子X[t+1];
(8c)OpenCL设备端的PN个工作项并行执行内核程序Kernel3,实现对修正后的PN个粒子X[t+1]进行重叠社区划分,得到PN个粒子X[t+1]的重叠社区划分结果assignment[t+1];
(8d)OpenCL设备端的PN个工作项,并行执行内核程序Kernel4,实现对修正后的PN个粒子X[t+1]的重叠社区划分结果assignment[t+1]进行评价,得到PN个粒子X[t+1]的评价结果向量cost[t+1];
(9)CPU主机端构建非支配解集repnew:
CPU主机端根据PN个粒子X[t+1]的评价结果向量cost[t+1],对PN个粒子X[t+1]进行非支配排序,得到非支配解集rep',并对非支配解集rep'与非支配解集rep进行合并,再对合并结果中的粒子进行非支配排序,得到非支配解集repnew;
(10)CPU主机端获取边图L(G)的重叠社区划分结果:
中央处理器CPU主机端判断t+1=T是否成立,若是,采用模块度公式对非支配解集repnew中每个粒子所代表的重叠社区划分结果进行评价,并输出检测正确率最大的重叠社区划分结果,否则,以非支配解集repnew中所有非支配粒子的评价结果向量cost[t]构建网格Gridnew,并令t=t+1,rep=repnew,Grid=Gridnew,并执行步骤(8)。
2.根据权利要求1所述的基于开放运算语言OpenCL并行的重叠社区检测方法,其特征在于,步骤(4)中所述的CPU主机端对修正共邻矩阵M进行特征值分解,采用乘幂法,或QR分解,或Jacobi方法。
3.根据权利要求1所述的基于开放运算语言OpenCL并行的重叠社区检测方法,其特征在于,步骤(5a)中所述的PN个粒子X'[t],其中的激活标志h1的激活值flagu∈[0,1],u=1,2,…,m,m为h1和h2的长度,若flagu≥0.5,则第u个社区聚类中心centeru被激活,否则,centeru不被激活。
4.根据权利要求1所述的基于开放运算语言OpenCL并行的重叠社区检测方法,其特征在于,步骤(5b)中所述的对粒子群中包含社区个数少于2的粒子X'[t]进行修正,具体为,对于每个粒子随机选两个不相等的两个值p和q,p,q∈[1,m],并令激活值flagp=1-0.5×rand(0,1),激活值flagq=1-0.5×rand(0,1),得到修正后的PN个粒子X[t],其中,m为h1和h2的长度,rand(0,1)表示取0到1之间的随机值。
5.根据权利要求1所述的基于开放运算语言OpenCL并行的重叠社区检测方法,其特征在于,步骤(5c)中所述的计算边图L(G)中每一个边节点分别到每个粒子X[t]中的m'个被激活的社区聚类中心的谱方法加权距离,实现步骤为:
(5c1)选取特征向量V1,V2,…,VN中第2个到第r+1个特征向量,r=m-1,构造行表示边图L(G)中N个边节点的信息,列表示r个特征向量的非平凡特征矩阵V:
(5c2)使用谱方法加权距离公式计算第i个边节点和第u个被激活的社区聚类中心之间的谱方法加权距离Diu
其中,λk+1表示第k+1个特征值,vik,vuk分别表示第k个非平凡特征向量Vk的第i个分量和第u个分量,m'是被激活的社区聚类中心的数目。
6.根据权利要求1所述的基于开放运算语言OpenCL并行的重叠社区检测方法,其特征在于,步骤(5d)中所述的多目标优化函数Evaluate,包括通过模块度公式Q(C)构建的目标函数Eva1和目标函数Eva2:
其中,max表示求最大值操作,min表示求最小值操作,C为所有社区的组合,c为其中的一个社区,n为M中所有元素之和的一半,|M(c)|为社区c中所有节点对之间的修正共同邻居节点的个数之和,M(v)为节点v与网络中所有节点之间修正共同邻居节点的个数之和。
7.根据权利要求1所述的基于开放运算语言OpenCL并行的重叠社区检测方法,其特征在于,步骤(6)所述的通过非支配解集rep中所有非支配粒子的评价结果向量cost[t]构建包括10×10个小格子cell的网格Grid,实现步骤为:
(6a)设评价结果向量cost[t]中通过多目标优化函数Evaluate中的目标函数Eva1计算的评价结果cost[t][0]中的最小值为c0min,最大值为c0max,通过多目标优化函数Evaluate中的目标函数Eva2计算的评价结果cost[t][1]中的最小值为c1min,最大值为c1max;
(6b)将区间[c0min,c0max]进行十等分的结果,作为网格Grid的第一个轴,将区间[c1min,c1max]进行十等分的结果,作为网格Grid的第二个轴,从而构成了大小为10×10的网格Grid,即网格Grid具有10×10个小格子cell。
8.根据权利要求1所述的基于开放运算语言OpenCL并行的重叠社区检测方法,其特征在于,步骤(7)所述的基于量子粒子群算法,并通过网格Grid对单个粒子X[t]进行更新,实现步骤为:
(7a)计算粒子群中所有粒子的历史最优的均值mbest:
其中,PN为粒子的个数,m2为粒子的长度,t为当前迭代次数,Pw[t]为第w个粒子的历史最优,Pw[t]=g(Xw[1],Xw[2],…,Xw[t]),w=1,2,…PN,g(·)表示非支配排序;
(7b)在非支配解集rep中通过网格Grid选取全局最优Pg[t]:
根据非支配解集rep中每个非支配粒子的cost[t][0]和cost[t][1],将每个非支配粒子对应于10×10网格Grid中的每个小格子cell,并在包含非支配粒子的所有小格子中,随机选取一个小格子cell_selected,若cell_selected包含多个非支配粒子,则随机选择一个非支配粒子作为全局最优Pg[t],若cell_selected包含一个非支配粒子,则将该非支配粒子作为全局最优Pg[t];
(7c)构造第w个粒子的吸引子pw[t+1]:
pw[t+1]=α·Pw[t]+(1-α)·Pg[t]
其中,α为均匀分布于[0,1]的随机数;
(7d)结合(7a)和(7c)的计算结果,对第w个粒子X[t]进行更新,得到更新后的粒子X'w[t+1]:
X'w[t+1]=pw[t+1]±β·|mbest-Xw[t]|·ln(1/u)
其中,u为均匀分布于[0,1]的随机数,β为收缩-扩张因子。
CN201910648583.1A 2019-07-18 2019-07-18 基于开放运算语言OpenCL并行的重叠社区检测方法 Active CN110535681B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910648583.1A CN110535681B (zh) 2019-07-18 2019-07-18 基于开放运算语言OpenCL并行的重叠社区检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910648583.1A CN110535681B (zh) 2019-07-18 2019-07-18 基于开放运算语言OpenCL并行的重叠社区检测方法

Publications (2)

Publication Number Publication Date
CN110535681A true CN110535681A (zh) 2019-12-03
CN110535681B CN110535681B (zh) 2021-04-27

Family

ID=68660622

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910648583.1A Active CN110535681B (zh) 2019-07-18 2019-07-18 基于开放运算语言OpenCL并行的重叠社区检测方法

Country Status (1)

Country Link
CN (1) CN110535681B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102594909A (zh) * 2012-03-14 2012-07-18 西安电子科技大学 基于共邻矩阵谱信息的多目标社区检测方法
CN102611588A (zh) * 2012-03-28 2012-07-25 西安电子科技大学 基于自动相转换聚类的重叠社区网络检测方法
CN102929942A (zh) * 2012-09-27 2013-02-13 福建师范大学 一种基于集成学习的社会网络重叠社区发现方法
US20130268595A1 (en) * 2012-04-06 2013-10-10 Telefonaktiebolaget L M Ericsson (Publ) Detecting communities in telecommunication networks
CN103425737A (zh) * 2013-07-03 2013-12-04 西安理工大学 面向网络的重叠社区发现方法
CN103455612A (zh) * 2013-09-07 2013-12-18 西安电子科技大学 基于两阶段策略的非重叠与重叠网络社区检测方法
CN103853835A (zh) * 2014-03-14 2014-06-11 西安电子科技大学 基于gpu加速的网络社区检测方法
CN104166731A (zh) * 2014-08-29 2014-11-26 河海大学常州校区 一种社交网络重叠社区发现系统及其方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102594909A (zh) * 2012-03-14 2012-07-18 西安电子科技大学 基于共邻矩阵谱信息的多目标社区检测方法
CN102611588A (zh) * 2012-03-28 2012-07-25 西安电子科技大学 基于自动相转换聚类的重叠社区网络检测方法
US20130268595A1 (en) * 2012-04-06 2013-10-10 Telefonaktiebolaget L M Ericsson (Publ) Detecting communities in telecommunication networks
CN102929942A (zh) * 2012-09-27 2013-02-13 福建师范大学 一种基于集成学习的社会网络重叠社区发现方法
CN103425737A (zh) * 2013-07-03 2013-12-04 西安理工大学 面向网络的重叠社区发现方法
CN103455612A (zh) * 2013-09-07 2013-12-18 西安电子科技大学 基于两阶段策略的非重叠与重叠网络社区检测方法
CN103853835A (zh) * 2014-03-14 2014-06-11 西安电子科技大学 基于gpu加速的网络社区检测方法
CN104166731A (zh) * 2014-08-29 2014-11-26 河海大学常州校区 一种社交网络重叠社区发现系统及其方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
乔少杰 等: "复杂网络大数据中重叠社区检测算法", 《软件学报》 *
杨忠保: "复杂网络中社区发现算法研究与应用", 《中国优秀硕士学位论文全文数据库基础科学辑》 *

Also Published As

Publication number Publication date
CN110535681B (zh) 2021-04-27

Similar Documents

Publication Publication Date Title
Li et al. Adaptive multi-objective swarm fusion for imbalanced data classification
Kasieczka et al. The machine learning landscape of top taggers
Peng et al. Negative correlation learning-based RELM ensemble model integrated with OVMD for multi-step ahead wind speed forecasting
Lancichinetti et al. Community detection algorithms: a comparative analysis
CN105354595B (zh) 一种鲁棒视觉图像分类方法及系统
CN109242002A (zh) 高维数据分类方法、装置及终端设备
Gupta et al. Parallel quantum-inspired evolutionary algorithms for community detection in social networks
CN111914728A (zh) 高光谱遥感影像半监督分类方法、装置及存储介质
Zhou et al. Multiobjective local search for community detection in networks
Gupta et al. Lookback for learning to branch
Kitonyi et al. Hybrid gradient descent grey wolf optimizer for optimal feature selection
Cooper et al. Role-based similarity in directed networks
Polewski et al. Free Shape Context descriptors optimized with genetic algorithm for the detection of dead tree trunks in ALS point clouds
Nadimi-Shahraki et al. Discrete improved grey wolf optimizer for community detection
Liu et al. A discrete squirrel search optimization based algorithm for Bi-objective TSP
Estrada et al. Communicability and multipartite structures in complex networks at negative absolute temperatures
Wijayaningrum et al. An improved crow search algorithm for data clustering
Sathik et al. Comparative analysis of community discovery methods in social networks
CN110535681A (zh) 基于开放运算语言OpenCL并行的重叠社区检测方法
Cancino et al. A multi-criterion evolutionary approach applied to phylogenetic reconstruction
Chis et al. Multi-objective DSE algorithms' evaluations on processor optimization
Goswami et al. Sparsity of weighted networks: Measures and applications
Cancino et al. A multi-objective evolutionary approach for phylogenetic inference
Trivedi et al. Overlapping community detection in social networks with Voronoi and tolerance neighborhood-based method
Wan et al. RSSM-Net: Remote sensing image scene classification based on multi-objective neural architecture search

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant