基于MapReduce和数组的频繁项集挖掘方法和装置与流程

文档序号:18544771发布日期:2019-08-27 21:33阅读:126来源:国知局
基于MapReduce和数组的频繁项集挖掘方法和装置与流程

本发明实施例涉及数据挖掘及大数据技术领域,具体涉及一种基于mapreduce和数组的频繁项集挖掘方法、装置、电子设备和存储介质。



背景技术:

数据挖掘领域r.agrawa和r.srikant提出经典的aprior算法,已经有很多文献提出了很多改进的频繁项集挖掘算法。与aprior算法相比,这些算法一定程度上缩短了i/o时间,适当地提高了发现频繁项集的效率,但还是不能很好的解决该算法的瓶颈问题。

目前,随着信息的飞速发展,所需要分析的海量数据也在日益增长,这样就导致现行的串行的频繁项集挖掘算法面临着两个难以解决的问题:一是受单机内存的限制,难以将表示大数据集的数据存放于内存中;二是受单机计算能力的限制,从数据库中找出所有频繁项集需要较长的计算时间。



技术实现要素:

为此,本发明实施例提供一种基于mapreduce和数组的频繁项集挖掘方法、装置、电子设备和存储介质,以解决现有技术中由于串行的频繁项集挖掘算法而导致的频繁项集挖掘效率低下的问题。

为了实现上述目的,本发明实施例提供如下技术方案:

根据本发明实施例的第一方面提供的一种基于mapreduce和数组的频繁项集挖掘方法,包括:

扫描数据库,将数据库中的每一数据组转换为与其对应的二维数组;

根据预设定分解规则,将每一所述二维数组分解成若干二维子数组;

将若干所述二维子数组分配至至少两个并行执行挖掘频繁项集任务的节点上;

每一所述节点挖掘所述二维子数组对应的子频繁项集和非频繁项集;

将若干所述子频繁项集和非频繁项集合并,得到所述数据组的频繁项集。

进一步地,所述的基于mapreduce和数组的频繁项集挖掘方法中,根据预设定分解规则,将所述二维数组分解成若干二维子数组,包括:

根据水平划分的方法将所述二维子数组划分为若干规模相同的所述二维子数组。

进一步地,所述的基于mapreduce和数组的频繁项集挖掘方法中,每一所述节点挖掘所述二维子数组的子频繁项集,包括:

所述节点获取所述二维子数组中每一项集的频度;

筛选出频度大于或等于预设最小支持度的项集,定义该项集为子频繁项集。

进一步地,所述的基于mapreduce和数组的频繁项集挖掘方法中,将若干所述子频繁项集和非频繁项集合并,得到所述数据组的频繁项集,包括:

统计每一所述子频繁项集的计数,筛选出子频繁项集的计数大于或等于预设最小支持度的;

将筛选出的子频繁项集合并,形成所述数据组的频繁项集;

其中,统计每一所述子频繁项集的计数包括:

在所有子频繁项集和所有非频繁项集中查找与其相同的项集,并将该子频繁项集与其相同的项集进行计数累加,得到该子频繁项集的计数。

根据本发明实施例的第二方面提供的一种基于mapreduce和数组的频繁项集挖掘装置,包括:

数组转换模块,用于扫描数据库,将数据库中的每一数据组转换为与其对应的二维数组;

二维数组分解模块,用于根据预设定分解规则,将每一所述二维数组分解成若干二维子数组;

二维子数组分配模块,用于将若干所述二维子数组分配至至少两个并行执行挖掘频繁项集任务的节点模块上;

节点模块,用于每一所述节点挖掘所述二维子数组对应的子频繁项集和非频繁项集;

合并模块,用于将若干所述子频繁项集和非频繁项集合并,得到所述数据组的频繁项集。

进一步地,所述的基于mapreduce和数组的频繁项集挖掘装置中,根据预设定分解规则,将所述二维数组分解成若干二维子数组,包括:

对于每一二维数组,根据水平划分的方法将所述二维子数组划分为若干规模相同的所述二维子数组。

进一步地,所述的基于mapreduce和数组的频繁项集挖掘装置中,挖掘所述二维子数组对应的子频繁项集,包括:

获取所述二维子数组中每一项集的频度;

筛选出频度大于或等于预设最小支持度的项集,定义该项集为子频繁项集。

进一步地,所述的基于mapreduce和数组的频繁项集挖掘装置中,将若干所述子频繁项集和非频繁项集合并,得到所述数据组的频繁项集,包括:

统计每一所述子频繁项集的计数,筛选出子频繁项集的计数大于或等于预设最小支持度的;

将筛选出的子频繁项集合并,形成所述数据组的频繁项集;

其中,统计每一所述子频繁项集的计数包括:

在所有子频繁项集和所有非频繁项集中查找与其相同的项集,并将该子频繁项集与其相同的项集进行计数累加,得到该子频繁项集的计数。

根据本发明实施例的第三方面提供的一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至4任一所述的基于mapreduce和数组的频繁项集挖掘方法的步骤。

根据本发明实施例的第四方面提供的一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至4任一所述的基于mapreduce和数组的频繁项集挖掘方法的步骤。。

本发明实施例具有如下优点:

本发明实施例公开了一种基于mapreduce和数组的频繁项集挖掘方法,包括:扫描数据库,将数据库中的每一数据组转换为与其对应的二维数组;根据预设定分解规则,将每一所述二维数组分解成若干二维子数组;将若干所述二维子数组分配至至少两个并行执行挖掘频繁项集任务的节点上;每一所述节点挖掘所述二维子数组对应的子频繁项集和非频繁项集;将若干所述子频繁项和非频繁项集合并,得到所述数据组的频繁项集。本发明一方面,只扫描一次数据库,把数据库转化为二维数组,减少数据库的扫描,缩短i/o时间;另一方面,创造性的通过水平划分的方法将数组分解为更多的子数组,使用hadoop平台的mapreduce编程模型,采用并行处理二维子数组的方法,即在若干节点并行的对子数组进行频繁项集的挖掘,使得本发明具有较好的加速比和可扩展性,适合对大数据集挖掘频繁项集。

附图说明

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

本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。

图1为本发明实施例提供的基于mapreduce和数组的频繁项集挖掘方法所涉及的实施环境;

图2为本发明实施例提供的基于mapreduce和数组的频繁项集挖掘方法的流程图;

图3为本发明实施例提供的基于mapreduce和数组的频繁项集挖掘装置的结构示意图;

图4为本发明实施例提供的一种计算机设备的结构示意图.

具体实施方式

以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的基于mapreduce和数组的频繁项集挖掘方法所涉及的实施环境,参见图1,该实施环境包括:客户端101和服务器102。

其中,客户端101可为pda、笔记本电脑、台式计算机、平板电脑、智能手机等,本实施例不对客户端101的产品类型作具体限定。客户端101上可安装有用于频繁项集挖掘的应用,基于应用可以完成人与设备之间的交互,可以将数据编辑输入输出等,本发明实施例对此不作限定。

基于图1的实施环境,本申请实施例所提供的一种基于mapreduce和数组的频繁项集挖掘方法,参见图2所示,包括步骤s201~s205:

s201:扫描数据库,将数据库中的每一数据组转换为与其对应的二维数组;

在本实施例中,数据库中存储有若干的数据组,每一数据组中包含有若干的事务,将事务相应的项转换为布尔型常量,即每个事务所包含的项用“1”表示,不包含的项用“0”表示,这些布尔型常量组成了二维数组;

s202:根据预设定分解规则,将每一所述二维数组分解成若干二维子数组;

具体的:根据水平划分的方法将所述二维子数组划分为若干规模相同的所述二维子数组;

s203:将若干所述二维子数组分配至至少两个并行执行挖掘频繁项集任务的节点上;

在本实施例中,使用水平划分的方法将二维数组分解成多个规模相同的二维子数组(分片数据),例如,每个二维子数组的大小64mb;

将二维子数组(分片数据)分别发送到各个节点,每个节点可以处理一个或多个二维子数组,本实施例中以每个二维子数组分配到一个节点上,需要注意的是,本发明的方法并不想与此,将数据格式化为<items,sup>,其中items为项,sup为该项的频度;

s204:每一所述节点挖掘所述二维子数组对应的子频繁项集和非频繁项集;

具体的:所述节点获取所述二维子数组中每一项集的频度;筛选出频度大于或等于预设最小支持度的项集,定义该项集为子频繁项集;

在本实施例中,执行map函数,获取局部频繁项集和非频繁项集,由于局部非频繁项集有可能在其他的分片中还存在,因而要保留局部非频繁项集。计算过程:依次求出二维子数组(分片数据)中每列之和,也就是项集的频度,再与最小支持度minsup比较,若大于或等于minsup,则该项为频繁1-项集;根据频繁k-项集产生候选(k+1)-项集,每个节点并行从候选(k+1)-项集中产生频繁(k+1)-项集,即计算每个候选项集的频度,扫描分片数据中对应项的列,若值都为1,则频度加1,得到频繁(k+1)-项集和非频繁(k+1)-项集,其中,k为自然数。

