一种频繁子图挖掘的方法及系统与流程

文档序号:12465585阅读:181来源:国知局
一种频繁子图挖掘的方法及系统与流程

本发明涉及图数据挖掘领域,特别是涉及一种频繁子图挖掘的方法及系统。



背景技术:

随着网络技术以及数据库技术的迅速发展,数据的规模越来越大,为了将海量的数据转换成有价值的信息,数据挖掘技术应运而生。

数据挖掘技术可以应用于从数据库中挖掘频繁项集,其广泛应用于计算化学、生物信息学、web挖掘等领域。频繁子图挖掘属于数据挖掘技术的范畴,频繁子图挖掘可以是指从图集中查找频繁出现的子图集,而图可以是表征实体集之间连接关系的数据结构。

图集的规模一般较大,从大规模图集中挖掘出频繁子图,有助于了解图集的特征,对图集进行分类和聚类。在现有技术中,一般是基于深度优先搜索的方法,利用CPU来进行频繁子图的挖掘。其利用模式树来进行相应的图集频繁项挖掘,但是,由于模式树会造成空间复杂度过大、数据量较大的问题,从而导致系统的性能低下,耗时较长,执行效率较低。如何提高频繁子图挖掘的执行效率是本领域亟待解决的问题,基于此,本发明提出了一种频繁子图挖掘的方法及系统。



技术实现要素:

本发明的目的是提供一种频繁子图挖掘的方法,目的在于解决现有技术中频繁子图挖掘的执行效率较低的问题;本发明的另一目的是提供一种频繁子图挖掘的装置,其频繁子图挖掘的执行效率较高;本发明的另一目的是提供一种频繁子图挖掘的系统,其频繁子图挖掘的执行效率较高。

为解决上述技术问题,本发明提供一种频繁子图挖掘的方法,该方法包括:

获取待挖掘图数据,将所述待挖掘图数据划分成子图;

基于深度优先搜索算法,对所述子图进行并行计算,查找出相应的子频繁项集;

将所述子频繁项集进行合并,得出所述待挖掘图数据的频繁子图。

可选地,所述基于深度优先搜索算法,对所述子图进行并行计算,查找出相应的子频繁项集包括:

将所述子图并行分发至众核处理器;

所述众核处理器利用所述深度优先搜索算法,并行计算所述子图,查找出相应的所述子频繁项集。

可选地,所述众核处理器利用所述深度优先搜索算法,并行计算所述子图,查找出相应的所述子频繁项集包括:

将所述子图进行初始化操作;

对初始化后的所述子图进行遍历,查找出相应的所述子频繁项集。

可选地,所述将所述子图进行初始化操作包括:

计算所述子图的边和点的频度;

将所述频度与预设的最小支持度阈值相比较;

移除频度小于所述最小支持度阈值的边和点;

将剩下的边进行编码,并进行初始化操作。

可选地,所述将所述待挖掘图数据划分成子图包括:

处理器对所述待挖掘图数据进行分块操作,得出所述子图。

此外,本发明还提供了一种频繁子图挖掘的系统,该系统包括:处理器和众核处理器;

其中,所述处理器用于获取待挖掘图数据,将所述待挖掘图数据划分成子图;

所述众核处理器用于基于深度优先搜索算法,对所述子图进行并行计算,查找出相应的子频繁项集;

所述处理器用于将所述子频繁项集进行合并,得出所述待挖掘图数据的频繁子图。

可选地,所述处理器具体用于将所述子图进行初始化操作;

所述众核处理器具体用于对初始化后的所述子图进行遍历,查找出相应的所述子频繁项集。

可选地,所述处理器具体用于计算所述子图的边和点的频度;将所述频度与预设的最小支持度阈值相比较;移除频度小于所述最小支持度阈值的边和点;将剩下的边进行编码,并进行初始化操作。

本发明所提供的一种频繁子图挖掘的方法及系统,通过获取待挖掘图数据,将所述待挖掘图数据划分成子图;基于深度优先搜索算法,对所述子图进行并行计算,查找出相应的子频繁项集;将所述子频繁项集进行合并,得出所述待挖掘图数据的频繁子图。将图数据进行分块,得到子图,然后对子图进行并行计算,即同时计算处理多个子图,得出相应的子频繁项集。相较于串行处理,并行处理可以提高处理效率。最后可以将子频繁项集进行合并,得到最终的频繁子图。可见,本申请基于并行搜索频繁子图,大大提高了运行速度,减少了执行时间,提高了频繁子图挖掘的执行效率。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的频繁子图挖掘方法的一种具体实施方式的流程示意图;

