CN111309786B - 基于MapReduce的并行频繁项集挖掘方法 - Google Patents
基于MapReduce的并行频繁项集挖掘方法 Download PDFInfo
- Publication number
- CN111309786B CN111309786B CN202010107067.0A CN202010107067A CN111309786B CN 111309786 B CN111309786 B CN 111309786B CN 202010107067 A CN202010107067 A CN 202010107067A CN 111309786 B CN111309786 B CN 111309786B
- Authority
- CN
- China
- Prior art keywords
- item
- list
- frequent
- items
- group
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
- G06N5/025—Extracting rules from data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提出了一种基于MapReduce的并行频繁项集挖掘方法,包括以下步骤:S1:输入待挖掘的数据集,并对数据集进行划分分区和筛选,得到频繁1项集,对频繁1项集中各个项排列生成F‑list;S2:通过负载均衡策略LBSBDG对F‑list均匀分组;估算F‑list中每一项的负载量,并根据每一项的负载量进行均匀分组,生成分组列表G‑list;S3:启动频繁k项挖掘任务,并行挖掘待挖掘的数据集中所有的频繁项集。本发明采用DiffNodeset数据结构,能够有效避免算法中存在的N‑list基数过大的问题;通过双向比较策略T‑wcs加快2项集的生成效率,以降低算法的时间复杂度。
Description
技术领域
本发明涉及数据挖掘技术领域,具体涉及一种基于MapReduce的并行频繁项集挖掘方法。
背景技术
数据挖掘又被称为知识发现KDD(knowledge discover in database),其目的在于发现大量数据集中有用的信息。常见的数据挖掘任务有关联规则挖掘、分类、聚类等。其中关联规则挖掘是其重要分支之一,通过关联规则的研究能够准确的找出有用的规则,这些规则对于企业管理上的决策具有巨大帮助。因此在大数据环境下,设计高效的频繁项集挖掘方法成为当今互联网时代最重要的挑战之一,快速有效地挖掘频繁项集对于揭示大量数据之间有趣的关联或相关联系,深入理解消费者的消费习惯等方面具有十分重要的意义。
随着信息技术的高速发展,大数据环境下需要处理的数据高速增长传统的关联规则挖掘算法已经无法满足人们的需求,单纯的通过提升计算机硬件水平来满足人们对大数据分析与处理的需求显得尤为困难。因此,迫切需要有效的频繁项集挖掘算法来降低有用信息挖掘的成本,提高挖掘效率。
发明内容
本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种基于MapReduce的并行频繁项集挖掘方法,加快计算速度,减少时间、空间复杂度。
为了实现本发明的上述目的,本发明提供了一种基于MapReduce的并行频繁项集挖掘方法,包括以下步骤:
S1:输入待挖掘的数据集,并对数据集进行划分分区和筛选,得到频繁1项集,对频繁1项集中各个项排列生成f-list;
S2:通过负载均衡策略LBSBDG对F-list均匀分组;估算F-list中每一项的负载量,并根据每一项的负载量进行均匀分组,生成分组列表G-list;
S3:启动频繁k项挖掘任务,并行挖掘待挖掘的数据集中所有的频繁项集。
上述方案中:步骤S1还包括以下步骤:
S1-1:使用Hadoop默认的文件块策略,将原始数据集划分成大小相同的文件块Block;
S1-2:将文件块Block作为Map阶段的输入数据,通过调用Map函数以键值对<key=item,value=1>的形式统计出相应接点上的文件块中各项出现的次数;
S1-3:通过调用Combine函数将本节点中key值相同的value相加;
S1-4:将每个节点新得到的键值对传送给Reduce函数,进行合并;
S1-5:筛选出支持度大于最小支持度阈值min_sup的项组成频繁1项集F1,根据频繁1项集中各个项的支持数降序排列生成全局F-list;
S1-6:将所得到的F-list保存到文件存储系统HDFS中。
上述方案中:步骤S2还包括以下步骤:
S2-1:通过估计函数E(item)计算F-list中每一项的负载量Load,并将每一项的负载量按照降序排序方法生成L-list;
函数E(item)具体的计算方式如下所示:
E(item)=min{count(item),2n-1}
其中count(item)表示频繁项item的支持度,n为item在F-list中的位置;min{}表示取两者之间的较小者;
S2-2:构建分组G-list,G-list中包括H组,并对L-list中的每一项进行分组;
S2-3:将L-list中的前H项作为初值依次添加到G-list每一组中,并将组号设置为0~(H-1),同时设置每一组的负载总量的初值为添加项的负载量;
S2-4:继续对L-list中未分组的项进行分组操作,且每次均读取H项,在划分之前先判定当前每一组的负载总量是否相同,如果每一组负载总量均相同则按顺序添加,即将H项分别添加到0~(H-1)组中,如果每一组的负载量不相同则按逆序添加,即将H项分别添加到(H-1)~0组中,更新每一组的负载总量;
S2-5:重复步骤S2-3直到L-list中所有项均匀分配到相应组为止,如果最后一次取出的项个数少于H则将其依次添加到负载总量最小的组中;
S2-6:将所得到的分组G-list保存到文件存储系统HDFS中。
上述方案中:步骤S3还包括以下步骤:
S3-1:在Map函数计算过程中,将处理后的数据依据G-list映射到集群中的不同计算节点上;
S3-2:在Reduce函数计算过程中,在各个计算节点中构造子树,通过先序、后序遍历子树,得到频繁1项集的N-list;然后对频繁1项集结构进行合并得到频繁2项集的DiffNodeset;最后挖掘出所有的频繁项。
上述方案中:步骤S3-1还包括以下步骤:
S3-1-1:从分布式文件存储系统HDFS中读取F-list和G-list,同时将G-list中的各个数据项用序号替换;
S3-1-2:根据G-list构建映射表Htable,将G-list每组所包含的项作为key值,组号gid作为value值;
S3-1-3:依次读取预处理后数据集中的每一条记录,并逆序遍历该记录中的项item,根据步骤S3-1-2中的Htable,确定其组号gid,然后以gid为key值,将排在项item之前所有项设定为value值;
S3-1-4:重复执行步骤S3-1-3,直到所有记录完成映射,并将所得的输出结果作为Reduce阶段的输入传送给Reduce函数。
上述方案中:步骤S3-1-3还包括以下步骤:
S3-1-3-1:为了避免同一条记录多次映射到同一节点上,删除Htable中value=gid的所有键值对;
S3-1-3-2:如果在映射时找不到对应的组号,则读取前一项执行相同操作,直到该记录执行完毕。
上述方案中:步骤S3-2还包括以下步骤:
S3-2-1:系统中每个计算节点根据Map阶段的输出,通过调用insert_tree()函数在各个节点上构造PPC-Tree树;
S3-2-2:对PPC-Tree树分别进行先序遍历、后序遍历,得到所有频繁1项集的N-list,并从内存中删除PPC-tree树,释放内存空间;
S3-2-3:采用双向比较策略T-wcs对频繁1项集的N-list进行合并产生2项集的DiffNodeset,计算每一个2项集的支持度,选取支持度大于最小支持度阈值min_sup的项组成频繁2项集;
S3-2-4:根据k项集的DiffNodeset生成方法以及k项集的支持度计算方法挖掘频繁k项集,所述k为大于2的正整数,最后输出所有频繁模式。
上述方案中:步骤S3-2-3中,根据如下计算公式计算每一个2项集的支持度;
其中Sup(i1)表示项i1的支持度,∑E∈DN12E.count表示2项集的DiffNodeset结构中所有PP-code第三项之和。
上述方案中:步骤S3-2-4中,所述k项集的支持度计算公式如下:
其中P表示k项集i1i2...ik-1ik,P1表示频繁k-1项集i1i2...ik-2ik-1,Sup(P1)表示P1的支持度,ΣE∈DNpE.count表示k项集的DiffNodeset结构中所有PP-code第三项之和。
综上所述,由于采用了上述技术方案,本发明的有益效果是:采用DiffNodeset数据结构,能够有效避免算法中存在的N-list基数过大的问题;通过双向比较策略T-wcs加快2项集的生成效率,以降低算法的时间复杂度;并结合Hadoop云计算平台与MapReduce编程模型对改进算法的各步骤进行并行化处理,以克服传统频繁项集挖掘算法在大数据环境下的缺陷;在并行挖掘频繁项集时,考虑到集群负载对并行算法效率的影响,通过负载均衡策略LBSBDG,实现了对频繁1项集F-list的均匀分组,既可以降低每个节点上的内存开销,也可以达到系统负载均衡的目的。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明的流程示意图;
图2是本发明应用于Susy,webdocs和kosarak三个数据集上的时间复杂度示意图。
图3是本发明应用于Susy,webdocs和kosarak三个数据集上的空间复杂度示意图。
图4是本发明PFP-Growth、MREclat和MRPrePost在webdocs上的执行时间对比示意图。
图5是本发明PFP-Growth、MREclat和MRPrePost在kosarak上的执行时间对比示意图。
图6是本发明PFP-Growth、MREclat和MRPrePost在Susy上的执行时间对比示意图。
图7是本发明PFP-Growth和MRPrePost在webdocs上的内存使用量对比示意图。
图8是本发明PFP-Growth和MRPrePost在kosarak上的内存使用量对比示意图。
图9是本发明PFP-Growth和MRPrePost在Susy上的内存使用量对比示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
如图1所示,一种基于MapReduce的并行频繁项集网络浏览行为挖掘方法,包括以下步骤:
S1:输入待挖掘的数据集,并对数据集进行划分分区,并得到f-list;
S1-1:使用Hadoop默认的文件块策略,将原始数据集划分成大小相同的文件块Block;
S1-2:将文件块Block作为Map阶段的输入数据,通过调用Map函数以键值对<key=item,value=1>的形式统计出相应节点上的文件块中各项出现的次数;
S1-3:在Combine阶段通过调用Combine函数将本节点中key值相同的value相加,实现键值对的初步合并,以降低集群各节点的数据通信量;
S1-4:将每个节点新得到的键值对传送给Reduce函数,进行合并;
S1-5:筛选出支持度大于最小支持度阈值min_sup的项组成频繁1项集F1,根据频繁1项集中各个项的支持数降序排列生成全局F-list;
S2:通过负载均衡策略LBSBDG对F-list均匀分组;估算F-list中每一项的负载量,并根据每一项的负载量进行均匀分组,生成分组列表G-list;
S2-1:首先根据估计函数E(item)计算F-list中每一项的负载量Load,并将每一项的负载量按照降序排序方法生成L-list;
函数E(item)具体的计算方式如下所示:
E(item)=min{count(item),2n-1}
其中count(item)表示频繁项item的支持度,n为item在F-list中的位置;min{}表示取两者之间的较小值;
S2-2:将L-list中的前H项作为初值依次添加到每一组中,并将组号设置为0~(H-1),同时设置每一组的负载总量的初值为添加项的负载量;
S2-3:继续对L-list中未分组的项进行分组操作,且每次均读取H项,在划分之前先判定当前每一组的负载总量是否相同,如果每一组负载总量均相同则按顺序添加,即将H项分别添加到0~(H-1)组中,如果每一组负载总量不相同则按逆序添加即将H项分别添加到(H-1)~0,更新每一组的负载总量;
S2-4:重复步骤S2-3直到L-list中所有项均匀分配到相应组为止,如果最后一次取出的项个数少于H则将其依次添加到负载总量最小的组中;
S2-5:将所得到的分组G-list保存到文件存储系统HDFS中,从而使得集群中任意节点都能访问到G-list;
S3:启动新的MapReduce任务,并行挖掘频繁项集;
S3-1:在新的MapReduce任务中Map阶段,将处理后的数据依据G-list映射到集群中的不同计算节点上;
S3-1-1:从分布式文件存储系统HDFS中读取F-list和G-list,同时将G-list中的各个数据项用序号替换;
S3-1-2:根据G-list构建映射表Htable,将G-list每组所包含的项作为key值,组号gid作为value值;
S3-1-3:依次读取预处理后数据集中的每一条记录,并逆序遍历该记录中的项item,根据步骤S3-1-2中的Htable,确定其组号gid,然后以gid为key值,将排在项item之前所有项设定为value值;
S3-1-3-1:为了避免同一条记录多次映射到同一节点,在完成映射后,删除Htable中value=gid的所有键值对;
S3-1-3-2:如果在映射时找不到对应的组号,则读取前一项执行相同操作,直到该记录执行完毕;
S3-1-4:重复执行步骤S3-1-3,直到所有记录完成映射,并将所得的输出结果作为Reduce阶段的输入传送给Reduce函数;
S3-2:在新的MapReduce任务中Reduce阶段,挖掘所有的频繁项;
在Reduce阶段,采用DiffNodeset数据结构能在较大程度上降低内存的消耗。此外提出了一种双向比较策略T-wcs能够快速完成频繁1项集的N-list合并任务,极大的提高了算法的性能。
S3-2-1:系统中每个计算节点根据Map阶段的输出,通过调用insert_tree()函数在各个节点上构造子PPC-Tree树;
S3-2-2:对PPC-Tree树分别进行先序遍历、后序遍历,得到所有频繁1项集的N-list,并从内存中删除PPC-tree,释放内存空间;
S3-2-3:采用双向比较策略T-wcs对频繁1项集的N-list进行合并产生2项集的DiffNodeset,并根据2项集的支持度计算方法(如如下公式所示)求得每一个2项集的支持度,选取支持度大于最小支持度阈值min_sup的项组成频繁2项集;
其中Sup(i1)表示项i1的支持度,∑E∈DN12E.count表示2项集的DiffNodeset结构中所有PP-code第三项之和。
S3-2-4:根据k项集的DiffNodeset生成方法以及k项集的支持度计算方法(如如下公式所示)挖掘频繁k项集,最后输出所有频繁模式;k为大于2的正整数;
其中,P表示k项集i1i2...ik-1ik,P1表示频繁k-1项集i1i2...ik-2ik-1,Sup(P1)表示P1的支持度,∑E∈DNpE.count表示k项集的DiffNodeset结构中所有PP-code第三项之和。
对于数据集DB,其频繁1项集的生成过程主要包括Split、Map、Combine以及Reduce四个阶段。在Split过程中使用Hadoop默认的文件块策略,将原始数据集划分成大小相同的文件块Block。文件块作Block作为Map阶段的输入数据,通过调用Map函数以键值对<key=item,value=1>的形式统计出相应接点上的文件块中各项出现的次数。为了降低集群各节点的数据通信量,会在Combine阶段通过调用Combine函数将本节点中key值相同的value相加,实现键值对的初步合并。最后再将每个节点新得到的键值对传送给Reduce函数完成最终的合并任务,并筛选出支持度大于最小支持度阈值min_sup的项组成频繁1项集F1,并根据频繁1项集中各个项的支持数降序排列生成全局F-list。
针对大数据环境下F-list规模太大,无法在有限的内存空间中构造PPC-Tree树的问题。提出了一种基于动态分组的负载均衡策略LBSBDG,不仅可以降低每个节点上PPC-Tree树的规模,而且可以达到集群各节点负载均衡的目的。
采用LBSBDG分组策略对频繁1项集进行均匀分组时,其关键在于计算F-list中每一项的负载量,即频繁1项集中每个项所对应N-list结构的长度。然而N-list中的元素与PPC-Tree树中的节点一一对应,在未构造PPC-Tree树之前无法准确计算出每项的负载量。为了解决该问题,在LBSBDG策略中通过估计函数E(item)对频繁1项集的长度规模进行预测,其具体的计算方式如下所示:
E(item)=min{count(item),2n-1}
其中count(item)表示频繁项item的支持度,n为item在F-list中的位置。
证明:对于频繁项item来说,其N-list的长度表示该项在PPC-Tree树中的节点个数,显然对于每一项来说节点数的最大值为该项的支持度。而且在构造PPC-Tree树时,树中每一项的节点数与其自身在F-list序列中的位置有关。对于频繁项item来说,假设其在F-list的位置为n,则最坏情况是排在item之前的n-1项中任意项组合在PPC-Tree中都有对应的路径,且该路径也包含项item,在此情况下这样的路径最多有2n-1条。因此F-list中的每一项item的N-list长度不超过2n-1与该项支持度之间的较小值。
给定一个长度为N的F-list,采用LBSBDG分组策略将其划分成G组的分组过程如下所示:
步骤1.首先根据估计函数E(item)计算F-list中每一项的负载量Load,并根据负载量的降序排序生成L-list;
步骤2.将L-list中的前H项作为初值依次添加到每一组中并将组号设置为0~(H-1),同时设置每一组的负载总量的初值为添加项的负载量;
步骤3.继续对L-list中未分组的项进行分组操作,每次读取H项,在划分之前项判定当前每一组的负载总量是否相同,如果每一组负载总量均相同则按顺序添加,即将H项分别添加到0~(H-1)组中,如果每一组负载总量不相同则按逆序添加,即将H项分别添加到(H-1)~0组中,更新每一组的负载总量;
步骤4.重复步骤3直到L-list中所有项均匀分配到相应组为止,如果最后一次取出的项个数少于H则将其依次添加到负载量最小的组中;
步骤5.将所得到的分组G-list保存到HDFS中,从而使得集群中任意节点都能访问到G-list。
采用LBSBDG分组策略将F-list进行均匀分组的目的是将原始事务数据集中的事务进行重新划分,并把划分后的事务集映射到集群各个节点上。通过在各个节点上构建子树,来完成频繁项集的挖掘任务。首先根据F-list序列将原始事务集的每一条事务中非频繁项去除,并按照每一项支持度的降序进行排列组成路径path,然后逆序遍历每一条路径path,如果path[k]所对应的组号为gid,则将gid与排在path[k]之前的所有项组成<key=gid,value=path>键值对发送给Reduce函数。在此过程中为了降低内存消耗,需要对原始事务集进行预处理,用频繁项item在F-list中的位置来替换原始数据集中的item。经过数据预处理后,各个计算节点启动新的MapReduce任务进行频繁项集挖掘。在Map阶段主要是依据G-list将原始事务集映射到不同的计算节点上;在Reduce阶段根据上一阶段的输出建立PPC-Tree树,并根据PPC-Tree树构建频繁1项集对应的N-list,采用T-wcs策略合并频繁1项集的N-list从而得到2项集的DiffNodeset,此外通过对频繁k项集做差运算得到频繁k+1项集。
在并行挖掘频繁项集的Map阶段,其主要任务是将处理后的数据依据G-list映射到集群中的不同计算节点上,具体步骤如下所示:
步骤1.从分布式文件存储系统HDFS中读取F-list和G-list,同时将G-list中的各个数据项用序号替换;
步骤2.根据G-list构建映射表Htable,将G-list每组所包含的项作为key值,组号gid作为value值;
步骤3.依次读取预处理后数据集中的每一条记录,并逆序遍历该记录中的项item,根据步骤2中的Htable,确定其组号gid,然后以gid为key值,排在项item之前所有项为value值。与此同时为了避免同一条记录多次映射到同一节点,删除Htable中value=gid的所有键值对。如果在映射时找不到对应的组号,则读取前一项执行相同操作,直到该记录执行完毕;
步骤4.重复执行步骤3直到所有记录完成映射,并将所得的输出结果作为Reduce阶段的输入传送给Reduce函数。
在Reduce阶段,采用DiffNodeset数据结构能在较大程度上降低内存的消耗。此外提出了一种双向比较策略T-wcs能够快速完成频繁1项集的N-list合并任务,极大的提高了算法的性能。
性质1(序列一致性原则).对于频繁项N,其N-list表示为{(x1,y1,z1),(x2,y2,z2),...,(xn,yn,zn)},则有x1<x2<...<xn,y1<y2<...<yn。
证明:根据N-list的定义我们可知x1<x2<...<xn。假设(x1,y1,z1)对应节点N1,(x2,y2,z2)对应节点N2,由于N1.item-name=N2.item-name,则N1与N2不存在祖先孩子关系,而x1<x2说明N2相较于N1来说一定在右子树上,跟据后序遍历的规则,一定存在N1的后序遍历序列小于N2的后序遍历序列,即y1<y2,以此类推y1<y2<...<yn成立。
在并行挖掘频繁项集的过程中最关键同时又最耗时的一步是将频繁1项集的N-list结构合并产生2项集的DiffNodeset,为此提出了一种双向搜索策略T-wcs,该策略通过利用序列一致性原理和祖先孩子关系能够大大减少合并过程中所需要比对的次数。
给定两个频繁1项集i1、i2,它们的N-list分别表示为N-listi1和N-listi2,且长度为m和n,其具体形式如下所示:
N-listi1={(x11,y11,z11),(x12,y12,z12),...,(x1m,y1m,z1m)}
N-listi2={(x21,y21,z21),(x22,y22,z22),...,(x2n,y2n,z2n)}
在比较两者中的任意项(x1a,y1a,z1a)和(x2b,y2b,z2b)时,根据序列一致性原则只存在三种情况:
(1)y1a>y2b,(1≤a≤m,1≤b≤n).根据祖先孩子关系可知(x2b,y2b,z2b)在PPC-Tree树中所对应的节点Ni2[b]不是(x1a,y1a,z1a)所对应节点Ni1[a]的祖先节点。此外根据序列一致性原理可知频繁1项集的N-list是按照post-order的升序序列排序,所以Ni2[b]也不是N-listi1中排在Ni1[a]之后元素所对应的祖先节点,选择Ni2[b]下一个节点进行比较。
(2)x1a>x2b,y1a<y2b,(1≤a≤m,1≤b≤n).根据祖先孩子关系可知(x2b,y2b,z2b)在PPC-Tree树中的所对应的节点Ni2[b]是(x1a,y1a,z1a)所对于节点Ni1[a]的祖先节点。所以节点Ni1[a]不包含在2项集i1i2的DiffNodeset中,选择Ni1[a]下一个节点进行比较。
(3)x1a<x2b,y1a<y2b,(1≤a≤m,1≤b≤n).根据祖先孩子关系可知(x2b,y2b,z2b)所对应的节点Ni2[b]不是(x1a,y1a,z1a)所对应节点Ni1[a]的祖先节点,此外Ni1[a]也不可能是Ni2[j]之后任意元素的孩子节点,满足2项集DiffNodeset定义。故将Ni1[i]插入到2项集i1i2的DiffNodeset中,并选择Ni1[i]的下一个节点进行比较。
Reduce阶段的主要任务如下所示:
步骤1.系统中每个计算节点根据Map阶段的输出,通过调用insert_tree()函数在各个节点上构造子PPC-Tree树;
步骤2.对PPC-Tree树分别进行先序遍历、后序遍历,得到所有频繁1项集的N-list,并从内存中删除PPC-tree,释放内存空间;
步骤3.采用双向搜索策略T-wcs对频繁1项集的N-list进行合并产生2项集的DiffNodeset,并根据2项集的支持度计算方法如下公式所示,求得每一个2项集的支持度,选取支持度大于最小支持度阈值min_sup的项组成频繁2项集;
其中Sup(i1)表示项i1的支持度,∑E∈DN12E.count表示2项集的DiffNodeset结构中所有PP-code第三项之和。
步骤4.根据k(k>2)项集的DiffNodeset生成方法以及k项集的支持度计算方法如下公式所示,挖掘频繁k项集,最后输出所有频繁模式。
其中P表示k项集i1i2...ik-1ik,P1表示频繁k-1项集i1i2...ik-2ik-1,Sup(P1)表示P1的支持度,∑E∈DNpE.count表示k项集的DiffNodeset结构中所有PP-code第三项之和。
基于MapReduce的并行频繁项集挖掘算法的流程图如图1所示。首先通过一次MapReduce任务计算得到频繁1项集的F-list;其次利用基于动态分组的负载均衡策略LBSBDG对频繁1项集进行均匀分组;最后在挖掘频繁k(k≥2)时采用DiffNodeset数据结构来降低算法的内存消耗,同时使用双向比较策略T-wcs,来加快2项集的DiffNodeset生成任务。对一种基于MapReduce的并行频繁项集挖掘方法的有效性做出以下验证:
为了验证一种基于MapReduce的并行频繁项集挖掘方法(以下简称本挖掘方法)的有效性和相比于其他方法的性能优越性,我们将本挖掘方法应用于Susy,webdocs和kosarak三个数据集上,其具体信息如表1所示。将本挖掘方法与PFP-Growth、MREclat和MRPrePost等其他方法在并行挖掘频繁项集的时间复杂度和空间复杂度等方面进行了比较。
表1实验数据集
对本挖掘方法的性能分析:
为本挖掘方法在大数据环境下挖掘频繁项集的可行性,选取最小支持度阈值为1000,10000,20000以及100000,分别将该方法应用于上述三个数据集中并独立运行10次,取10次结果的均值,通过对实验时间复杂度和空间复杂度的比较,从而实现对本挖掘方法性能的综合评估。图2和图3为本挖掘方法在3个数据集的执行结果。
从图2可以看出,当支持度从1000变化到10000时,3种数据集的时间复杂度和空间复杂度都有较大的下降,只是因为随着支持度的增大,数据集的频繁1项集F-list规模急剧下降,采用LBSBDG策略分配到各个计算节点上的项也有所下降,且在各个节点上构造的子PPC-Tree树的规模也有较大减小,因此极大的降低了产生N-list结构所需的时间。此外,使用T-wcs搜索策略生成2项集的DiffNodeset时的时间复杂度是线性的,且在挖掘频繁项集时只需要将以当前项为前缀的频繁项集保存在内存中,极大的降低了内存占用量。然而随着支持度持续增加,时间复杂度和空间复杂度减小的变化越来越缓慢,这是由于MapReduce计算模型工作调度以及在中间结果的I/O上占用了大部分时间从而影响了算法的性能。
本挖掘方法与其它方法并行挖掘频繁项集的时间复杂度比较:
为验证本挖掘方法的挖掘效果,将本挖掘方法与PFP-Growth,MREclat和MRPrePost方法进行了对比。即比较了在相同支持度不同数据集下各方法的性能,也比较了相同数据集在不同支持度下各方法的性能。在执行上述并行方法时需要根据每个数据集的F-list规模设置分组数目,表2给出三种数据集在不同支持度下F-list数目的具体情况。根据F-list大小对Susy数据集设置分组数为50组,kosarak数据集设置分组数为100组,webdocs数据集设置分组数为1000组,对比结果如图4-图6所示。
表2不同支持度下各数据集的F-list规模
从图4-图6中可以看出(其中,本挖掘方法在图3、图4、图5、图6、图7、图8和图9中均通过PIFIMD表示),相较于MREclat和PFP-Growth方法,本挖掘方法在各个数据集上的运行时间均有降低,其中在kosarak降低的最多,本挖掘方法比MREclat和PFP-Growth算法的执行时间分别降低了79.5%和62.1%;在webdocs数据集上降低的最少,但也分别降低了37.6%和17.3%。这是由于在并行挖掘频繁项集过程中本挖掘方法将对树的遍历转化为对数据结构DiffNodeset的合并任务,极大的降低了算法的运行时间。相反,在挖掘频繁项集时,MREclat方法需要将水平数据集转为垂直数据集,并采用类Apriori方法进行频繁项集的挖掘,同样对于PFP-Growth方法需要递归构建条件模式树,这两者都需要消耗大量的时间。此外,可以发现本挖掘方法比最优的MRPrePost方法的挖掘效果都好,尤其在Susy数据集上,本挖掘方法比MRPrePost方法降低了21.8%。主要因为本挖掘方法采用双向搜索策略T-wcs使得生成2项集的DiffNodeset时间复杂度是线性的,此外本挖掘方法在并行挖掘频繁项集时采用LBSBDG策略均匀的将频繁1项集分配到各个计算节点中,在确保集群负载均衡的同时也减小了集群中各节点子PPC-Tree树的规模,由此降低了先序后序遍历子PPC-Tree所需的时间,进一步降低了本挖掘方法的运行时间。
本挖掘方法与其它方法并行挖掘频繁项集的空间复杂度比较:
为进一步评估本挖掘方法的挖掘效果,进一步统计了在支持度为10000,20000,100000下本挖掘方法、PFP-Growth以及MRPrePost方法在集群中各个节点消耗的平均内存大小。
如图7、图8和图9所示,可以看出,在三个数据集上MRPrePost方法和本挖掘方法所消耗的内存大小明显小于PFP-Growth方法,这是由于MRPrePost和本挖掘方法在挖掘频繁项集时只需要根据PPC-Tree树生成频繁1项集的N-list结构,之后将PPC-Tree树从内存中删除,节省了大量的内存空间,而PFP-Growth方法在挖掘频繁项集时需要递归构造条件模式子树,所有的条件模式子树都需要保留在内存中。同时发现相较于MRPrePost方法,本挖掘方法在对三个数据集挖掘频繁项集时所使用的内存空间更少,尤其在Susy数据集上,本挖掘方法的内存使用量比MRPrePost方法的内存使用量减少了22.7%。一方面是因为本挖掘方法使用双向搜索策略T-wcs,每组在挖掘时只需要将以当前项为前缀的频繁项集保存在内存中,极大的降低了内存占用量,而且采用动态分组策略LBSBDG,均匀的将频繁1项集分配到各个计算节点中减小了各节点中子PPC-Tree树的规模;另一方面由于本挖掘方法采用DiffNodeset结构避免了在数据集上N-list基数较大的问题,如表3所示,对Susy,webdocs,kosarak三个数据集的频繁项集的DiffNodeset结构和N-list结构基数进行了统计,从表中可以看出在各个数据集上频繁项集的DiffNodeset结构比N-list结构的规模小,尤其对于密集型数据集来说DiffNodeset结构的优势更明显。
表3 DiffNodeset结构与N-list结构的比较
综上所述,我们所提出的一种基于MapReduce的并行频繁项集挖掘方法,在挖掘过程中的时间复杂度和空间复杂度都有显著的下降。
实施例一
假设一个大学生的网络浏览行为数据对本发明进行说明,该大学生一周中浏览某购物网站后共完成了Z次交易(Z为大于0的整数),其中共有0.6×Z次的交易中购买了文具或图书,那么文具或图书在u1中的概率就是0.6,其中共有0.2×Z次的交易中购买了衣物,那么衣物在u1中的概率就是0.2,其中共有0.1×Z次的交易中购买了数码产品,那么数码产品在u1中的概率就是0.1,而每次交易均购买了零食,则零食在u1中的概率就是1.0。本例只是一个简单的购物数据的例子对本发明进行说明,真实的购买数据是非常复杂且庞大的,之所以会使用概率来表示购物信息是为了更好的存储这些数据,往往需要将数据进行压缩,由此产生了大量的不确定数据。
现在通过本发明对该大学生的网络浏览行为数据进行频繁项集挖掘,进行如下步骤:
S1:将该大学生的网络浏览行为数据输入待挖掘的不确定数据集T1,该不确定数据集T1包含Z个事务,一个事务表示一次交易的购买数据,并对不确定数据集进行划分分区,并得到f-list;
S1-1:使用Hadoop默认的文件块策略,将原始不确定数据集划分成大小相同的文件块Block;
S1-2:将文件块Block作为Map阶段的输入数据,通过调用Map函数以键值对<key=item,value=1>的形式统计出相应节点上的文件块中各项出现的次数;例如其键值对的形式为{<CLOTH,1>,<FOOD,1>,<BOOK,1>,<FOOD,1>,<CLOTH,1>,<DIGITAL,1>,<FOOD,1>,<BOOK,1>……};
S1-3:在Combine阶段,通过调用Combine函数将本节点中key值相同的value数据相加,实现键值对的初步合并,以降低集群各节点的数据通信量;
S1-4:将每个节点新得到的键值对传送给Reduce函数,进行合并;合并结果为{<CLOTH,0.2×Z>,<FOOD,1.0×Z>,<BOOK,0.6×Z>,<DIGITAL,0.1×Z>}
S1-5:筛选出支持度大于最小支持度阈值min_sup的项组成频繁1项集F1,根据频繁1项集中各个项的支持数降序排列生成全局F-list,所生成的全局F-list为{<FOOD>,<BOOK>,<CLOTH>};
根据概率频繁项集的定义:给定一个不确定数据集包含N条事务,用户给定一个最小支持度阈值min_sup,假设X是一个非空的概率频繁项集,那么X一定满足:P(sup(X)≥N×min_sup);
由于我们之前设定了本不确定数据集包含Z条事务,此时我们再设定最小支持度阈值min_sup为0.15,以{FOOD}为例,由于项集{FOOD}的支持度为满足sup({FOOD})≥Z×0.15的条件,那么项集{FOOD}是概率频繁项集;因此,所生成的全局F-list为{<FOOD>,<BOOK>,<CLOTH>};
S2:通过负载均衡策略LBSBDG对F-list均匀分组;估算F-list中每一项的负载量,并根据每一项的负载量进行均匀分组,生成分组列表G-list;
S2-1:首先根据估计函数E(item)计算F-list中每一项的负载量Load,并将每一项的负载量按照降序排序方法生成L-list;
函数E(item)具体的计算方式如下所示:
E(item)=min{count(item),2n-1}
其中count(item)表示频繁项item的支持度,n为item在F-list中的位置;min{}表示取两者之间的较小值;则L-list为{<FOOD,1>,<BOOK,2>,<CLOTH,3>}
S2-2:将L-list中的前H项作为初值依次添加到每一组中,并将组号设置为0~(H-1),同时设置每一组的负载总量的初值为添加项的负载量;例如,假设H为2,则“0”组只选取前两项,且“0”组的负载量为3;
S2-3:继续对L-list中未分组的项进行分组操作,且每次均读取H项,在划分之前先判定当前每一组的负载总量是否相同,如果每一组负载总量均相同则按顺序添加,即将H项分别添加到0~(H-1)组中,如果每一组负载总量不相同则按逆序添加即将H项分别添加到(H-1)~0,更新每一组的负载总量;
S2-4:重复步骤S2-3直到L-list中所有项均匀分配到相应组为止,如果最后一次取出的项个数少于H则将其依次添加到负载总量最小的组中;以此生成分组G-list,为{{<FOOD,1>,<BOOK,2>},{<CLOTH,3>}};
S2-5:将所得到的分组G-list保存到文件存储系统HDFS中,从而使得集群中任意节点都能访问到G-list;
S3:启动新的MapReduce任务,并行挖掘频繁项集;
S3-1:在新的MapReduce任务中Map阶段,将处理后的数据依据G-list映射到集群中的不同计算节点上;
S3-1-1:从分布式文件存储系统HDFS中读取F-list和G-list,同时将G-list中的各个数据项用序号替换;
S3-1-2:根据G-list构建映射表Htable,将G-list每组所包含的项作为key值,组号gid作为value值;则映射表Htable为{<{<FOOD,1>,<BOOK,2>},0>,<{<CLOTH,3>},1>};
S3-1-3:依次读取预处理后不确定数据集中的每一条记录,并逆序遍历该记录中的项item,根据步骤S3-1-2中的Htable,确定其组号gid,然后以gid为key值,将排在项item之前所有项设定为value值;
S3-1-3-1:为了避免同一条记录多次映射到同一节点,在完成映射后,删除Htable中value=gid的所有键值对;
S3-1-3-2:如果在映射时找不到对应的组号,则读取前一项执行相同操作,直到该记录执行完毕;
S3-1-4:重复执行步骤S3-1-3,直到所有记录完成映射,并将所得的输出结果作为Reduce阶段的输入传送给Reduce函数;
S3-2:在新的MapReduce任务中Reduce阶段,挖掘所有的频繁项;
S3-2-1:系统中每个计算节点根据Map阶段的输出,通过调用insert_tree()函数在各个节点上构造子PPC-Tree树;
S3-2-2:对PPC-Tree树分别进行先序遍历、后序遍历,得到所有频繁1项集的N-list,并从内存中删除PPC-tree,释放内存空间;
S3-2-3:采用双向比较策略T-wcs对频繁1项集的N-list进行合并产生2项集的DiffNodeset,并根据2项集的支持度计算方法(如如下公式所示)求得每一个2项集的支持度,选取支持度大于最小支持度阈值min_sup的项组成频繁2项集;
其中Sup(i1)表示项i1的支持度,∑E∈DN12E.count表示2项集的DiffNodeset结构中所有PP-code第三项之和。
S3-2-4:根据k项集的DiffNodeset生成方法以及k项集的支持度计算方法(如如下公式所示)挖掘频繁k项集,最后输出所有频繁模式;k为大于2的正整数;
其中,P表示k项集i1i2...ik-1ik,P1表示频繁k-1项集i1i2...ik-2ik-1,Sup(P1)表示P1的支持度,∑E∈DNpE.count表示k项集的DiffNodeset结构中所有PP-code第三项之和。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (5)
1.一种基于MapReduce的并行频繁项集挖掘方法,其特征在于:包括以下步骤:
S1:输入待挖掘的数据集,并对数据集进行划分分区和筛选,得到频繁1项集,对频繁1项集中各个项排列生成F-list;
S1-1:使用Hadoop默认的文件块策略,将原始数据集划分成大小相同的文件块Block;
S1-2:将文件块Block作为Map阶段的输入数据,通过调用Map函数以键值对<key=item,value=1>的形式统计出相应接点上的文件块中各项出现的次数;
S1-3:通过调用Combine函数将本节点中key值相同的value相加;
S1-4:将每个节点新得到的键值对传送给Reduce函数,进行合并;
S1-5:筛选出支持度大于最小支持度阈值min_sup的项组成频繁1项集F1,根据频繁1项集中各项的支持数降序排列生成全局F-list;
S1-6:将所得到的F-list保存到文件存储系统HDFS中;
S2:通过负载均衡策略LBSBDG对F-list均匀分组;估算F-list中每一项的负载量,并根据每一项的负载量进行均匀分组,生成分组列表G-list;
S2-1:通过估计函数E(item)计算F-list中每一项的负载量Load,并将每一项的负载量按照降序排序方法生成L-list;
函数E(item)具体的计算方式如下所示:
E(item)=min{count(item),2n-1}
其中count(item)表示频繁项item的支持度,n为item在F-list中的位置;min{}表示取两者之间的较小者;
S2-2:构建分组列表G-list,对L-list中的每一项进行分组生成G-list,其中G-list包含H组;
S2-3:将L-list中的前H项作为初值依次添加到G-list每一组中,并将组号设置为0~(H-1),同时设置每一组的负载总量的初值为添加项的负载量;
S2-4:继续对L-list中未分组的项进行分组操作,且每次均读取H项,在划分之前先判定当前每一组的负载总量是否相同,如果每一组负载总量均相同则按顺序添加,即将H项分别添加到0~(H-1)组,如果每一组负载总量不相同则按逆序添加,即将H项分别添加到(H-1)~0组中,更新每一组的负载总量;
S2-5:重复步骤S2-3直到L-list中所有项均匀分配到相应组为止,如果最后一次取出的项个数少于H则将其依次添加到负载总量最小的组中;
S2-6:将所得到的分组G-list保存到文件存储系统HDFS中;
S3:启动频繁k项挖掘任务,并行挖掘待挖掘数据集中所有的频繁项集;
S3-1:在Map函数计算过程中,将处理后的数据依据G-list映射到集群中的不同计算节点上;
S3-1-1:从分布式文件存储系统HDFS中读取F-list和G-list,同时将G-list中的各个数据项用序号替换;
S3-1-2:根据G-list构建映射表Htable,将G-list每组所包含的项作为key值,组号gid作为value值;
S3-1-3:依次读取预处理后数据集中的每一条记录,并逆序遍历该记录中的项item,根据步骤S3-1-2中的Htable,确定其组号gid,然后以gid为key值,将排在项item之前所有项设定为value值;
S3-1-4:重复执行步骤S3-1-3,直到所有记录完成映射,并将所得的输出结果作为Reduce阶段的输入传送给Reduce函数;
S3-2:在Reduce函数计算过程中,在各个计算节点中构造子树,通过先序、后序遍历子树,得到频繁1项集的N-list;然后对频繁1项集结构进行合并得到频繁2项集的DiffNodeset;最后挖掘出所有的频繁项。
2.根据权利要求1所述的挖掘方法,其特征在于:步骤S3-1-3还包括以下步骤:
S3-1-3-1:完成映射后,删除Htable中value=gid的所有键值对;
S3-1-3-2:如果在映射时找不到对应的组号,则读取前一项执行相同操作,直到该记录执行完毕。
3.根据权利要求1所述的挖掘方法,其特征在于:步骤S3-2还包括以下步骤:
S3-2-1:系统中每个计算节点根据Map阶段的输出,通过调用insert_tree()函数在各个节点上构造PPC-Tree树;
S3-2-2:对PPC-Tree树分别进行先序遍历、后序遍历,得到所有频繁1项集的N-list,并从内存中删除PPC-tree树,释放内存空间;
S3-2-3:采用双向比较策略T-wcs对频繁1项集的N-list进行合并产生2项集的DiffNodeset,计算每一个2项集的支持度,选取支持度大于最小支持度阈值min_sup的项组成频繁2项集;
S3-2-4:根据k项集的DiffNodeset生成方法以及k项集的支持度计算方法挖掘频繁k项集,所述k为大于2的正整数,最后输出所有频繁模式。
4.根据权利要求3所述的挖掘方法,其特征在于:步骤S3-2-3中,根据如下计算公式计算每一个2项集的支持度;
其中Sup(i1)表示项i1的支持度,∑E∈DN12E.count表示2项集的DiffNodeset结构中所有PP-code第三项之和。
5.根据权利要求3所述的挖掘方法,其特征在于:步骤S3-2-4中,所述k项集的支持度计算公式如下:
其中P表示k项集i1i2...ik-1ik,P1表示频繁k-1项集i1i2...ik-2ik-1,Sup(P1)表示P1的支持度,∑E∈DNpE.count表示k项集的DiffNodeset结构中所有PP-code第三项之和。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010107067.0A CN111309786B (zh) | 2020-02-20 | 2020-02-20 | 基于MapReduce的并行频繁项集挖掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010107067.0A CN111309786B (zh) | 2020-02-20 | 2020-02-20 | 基于MapReduce的并行频繁项集挖掘方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309786A CN111309786A (zh) | 2020-06-19 |
CN111309786B true CN111309786B (zh) | 2023-09-15 |
Family
ID=71154883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010107067.0A Active CN111309786B (zh) | 2020-02-20 | 2020-02-20 | 基于MapReduce的并行频繁项集挖掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309786B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925821B (zh) * | 2021-02-07 | 2022-05-13 | 韶关学院 | 基于MapReduce的并行频繁项集增量数据挖掘方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729478A (zh) * | 2014-01-26 | 2014-04-16 | 重庆邮电大学 | 基于MapReduce的LBS兴趣点发现方法 |
CN104731925A (zh) * | 2015-03-26 | 2015-06-24 | 江苏物联网研究发展中心 | 基于MapReduce的FP-Growth的负载均衡并行计算方法 |
CN104834709A (zh) * | 2015-04-29 | 2015-08-12 | 南京理工大学 | 一种基于负载均衡的并行余弦模式挖掘方法 |
CN106815302A (zh) * | 2016-12-13 | 2017-06-09 | 华中科技大学 | 一种应用于游戏道具推荐的频繁项集挖掘方法 |
WO2018152303A1 (en) * | 2017-02-15 | 2018-08-23 | Edgewise Networks, Inc. | Network application security policy generation |
CN109992610A (zh) * | 2019-04-03 | 2019-07-09 | 中南大学 | 一种基于频繁模式树二维特征的负载均衡方法 |
CN110232079A (zh) * | 2019-05-08 | 2019-09-13 | 江苏理工学院 | 一种基于Hadoop的改进型FP-Growth数据挖掘方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10885047B2 (en) * | 2016-07-01 | 2021-01-05 | Oracle International Corporation | System and method providing association rule aggregates |
-
2020
- 2020-02-20 CN CN202010107067.0A patent/CN111309786B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729478A (zh) * | 2014-01-26 | 2014-04-16 | 重庆邮电大学 | 基于MapReduce的LBS兴趣点发现方法 |
CN104731925A (zh) * | 2015-03-26 | 2015-06-24 | 江苏物联网研究发展中心 | 基于MapReduce的FP-Growth的负载均衡并行计算方法 |
CN104834709A (zh) * | 2015-04-29 | 2015-08-12 | 南京理工大学 | 一种基于负载均衡的并行余弦模式挖掘方法 |
CN106815302A (zh) * | 2016-12-13 | 2017-06-09 | 华中科技大学 | 一种应用于游戏道具推荐的频繁项集挖掘方法 |
WO2018152303A1 (en) * | 2017-02-15 | 2018-08-23 | Edgewise Networks, Inc. | Network application security policy generation |
CN109992610A (zh) * | 2019-04-03 | 2019-07-09 | 中南大学 | 一种基于频繁模式树二维特征的负载均衡方法 |
CN110232079A (zh) * | 2019-05-08 | 2019-09-13 | 江苏理工学院 | 一种基于Hadoop的改进型FP-Growth数据挖掘方法 |
Non-Patent Citations (1)
Title |
---|
基于DiffNodeset结构的最大频繁项集挖掘算法;尹远,张昌等;《计算机应用》;第1.3部分 * |
Also Published As
Publication number | Publication date |
---|---|
CN111309786A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Raj et al. | EAFIM: efficient apriori-based frequent itemset mining algorithm on Spark for big transactional data | |
TWI730043B (zh) | 關聯分析方法和裝置 | |
CN112925821B (zh) | 基于MapReduce的并行频繁项集增量数据挖掘方法 | |
WO2018059298A1 (zh) | 模式挖掘方法、高效用项集挖掘方法及相关设备 | |
Oruganti et al. | Exploring Hadoop as a platform for distributed association rule mining | |
CN106599122B (zh) | 一种基于垂直分解的并行频繁闭序列挖掘方法 | |
CN111309786B (zh) | 基于MapReduce的并行频繁项集挖掘方法 | |
Castro et al. | Review and comparison of Apriori algorithm implementations on Hadoop-MapReduce and Spark | |
Lin et al. | Efficiently updating the discovered high average-utility itemsets with transaction insertion | |
Balasubramaniam et al. | Efficient nonnegative tensor factorization via saturating coordinate descent | |
Yimin et al. | PFIMD: a parallel MapReduce-based algorithm for frequent itemset mining | |
Qiao et al. | GPU implementation of Borůvka’s algorithm to Euclidean minimum spanning tree based on Elias method | |
CN104598567A (zh) | 一种基于Hadoop MapReduce编程框架的数据统计排重的方法 | |
Raj et al. | PartEclat: an improved Eclat-based frequent itemset mining algorithm on spark clusters using partition technique | |
Ou et al. | A nonmonotone supermemory gradient algorithm for unconstrained optimization | |
Yu et al. | An efficient frequent patterns mining algorithm based on MapReduce framework | |
Keswani et al. | Enhanced approach to attain competent Big Data pre-processing | |
Yuan et al. | Scalable training of sparse linear svms | |
Kim | Theoretical analysis of constructing wavelet synopsis on partitioned data sets | |
Dharavath et al. | Quantitative analysis of frequent itemsets using Apriori algorithm on Apache Spark framework | |
US11960483B1 (en) | Constant time data structure for single and distributed networks | |
Rajendran et al. | Incremental MapReduce for K-medoids clustering of big time-series data | |
CN114780541B (zh) | 微批流处理系统中的数据分区方法、装置、设备和介质 | |
WO2023103612A1 (zh) | 量子程序的执行方法和量子程序的编译方法 | |
Nguyen et al. | Some observations on representation of dependency degree k |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230814 Address after: No.288, Daxue Road, Zhenjiang District, Shaoguan City, Guangdong Province, 512023 Applicant after: SHAOGUAN University Address before: 86 No. 341000 Jiangxi city of Ganzhou province Zhanggong District Hongqi Avenue Applicant before: Jiangxi University of Science and Technology |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |