CN108021695A - 基于Spark框架的FP-Growth大数据频繁项集挖掘算法 - Google Patents
基于Spark框架的FP-Growth大数据频繁项集挖掘算法 Download PDFInfo
- Publication number
- CN108021695A CN108021695A CN201711365857.3A CN201711365857A CN108021695A CN 108021695 A CN108021695 A CN 108021695A CN 201711365857 A CN201711365857 A CN 201711365857A CN 108021695 A CN108021695 A CN 108021695A
- Authority
- CN
- China
- Prior art keywords
- frequent
- item
- data
- vertical
- collection
- 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.)
- Withdrawn
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/2471—Distributed queries
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种基于Spark框架的FP‑Growth大数据频繁项集挖掘算法,包括如下步骤:S1、获得垂直布局的频繁1‑项集:首先输入文件;然后通过flatMap()函数生成项,通过Mpa()函数生成键‑值对;再构建垂直项集;并通过FP‑Grwth算法筛选非频繁项;最后获得垂直布局的频繁1‑项集;S2、获得频繁项集:计算项集支持度;生产N‑基数的潜在候选项集;获得k‑1技术的所有子集;将子集中相同实物存储到列表common;列表common的长度与min_sup比较;频繁项集获得。算法同时使用数据的垂直和水平布局来解决数据集过度扫描问题。
Description
技术领域
本发明涉及一种基于Spark框架的FP-Growth大数据频繁项集挖掘算法。
背景技术
近年来,随着科学技术的迅速发展,形成了巨大规模的非结构化和半结构化数据,将这种数据称作“大数据”。为了从大数据集中发现有用知识,需要采用数据挖掘技术。目前已形成了多种数据挖掘技术,例如关联规则挖掘、序列模式发现等。创建所有可能项集的规则需要大量的内存和处理资源。为了减少潜在项集的数量,需要考虑对频繁项集创建关联规则。关联规则挖掘是一种基于规则的学习技术,它可以发现数据集中数据对象之间的显著关系。
常见的频繁项集挖掘算法有Apriori和FP-Growth等算法。Apriori算法以迭代方式来搜索k-基数的频繁项集,其中k会随着每次迭代而增加。为了判别一个项集频繁,需要为每个项集计算支持度。在每次迭代中生成的频繁项集用以找到下一次迭代中较高基数的频繁项集。然而,Apriori存在一些缺陷。首先,它在每次迭代中扫描整个数据集,这会产生高的I/O成本。其次,每次迭代中会生成较大的候选集,占用较多的内存。FP-Growth算法没有剪枝过程,其将构造的FP-tree分解为多个条件模式子树,每个条件子树对应一个频繁项集,通过递归方式从这些条件子树中挖掘出事务数据库的频繁项集。相比于Apriori算法,FP-Growth算法在性能上有一个数量级的提升。然而,在构建数中也需要遍历整个数据集。
大数据需要强大的资源来进行存储和处理,传统的单个计算机不足以处理大数据。因此,多机处理适合用于处理分布式存储的海量数据。分布式计算是分布式环境中大数据处理的一种开源框架,现有常见的分布式计算框架如MapReduce。然而,由于MapReduce中需要将中间输出写入磁盘并从磁盘读取数据,致使其网络和I/O资源开销较高,所以MapReduce不适合于迭代算法。此外,MapReduce框架遵循预定义的顺序执行,这限制了算法的灵活性。Spark框架是一种较好的替代框架,它在成批处理和交互处理中更有效,性能优于MapReduce。Spark编程接口基于一种称作弹性分布式数据集(resilient distributeddatasets,RDD)的数据框架,其是一种分布于集群中的数据对象只读集合。因此,Spark分布式计算框架能很好地适用于大数据挖掘。基于上述分析,提出一种基于FP-Growth算法的频繁模式挖掘算法,并在Spark框架上实现。其中,采用了垂直数据集的思想将数据集进行垂直布局,用来计算项集不同基数的支持度。同时使用数据的默认水平布局计算候选项集。这样可以解决扫描整个数据集的问题。另外,在每次迭代后,将所有非频繁项从原来数据集中移除,以此来减少候选项集的数量,提高算法效率。在标准数据集上的仿真结果表明,提出的方法在执行时间方面具有优越性。
发明内容
有鉴于此,本发明的目的在于提出一种基于Spark框架的FP-Growth大数据频繁项集挖掘算法。
根据上述发明目的,本发明通过以下技术方案来实现:
在Spark分布式计算框架上,基于FP-Growth算法和数据集垂直布局机制提出了一种频繁项集挖掘,称为FP-Growth垂直频繁项集挖掘(FP-Growth Vertical layoutFrequent Itemset Mining,FP-VFIM)算法。
FP-VFIM使用了数据集垂直布局的概念,垂直数据集由项集列表及其事务标志符(Transaction Identifier,TID)组成,可以使其在每次迭代中不需要扫描完整的数据集。垂直数据集携带有生成可能候选集和计算其支持度的。
一种基于Spark框架的FP-Growth大数据频繁项集挖掘算法,包括如下步骤:
S1、获得垂直布局的频繁1-项集
首先输入文件;
然后通过flatMap()函数生成项,通过Mpa()函数生成键-值对;
再构建垂直项集;
并通过FP-Grwth算法筛选非频繁项;
最后获得垂直布局的频繁1-项集;
S2、获得频繁项集
计算项集支持度;
生产N-基数的潜在候选项集;
获得k-1技术的所有子集;
将子集中相同实物存储到列表common;
列表common的长度与min_sup比较;
频繁项集获得。
S1中,负责以垂直布局的形式生成频繁1-项集。当处理大数据时,数据集可能有很大的事务数量。本发明将事务数据存储在Hadoop框架的HDFS中,将多个分区数据分布在集群节点上。数据分区上的作业通过Spark引擎并行执行。该算法创建并处理RDD以产生垂直的数据集,垂直数据集只包含频繁项。
垂直数据集包括项目列表以及相应的事务,它保留了一些项,将事务数据加载到RDD,这将更好地利用集群内存并提高容错性。
FP-Growth算法是从事务集中找到频繁项集的经典数据挖掘技术之一。频繁模式进一步用于关联规则挖掘与规则挖掘,具有广阔的应用领域。对于大数据的频繁项集挖掘,需要大量的内存和资源处理。为此,在分布式计算Spark框架上出了一种FP-Growth频繁项集挖掘算法。该算法同时使用数据的垂直和水平布局来解决数据集过度扫描问题。在数据集上的实验表明,相比于现有基于Spark框架的A-FIM、APFTC算法,提出的算法在执行时间和挖掘精确上具有优势。
附图说明
图1为本发明提FP-VFIM算法的基本流程图;
图2为本发明中不同最小支持度下FP-VFIM的执行时间图;
图3为不同集群节点数量下FP-VFIM的执行时间;
图4为各种算法每次迭代的执行时间。
具体实施方式
为让本领域的技术人员更加清晰直观的了解本发明,下面将对本发明作进一步的说明。
在Spark分布式计算框架上,基于FP-Growth算法和数据集垂直布局机制提出了一种频繁项集挖掘,称为FP-Growth垂直频繁项集挖掘(FP-Growth Vertical layoutFrequent Itemset Mining,FP-VFIM)算法。
FP-VFIM使用了数据集垂直布局的概念,垂直数据集由项集列表及其事务标志符(Transaction Identifier,TID)组成,可以使其在每次迭代中不需要扫描完整的数据集。垂直数据集携带有生成可能候选集和计算其支持度的。
一种基于Spark框架的FP-Growth大数据频繁项集挖掘算法,包括如下步骤:
S1、获得垂直布局的频繁1-项集
首先输入文件;
然后通过flatMap()函数生成项,通过Mpa()函数生成键-值对;
再构建垂直项集;
并通过FP-Grwth算法筛选非频繁项;
最后获得垂直布局的频繁1-项集;
S2、获得频繁项集
计算项集支持度;
生产N-基数的潜在候选项集;
获得k-1技术的所有子集;
将子集中相同实物存储到列表common;
列表common的长度与min_sup比较;
频繁项集获得。
S1中,负责以垂直布局的形式生成频繁1-项集。当处理大数据时,数据集可能有很大的事务数量。本发明将事务数据存储在Hadoop框架的HDFS中,将多个分区数据分布在集群节点上。数据分区上的作业通过Spark引擎并行执行。该算法创建并处理RDD以产生垂直的数据集,垂直数据集只包含频繁项。
垂直数据集包括项目列表以及相应的事务,它保留了一些项,将事务数据加载到RDD,这将更好地利用集群内存并提高容错性。
本发明使用flat Map()函数生成来自数据集的所有项。接着在每个项上应用Map()函数以生成(key,value)对,其中,key为项,value为TID的列表。步骤1只生成垂直单项,在垂直数据生成之后,本发明在项集上应用FP-Growth算法以筛选出非频繁项。使用groupBy Key()函数进行分组、使用filter()函数对数据进行合并,以此构建成对项集的完整RDD。因此,在步骤1结束时,只有频繁项是垂直数据集的一部分。算法2为步骤1过程的伪代码。在步骤1后,从原始水平布局数据中移除所有非频繁项,以此减少数据尺寸。
算法2:步骤1
输入:D=事务集
min_sup=最小支持度阈值
输出:vertical_data=所有频繁垂直项集的RDD
a)for D中的每个事务t
b)flat Map(,trans_ID t);
c)for t中的每个项I
d)R1=map(,I trans_ID);
e)end for
f)end flat Map
g)end for
h)FP_Growth();
i)R2=R1.group By Key();
j)vertical_data=filter(find Frequent(R2,min_sup));
输出(vertical_data);
步骤2
FP-VFIM的步骤2用来生成频繁k-项集,其中k2。这一步骤为一个迭代过程,它会在第k次迭代中产生k-频繁项集。
本发明通过扫描垂直数据集来计算项集的支持度,并生成所有潜在的候选者,垂直数据集持有计算每个项集的支持度的足够信息。使用称为广播变量的Spark
框架来将垂直数据与所有执行者共享。最初,将来自步骤1的频繁1-项集的垂直数据作为广播变量,该广播变量在所有节点之间共享。相比于实际水平数据,这个垂直数据比较小。因此,扫描垂直数据会减少I/O和所需的磁盘空间。为了使该算法并行执行,来自步骤1的水平数据均分布到所有执行者中。FP-VFIM从每个事务中生成候选集,取代生成所有可能候选项集,这将减少每次迭代中候选集的数量。
本发明以RDD的形式存储修改后的数据,并将其分布在所有集群节点之上。在每个事务中,将项与TID分离并准备项列表。为每个通过的频繁项集创建一个计数器,即N,这里N的值从2开始,因为本发明必须生成多于1个基数的频繁项。令N6,则将从当前迭代的项集中生成所有6个频繁项集。本发明使用所有执行器上的垂直数据计算每个候选者的支持度。创建广播变量shared_data并分配垂直数据集的RDD。扫描这个共享的RDD,并用其计算每个候选项集的支持度。从项列表中生成N-基数的所有潜在候选者。对于每个候选项集,本发明获得(k-1)基数的所有子集。所有子集都是从shared_data中检索的,并将所有子集的所有相同事务存储到列表common中。TID的计数即common的长度为候选项集的支持度。如果相同列表common的长度不少于min_sup,则该项集是频繁的。所有频繁项集被加载到frequent_itemset中,frequent_itemset为一个成对的RDD,例如(key,value),其中key为项集,value为挑选为common的TID列表。将垂直频繁项集所产生的RDD分配给下一次迭代的shared_data。算法3为步骤2的伪代码。
算法3:步骤2
输入:D_frequent=只具有频繁项的事务集
vertical_data=频繁垂直项集
min_sup=最小支持度阈值
N:通过数输出:frequent_itemset:频繁项集列表
根据新的frequent_itemset更新shared_data。
FP-Growth算法是从事务集中找到频繁项集的经典数据挖掘技术之一。频繁模式进一步用于关联规则挖掘与规则挖掘,具有广阔的应用领域。对于大数据的频繁项集挖掘,需要大量的内存和资源处理。为此,在分布式计算Spark框架上出了一种FP-Growth频繁项集挖掘算法。该算法同时使用数据的垂直和水平布局来解决数据集过度扫描问题。在数据集上的实验表明,相比于现有基于Spark框架的A-FIM、APFTC算法,提出的算法在执行时间和挖掘精确上具有优势。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、同替换、改进,均应包含在本发明的保护范围之内。
Claims (1)
1.一种基于Spark框架的FP-Growth大数据频繁项集挖掘算法,其特征在于,包括如下步骤:
S1、获得垂直布局的频繁1-项集
首先输入文件;
然后通过flatMap()函数生成项,通过Mpa()函数生成键-值对;
再构建垂直项集;
并通过FP-Grwth算法筛选非频繁项;
最后获得垂直布局的频繁1-项集;
S2、获得频繁项集
计算项集支持度;
生产N-基数的潜在候选项集;
获得k-1技术的所有子集;
将子集中相同实物存储到列表common;
列表common的长度与min_sup比较;
频繁项集获得。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711365857.3A CN108021695A (zh) | 2017-12-18 | 2017-12-18 | 基于Spark框架的FP-Growth大数据频繁项集挖掘算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711365857.3A CN108021695A (zh) | 2017-12-18 | 2017-12-18 | 基于Spark框架的FP-Growth大数据频繁项集挖掘算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108021695A true CN108021695A (zh) | 2018-05-11 |
Family
ID=62073881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711365857.3A Withdrawn CN108021695A (zh) | 2017-12-18 | 2017-12-18 | 基于Spark框架的FP-Growth大数据频繁项集挖掘算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108021695A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933620A (zh) * | 2019-03-18 | 2019-06-25 | 上海大学 | 基于Spark的火电大数据挖掘方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2347364A2 (en) * | 2008-08-28 | 2011-07-27 | Aureon Laboratories, Inc. | Systems and methods for treating, diagnosing and predicting the occurrence of a medical condition |
CN103995882A (zh) * | 2014-05-28 | 2014-08-20 | 南京大学 | 基于MapReduce的概率频繁项集挖掘方法 |
-
2017
- 2017-12-18 CN CN201711365857.3A patent/CN108021695A/zh not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2347364A2 (en) * | 2008-08-28 | 2011-07-27 | Aureon Laboratories, Inc. | Systems and methods for treating, diagnosing and predicting the occurrence of a medical condition |
CN103995882A (zh) * | 2014-05-28 | 2014-08-20 | 南京大学 | 基于MapReduce的概率频繁项集挖掘方法 |
Non-Patent Citations (1)
Title |
---|
邵梁等: "基于Spark框架的FP_Growth大数据频繁项集挖掘算法", 《计算机应用研究》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933620A (zh) * | 2019-03-18 | 2019-06-25 | 上海大学 | 基于Spark的火电大数据挖掘方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rathee et al. | R-Apriori: an efficient apriori based algorithm on spark | |
Raj et al. | EAFIM: efficient apriori-based frequent itemset mining algorithm on Spark for big transactional data | |
Ediger et al. | Tracking structure of streaming social networks | |
Wen et al. | I/o efficient core graph decomposition: application to degeneracy ordering | |
Kovács et al. | Frequent itemset mining on hadoop | |
Coimbra et al. | An analysis of the graph processing landscape | |
CN112287118A (zh) | 事件模式频繁子图挖掘与预测方法 | |
Apiletti et al. | Pampa-HD: A parallel MapReduce-based frequent pattern miner for high-dimensional data | |
Lin et al. | Mining high-utility sequential patterns from big datasets | |
Mofrad et al. | Efficient distributed graph analytics using triply compressed sparse format | |
Yang et al. | GPU acceleration of subgraph isomorphism search in large scale graph | |
Ahmed et al. | ISSP-tree: an improved fast algorithm for constructing a complete prefix tree using single database scan | |
CN108021695A (zh) | 基于Spark框架的FP-Growth大数据频繁项集挖掘算法 | |
Davardoost et al. | An innovative model for extracting olap cubes from nosql database based on scalable naïve bayes classifier | |
Hassan | STORAGE STRUCTURES IN THE ERA OF BIG DATA: FROM DATA WAREHOUSE TO LAKEHOUSE | |
Bhatnagar et al. | An efficient map-reduce algorithm for computing formal concepts from binary data | |
kour Siledar et al. | Map reduce overview and functionality | |
Sra et al. | A residual utility-based concept for high-utility itemset mining | |
Ediger et al. | Computational graph analytics for massive streaming data | |
Kejriwal et al. | Sorted neighborhood for schema-free RDF data | |
Bai et al. | Optimized algorithm for skyline community discovery in multi-valued networks | |
CN110175198A (zh) | 基于MapReduce和数组的频繁项集挖掘方法和装置 | |
Bajaj | A survey on query performance optimization by index recommendation | |
Bodra | Processing queries over partitioned graph databases: An approach and it’s evaluation | |
Zhang | Large data oriented to image information fusion spark and improved fruit fly optimization based on the density clustering algorithm |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180511 |