图2为本发明实施例所提供的频繁子图系统的系统结构框图;

图3为本发明实施例所提供的获取当前线程内频繁项集的流程示意图;

图4为本发明实施例所提供的基于CPU和MIC的算法流程示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1,图1为本发明实施例所提供的频繁子图挖掘方法的一种具体实施方式的流程示意图,该方法包括以下步骤:

步骤101:获取待挖掘图数据,将所述待挖掘图数据划分成子图;

可以理解的是,所读取待挖掘图数据的大小是可以确定的,而通过划分得到的子图的大小可以是人为设定的,也可以根据实际需求来确定,例如,可以根据处理线程的计算处理能力来确定相应的子图大小。确定待挖掘图数据和子图的数据大小,可以很容易地得出子图的数量。为了保证各个子图的处理进程大致相同,可以将各个子图划分成相同大小,即各个子图的数据长度大小相同。当然,各个子图之间的数据长度可以不尽相同,也不影响本发明实施例的实现。

将待挖掘图数据划分成多个子图,相较于待挖掘图数据,子图的数据大小更小,处理起来更加地方便,对计算处理能力的要求更低。

图数据流的读取以及划分操作可以由处理器端(CPU)完成,CPU可以扫描读取待挖掘图数据,且可以对待挖掘图数据进行分块。故在本发明的一些实施例中,其过程可以具体为:处理器对所述待挖掘图数据进行分块操作,得出所述子图。对图数据流进行分块操作,即将待挖掘图数据成多段子图,例如,可以将待挖掘图数据划分成n段子图,n为正整数,即划分后可以得到第一段子图、第二段子图、第三段子图…第n段子图。

在CPU将读取的待挖掘图数据划分成多段子图后,可以利用多处理节点或者多线程技术并行处理多段子图。

步骤102:基于深度优先搜索算法,对所述子图进行并行计算,查找出相应的子频繁项集;

对每个子图利用深度优先搜索算法,进行子图挖掘,以得出相应的子频繁项集,即利用深度优先搜索算法来并行处理多个子图,可以得出相应的子频繁项集。例如,每个并行的子图基于MPI并行计算模型来进行并行计算处理。可以通过同时运行多个线程,从而对多个子图进行并行处理,而同时运行的线程数量是由当前系统的计算能力所决定的,例如,其并发线程数量可以是24个。可以理解的是,可以利用并发线程来并行处理多个子图,也可以利用多处理器节点来并行处理多个子图,即基于并行处理的思想来进行子图的挖掘均属于本发明实施例的保护范围。显而易见地,多处理器节点的工作流程与多线程并发的工作流程可相互参照,在此不再赘述。

可以利用众核处理器(Many Integrated Core,MIC)的特点来实现多线程并发处理。MIC众核架构具有更小的内核和硬件线程,计算资源密度较高,片上通信开销较低,可以胜任较复杂的并行应用。故在本发明的一些实施例中,其处理过程可以具体为:将所述子图并行分发至众核处理器;所述众核处理器利用所述深度优先搜索算法,并行计算所述子图,查找出相应的所述子频繁项集。CPU端进行完待挖掘图数据的划分操作后,可以将得到的多个子图并行分发至MIC,MIC可以对接收到的子图,利用深度优先搜索算法并行挖掘子图的频繁项集。此时,MIC端可以作为一个协处理器,即存在着CPU端和MIC众核协处理器端,CPU和MIC可以利用OpenMP多线程模式进行协同计算。

需要说明的是,CPU和MIC可以位于一个服务器上,CPU端可以负责扫描读取图数据流即待挖掘图数据,对图数据流进行分块,得到多个子图,以及子图的并行分发操作;还可以优化负载均衡,协同计算模式的框架搭建,任务调度和参数初始化工作。而MIC协处理器端可以基于深度优先搜索算法,利用多线程并行挖掘子图的频繁项。即CPU端主要运行逻辑任务,以及小部分的计算任务,而大部分的计算任务由MIC端来运行,这样可以充分利用MIC的运算能力。相较于只利用CPU进行频繁子图的挖掘模式来说,基于CPU和MIC的模式,使得频繁子图挖掘的运算速度大大提升,执行时间大大缩短。