s205:将若干所述子频繁项集和非频繁项集合并,得到所述数据组的频繁项集;

具体的:统计每一所述子频繁项集的计数,筛选出子频繁项集的计数大于或等于预设最小支持度的;将筛选出的子频繁项集合并,形成所述数据组的频繁项集;其中,统计每一所述子频繁项集的计数包括:在所有子频繁项集和所有非频繁项集中查找与其相同的项集,并将该子频繁项集与其相同的项集进行计数累加,得到该子频繁项集的计数。

在本实施例中,执行reduce函数,将map端的输出结果进行合并,对相同的项集进行计数累加,若项集计数大于或等于minsup(最小支持度),则放入全局频繁项集,其中,全局频繁项集即为数据组的频繁项集。

本发明设计的基于mapreduce和数组的频繁项集挖掘方法,一方面,只扫描一次数据库,把数据库转化为二维数组,减少数据库的扫描,缩短i/o时间;另一方面,创造性的通过水平划分的方法将数组分解为更多的子数组,使用hadoop平台的mapreduce编程模型,采用并行处理二维子数组的方法,即在若干节点并行的对子数组进行频繁项集的挖掘,使得本发明具有较好的加速比和可扩展性,适合对大数据集挖掘频繁项集。

基于同一发明构思,本申请实施例中还提供了与基于mapreduce和数组的频繁项集挖掘方法对应的基于mapreduce和数组的频繁项集挖掘装置。由于本申请实施例中的装置解决问题的原理与本申请实施例上述基于mapreduce和数组的频繁项集挖掘方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参见图3所示一种基于mapreduce和数组的频繁项集挖掘装置,包括:

数组转换模块301,用于扫描数据库,将数据库中的每一数据组转换为与其对应的二维数组;

二维数组分解模块302,用于根据预设定分解规则,将每一所述二维数组分解成若干二维子数组;

二维子数组分配模块303,用于将若干所述二维子数组分配至至少两个并行执行挖掘频繁项集任务的节点模块上;

节点模块304,用于每一所述节点挖掘所述二维子数组对应的子频繁项集和非频繁项集;

合并模块305,用于将若干所述子频繁项集和非频繁项集合并,得到所述数据组的频繁项集。

进一步地,根据预设定分解规则,将所述二维数组分解成若干二维子数组,包括:

对于每一二维数组,根据水平划分的方法将所述二维子数组划分为若干规模相同的所述二维子数组。

进一步地,挖掘所述二维子数组对应的子频繁项集,包括:

获取所述二维子数组中每一项集的频度;

筛选出频度大于或等于预设最小支持度的项集,定义该项集为子频繁项集。

进一步地,将若干所述子频繁项集和非频繁项集合并,得到所述数据组的频繁项集,包括:

统计每一所述子频繁项集的计数,筛选出子频繁项集的计数大于或等于预设最小支持度的;

将筛选出的子频繁项集合并,形成所述数据组的频繁项集;

其中,统计每一所述子频繁项集的计数包括:

在所有子频繁项集和所有非频繁项集中查找与其相同的项集,并将该子频繁项集与其相同的项集进行计数累加,得到该子频繁项集的计数。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述基于mapreduce和数组的频繁项集挖掘方法的步骤。

具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述基于mapreduce和数组的频繁项集挖掘方法,从而能够高效的从海量数据中挖掘出频繁项集。

对应于图2中的基于mapreduce和数组的频繁项集挖掘方法,本申请实施例还提供了一种计算机设备,如图4所示,该设备包括存储器1000、处理器2000及存储在该存储器1000上并可在该处理器2000上运行的计算机程序,其中,上述处理器2000执行上述计算机程序时实现上述基于mapreduce和数组的频繁项集挖掘方法的步骤。

具体地,上述存储器1000和处理器2000能够为通用的存储器和处理器,这里不做具体限定,当处理器2000运行存储器1000存储的计算机程序时,能够执行上述基于mapreduce和数组的频繁项集挖掘方法,从而能够基于本发明高效的从海量数据中挖掘出频繁项集。

本申请实施例所提供的高效的从海量数据中挖掘出频繁项集及装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准

虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

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