CPU和MIC所组成的单节点服务器,可以有m个MIC卡,m为正整数;CPU可以设置为双路6核CPU,则一共有12个核,最多可以有24个线程并行。此时,可以将CPU和MIC卡作为计算设备,即每个节点上有m+1个计算设备,而每个设备均可以利用一个OpenMP线程进行控制。例如,每个节点上可以有2个MIC卡,即每个节点上3个计算设备。可以理解的是,一般的服务器上有4个MIC卡插口,即每个单节点服务器上可以插4个MIC卡。当需要的MIC卡多于4个时,可以在单节点服务器上进行扩展,得到所需数量的MIC卡,即可以根据实际的需要来决定MIC卡的数量。

需要说明的是,除了多线程并行处理之外,还可以设置多个处理器节点,来并行地进行子图挖掘。即只要基于并行深度优化搜索子图的思想均属于本发明实施例所保护的范围。

基于CPU和MIC协同计算模式,并行处理计算子图,挖掘出相应的频繁项集。可以加速频繁子图挖掘的计算过程,例如,可以使原本需要耗时几个星期的计算任务,在几个小时内即可完成。使得其耗时大大减少,从而提高了执行效率。

显而易见地,其协同计算模式不限于MIC和CPU,即协同处理器还可以为MIC以外的处理器,只要是可以实现多线程并发的处理器均可以实现本发明实施例。

对每个并行的子图数据同时进行深度优先搜索,可以查找出每个并行区的子频繁项集。故在本发明的一些实施例中,其使用深度优先搜索的过程可以具体为:将所述子图进行初始化操作;对初始化后的所述子图进行遍历,查找出相应的所述子频繁项集。首先进行初始化操作,然后利用深度优先搜索方法来对当前子图进行遍历搜索,然后可以得出该并行子图数据的子频繁项集。在遍历搜索空间时,判断是否遍历完所有的所述子图,如果否,则继续进行遍历,如果是,则输出相应的所述子频繁项集。其子频繁项集可以是基于最小支持度阈值,通过递归运算可以得出搜索空间上的频繁项集。

频繁子图挖掘算法一般是由候选产生、候选剪枝、支撑度技术以及候选删除等步骤组成的。候选产生是指候选子图的产生,其产生的方法可以是在一个已经存在的频繁(k-1)子图,添加一个新的边或顶点,以产生一个候选k子图,依次扩展得到全部的候选子图。而深度优先搜索方法可以是指在产生每个候选子图时,计算其规范化标记,根据该规范化标记来确定是否保留该候选子图,以进行进一步地扩展搜索。

可以理解的是,最小支持度阈值可以是人为设定的,即用户可以给定最小支持度阈值。而当子图中的支持度大于或者等于最小支持度阈值,则为频繁项集。

在对每个子图数据进行频繁项集计算的过程中,首先是进行初始化操作,在本发明的一些实施例中,其初始化操作的过程可以具体为:计算所述子图的边和点的频度;将所述频度与预设的最小支持度阈值相比较;移除频度小于所述最小支持度阈值的边和点;将剩下的边进行编码,并进行初始化操作。其初始化可以由CPU端完成,将读取的图数据流进行遍历,计算所有边和点的频度,在利用最小支持度阈值,移除不频繁的点和边。再对剩下的边和点进行重新排序,以及重新计算频度,然后完成对每条边的初始化。

每个并行区子图数据通过深度优先搜索,得出相应的子频繁项集,下面则需要将每个并行区的子频繁项集进行合并,以得出最终的频繁子图。

步骤103:将所述子频繁项集进行合并,得出所述待挖掘图数据的频繁子图。

可以理解的是,子频繁项集的合并可以在CPU端完成,即CPU端获取协同处理器端输出的子频繁项集,将属于同一个原始图数据的子频繁项集进行合并,可以得出该原始图数据的频繁子图。

例如,当待挖掘图数据被划分为n段子图,即有第1段子图、第2段子图、第3段子图…第n段子图时,进行并行深度优先搜索后,可以得出n个子频繁项集,将n个子频繁项集进行合并后,可得到待挖掘图数据的频繁子图。

本发明实施例所提供的频繁子图挖掘的方法,该方法通过获取待挖掘图数据,将待挖掘图数据划分成子图;基于深度优先搜索算法,对子图进行并行计算,查找出相应的子频繁项集;将子频繁项集进行合并,得出待挖掘图数据的频繁子图。将图数据进行分块,得到子图,然后对子图进行并行计算,即同时计算处理多个子图,得出相应的子频繁项集。相较于串行处理,并行处理可以提高处理效率。最后可以将子频繁项集进行合并,得到最终的频繁子图。可见,该方法基于并行搜索频繁子图,大大提高了运行速度,减少了执行时间,提高了频繁子图挖掘的执行效率。

下面对本发明实施例提供的频繁子图挖掘系统进行介绍,下文描述的频繁子图挖掘系统与上文描述的频繁子图挖掘方法可相互对应参照。

图2为本发明实施例所提供的频繁子图系统的系统结构框图,参照图2频繁子图挖掘的系统可以包括:

处理器201和众核处理器202;

其中,所述处理器用于获取待挖掘图数据,将所述待挖掘图数据划分成子图;

所述众核处理器用于基于深度优先搜索算法,对所述子图进行并行计算,查找出相应的子频繁项集;

所述处理器用于将所述子频繁项集进行合并,得出所述待挖掘图数据的频繁子图。

可选地,所述处理器具体用于将所述子图进行初始化操作;

所述众核处理器具体用于对初始化后的所述子图进行遍历,查找出相应的所述子频繁项集。

可选地,所述处理器具体用于计算所述子图的边和点的频度;将所述频度与预设的最小支持度阈值相比较;移除频度小于所述最小支持度阈值的边和点;将剩下的边进行编码,并进行初始化操作。

基于CPU和MIC协同计算模式的系统,并行深度优先搜索每个并行区的子图数据。为了更好地介绍该系统中每个并行区的频繁项集的挖掘流程,下面将结合图3进行介绍,图3为本发明实施例所提供的获取当前线程内频繁项集的流程示意图,该流程包括以下步骤:

步骤301:对输入图数据流进行预处理,得到频繁图数据;

可以对获取到的图数据流进行一些细微的调整,例如,转换图数据流的数据格式等,待挖掘图数据的有效性的检测以及数据的修正等操作。

步骤302:计算频繁图数据的频度;

具体地,可以在频繁子图P的基础上,计算P的子集,以及计算其支持度,以及图数据流中每条边和点的频度。

步骤303:基于频度和最小支持度阈值,移除相应的边以及超图链表;

具体地,利用频度和最小支持度阈值相比较,可以将图数据流中的不频繁的边或者是点去除掉,然后对剩下的图数据进行深度优先搜索。

步骤304:利用深度优先搜索算法,对频繁图数据进行遍历;

可以理解的是,深度优先搜素算法为本领域技术人员较熟悉的算法,其具体的流程在此不再赘述。

步骤305:判断遍历是否结束,如果是,则进入步骤306,如果否,则返回步骤304;

步骤306:导出子图数据。

对每个并行线程内的频繁项集的挖掘流程进行了介绍,而为了进一步地明确本发明实施例所提供的频繁子图挖掘的系统内的CPU和MIC之间的工作流程,下面将结合图4对挖掘流程中的执行主体进行介绍。图4为本发明实施例所提供的基于CPU和MIC的算法流程示意图,该流程包括以下步骤:

步骤401:图数据的预分析处理以及划分为多个子图;

步骤402:子图的并行分发;

步骤403:并行深度优先搜索每个子图的子频繁项集;

步骤404:合并子频繁项集

步骤405:导出子图数据。

需要说明的是,各个步骤的具体实施过程可以参照本文的其它地方,在此不再赘述。此处,需要指出的是,步骤401和步骤402由CPU端完成,即CPU端进行图数据的预分析出来以及划分子图,子图的并行分发;步骤403由CPU和MIC协同处理;而步骤404和步骤405由CPU端完成,CPU端可以进行子频繁项集的合并以及导出子图数据即所要挖掘的频繁子图。

本发明实施例所提供的频繁子图挖掘的系统,该系统通过将图数据进行分块,得到子图,然后对子图进行并行计算,即同时计算处理多个子图,得出相应的子频繁项集。相较于串行处理,并行处理可以提高处理效率。最后可以将子频繁项集进行合并,得到最终的频繁子图。可见,该系统基于并行搜索频繁子图,大大提高了运行速度,减少了执行时间,提高了频繁子图挖掘的执行效率。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的频繁子图挖掘的方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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