基于重构的改进自然排序树算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于重构的改进自然排序树算法
杜媛;张世伟
【摘要】针对自然排序树(CAN-tree)算法构建的树结构节点个数过多、压缩性不高等问题,提出一种基于重构的改进CAN-tree算法.首先,使用自然排序法直接构建树结构,将频繁项集挖掘算法实现中数据库扫描次数减少至1;然后,对构建的树结构以支持度降序方式结合剪枝操作实现树结构的重构,得到高压缩性的树结构;最后,对重构的树结构进行频繁项集挖掘.实验结果表明,基于重构的改进CAN-tree算法所构建的树结构节点个数减少至原来的20%以下,执行效率提高了4至6倍,在频繁项集挖掘中有效地压缩了树结构,缩短了算法的执行时间.
【期刊名称】《计算机应用》
【年(卷),期】2019(039)002
【总页数】5页(P441-445)
【关键词】频繁项集;频繁项集头表;重构;剪枝;最小支持度
【作者】杜媛;张世伟
【作者单位】中国计量大学信息工程学院,杭州310018;中国计量大学现代教育技术中心,杭州310018
【正文语种】中文
【中图分类】TP301.6
0 引言
在大数据时代,数据成为一种资源,数据挖掘技术能够发现隐藏在数据中的信息,而关联规则挖掘就是其重要组成部分之一。
在关联规则挖掘应用中,频繁项集挖掘尤为重要。
频繁项集挖掘算法可分成2类:1)Apriori算法[1],需多次扫描库,影响执行效率,同时还将产生大量候选项集,需大量存储空间;2)频繁模式增长(Frequent Pattern growth, FP-growth)算法[2],仅需扫描2次数据库,使用频
繁模式树(Frequent Pattern tree,FP-tree)存储压缩后的原始数据,相比Apriori,FP-growth减少了数据库扫描次数,不仅提高了算法的执行效率,也减少了内存的
占有量。
对于FP_growth算法,不少学者提出了改进方向:1)修改FP-tree节点结构[3]、添加Hash表辅助存储结构[4-5]、使用构造链表(Building list, B-list)[6]修改频繁项集表达形式等以提高节点查询速度;2)直接对最大频繁项进行挖掘,使用剪枝技术减少FP-tree的节点数[7-9];3)使用分布式计算框架,设计并行运行的FP-growth算法,如并行FP-growth算法(Parallel FP-growth,PFP)[10]、利用MapReduce模型加上动态阈值法改进并行FP-growth算法[11]以缩短算法执行
时间。
但是这些改进都需要扫描数据库2次:第1次扫描创建降序排列的频繁项
集头表,第2次扫描构建FP-tree,且构建过程依赖第1次扫描结果。
而自然排序树(Canonical-order tree,CAN-tree)算法[12]的提出正好解决了该问题。
CAN-tree在构建时使用自然排序法(例如字母排序法),例如事务{a,c,b},在构建时直接以{a,b,c}顺序插入节点,而FP-tree在构建时需要根据{a}、{c}、{b}的支持度计数
进行降序排列,所以CAN-tree仅需扫描数据库1次即可构建完整树,提高了算
法的执行效率。
但是CAN-tree在构建时保留了所有数据,这导致树的结构非常
庞大,直接降低了后期挖掘速度。
对此有学者对CAN-tree节点结构进行了改进,如将CAN-tree节点中指向子节点的指针改成指向父节点[13],在此基础上,基于CAN-tree快速构建算法(Fast Construction algorithm based on CAN-tree,
FCCAN)[14]又增加了哈希存储表和叶子头表,以减少查询和剪枝时间,提高条件模式基生成速度,但是这些改进都未从本质上缩小CAN-tree的结构。
对比FP-tree可以发现,CAN-tree的结构明显比较稀疏,因为FP-tree使用支持度降序排列插入节点,支持度计数越大的节点越靠近Root节点(因为Root是所有路径的共享节点),所以支持度计数越大的节点在树结构中的共享程度越大,其共享前缀路
径也越多,FP-tree也越紧凑。
在频繁项集挖掘过程中,算法需要对整棵树结构进行递归处理,而庞大的树结构会明显增加递归挖掘的层次和执行的时间,所以紧凑的树结构在后期生成条件模式基进行频繁项集挖掘时效率更高。
由于CAN-tree构建的完整树结构庞大稀疏、后期递归进行频繁项集挖掘时递归
层次过多、挖掘效率低等问题,本文着力于缩小CAN-tree构建的树结构,提出
了一种基于重构的改进CAN-tree算法:1)使用自然排序法实现扫描数据库1次,构造CAN-tree和频繁项集头表;2)对频繁项集头表进行降序排列,并根据支持度计数降序模式结合最小支持度剪枝法对CAN-tree进行重构。
改进算法保留了CAN-tree仅需扫描数据库1次的优势,降低了算法在数据库读取上的时间损耗,同时对CAN-tree构建的树结构进行重构,得到压缩性更高的树,以减少后期频
繁项集挖掘过程中递归扫描层数,进一步减少算法执行的时间损耗,提高执行效率。
1 频繁项集
设I={i1,i2,…,in}是项目的集合,称为项集。
如果项集长度为k,则称为k-项集,
项集I可称为n-项集。
如果I是频繁的,则可称为频繁n-项集。
设数据库D,D
中每条数据是一个项集,称为TID,项集中包含一个或者多个I中的项。
假设A是I中的一个子项集,A的支持度计数count(A)是D中包含A的个数,支持度support(A)是count(A)在D中事务总数所占的比例,最小支持度可记为
min_support。
定义1 给定数据库D和最小支持度min_support,对于项集A⊆I,如果
support(A)≥min_support,则称A为D中的频繁项集。
由min_support和TID总数可以计算出最小支持度计数,故定义1可以得到推论1。
推论1 根据给定数据库D和最小支持度min_support,则最小支持度计数
min_count为TID总数和min_support的乘积。
对于项集A⊆I,如果
count(A)≥min_count,则称A为D的频繁项集。
2 CAN-tree算法
CAN-tree是以树结构作为数据组织形式,同时在树结构的设计上存在4个性质:性质1 具有频繁项集头表,头表中包含:频繁1-项集标识item;频繁1-项集支
持度计数count;以及指向树结构中首个具有该标识节点的指针域list_link。
性质2 具有一个根节点Root,作为整棵树结构的起始点,其值为null,实际为一个空节点,该节点在进行CAN-tree构建以及重构过程作为起始标志,而在进行
条件模式树生成以及挖掘过程中均作为结束标志。
性质3 树结构中的节点包含节点名字item_name、节点支持度计数item_count、指向子节点的指针child_link、指向父节点的指针parent_link以及指向同名节点
的指针node_link。
性质4 树中的每条子树都是数据库中事务(TID)节点的集合,具有相同节点顺序的TID可共享前缀树节点。
2.1 CAN-tree构建过程
CAN-tree保存了所有事务数据信息,故在构建时不需要最小支持度计数进行剪枝操作。
CAN-tree构建过程如下:
1)创建Root节点,设置值为null,作为整个树结构的起始节点;将扫描数据D获得的TID依照自然排序法如字母排序法进行排序。
2)查看频繁项集头表中记录,依次取出TID中的每个项,如果取出的项已存在则
该项集计数增加1,如果不存在则在合适的位置保存该项集,并初始化计数为1。
取出的项集插入树结构中,插入过程按照步骤3)~5)实现。
3)设步骤2)中取出的项集为P,项集的首个元素为p,剩余元素为PL。
从Root
节点开始遍历整个树结构,因为p为项集的首个元素,所以仅需遍历Root节点的child_link即可。
如果child_link中存在p的同名节点,则该同名节点计数增加1;否则新建一个节点Np,计数赋值为1,并加入child_link中。
4)Np插入后,需要更新频繁项集头表中元素p的节点链list_link。
a)该节点链为空,节点Np作为list_link的首个元素;b)该节点链非空,Np需根据list_link中已存在节点的node_link链接至末尾,同时设置Np的node_link为null。
5)如果剩余元素列表PL非空,进行递归操作:设Np为PL的Root节点,取出
PL中的首个节点代替3)中的p,PL代替项集为P,替换完成后执行3)~5)实现递归调用直至剩余元素列表为空。
6)循环执行2)~5),直到所有的TID数据全部插入,此时CAN-tree构建完成。
为了便于理解树的构建过程以及更好地说明重构后具有更小的树结构,本文引入一个实例,如表1为某数据库TID数据。
表1 数据库TID数据Tab. 1 Database of TID dataTID项目TID项目TID项目
1b,a,e3c,e,d,h5b,c,d2a,d,e4a,d6e,d
使用表1数据为例,根据CAN-tree的构造步骤,构建结果如图1。
图1 CAN-tree构建结果Fig. 1 Construction result of CAN-tree
FP-tree的构建与CAN-tree不同之处在于需要提前计算频繁1-项集的支持度计数,并在构建时加入最小支持度计数,故其需要扫描数据库2次:第1次扫描数据库
用以获取频繁1-项集的支持度计数并获得降序排列方式;第2次扫描数据库用以
构建FP-tree。
构建过程与CAN-tree相似,以表1为例,为包含完整数据FP-tree以支持度计数为1进行构建,结果如图2。
图2 FP-tree构建结果Fig. 2 Contruction result of FP-tree
3 改进Can-tree算法
对比图2和图1可发现,在保留完整数据前提下,图2比图1减少了1个节点。
分析两者的构建过程可知:
1)CAN-tree算法在构建过程中不使用最小支持度计数进行剪枝操作,FP-tree在
构建过程中加入了最小支持度计数,不满足该条件的项目将被删除,图2使用最
小支持度计数为1,故而保留了完整的数据信息。
假设FP-tree在构建过程中加入更大的最小支持度计数,其构建的树结构节点将更少。
因为不满足最小支持度计数的数据是非频繁的,在进行频繁项集挖掘时无需考虑这些数据,所以CAN-tree
构建的树结构更为庞大,在进行条件模式基和条件模式树生成时将损耗更多的时间。
2)CAN-tree是根据字母排序法实现的,而FP-tree算法是根据频繁项集支持度计数降序模式进行构建的。
降序模式构建FP-tree时可以在最大程度上共享某个节点。
因为节点支持度计数越大,其在数据库事务中出现的次数越多,根据降序排列后该节点在树的构建中插入的位置越靠前,生成的子树越多,被共享的频率也就越大,构建的树结构更为紧凑。
频繁项集挖掘过程中,需要树结构递归生成条件模式基,所以树结构紧凑的程度直接影响了后期进行频繁项集挖掘的执行效率。
基于此,改进CAN-tree算法加入了执行过程中的重构策略,保留了CAN-tree
仅需扫描数据库1次的优势,同时减少了算法生成的树结构中的节点个数,提高
了频繁模式挖掘时的执行效率。
3.1 改进CAN-tree算法构建过程
改进CAN-tree算法构建过程的核心就是将数据库D中所有的TID数据插入树结
构中。
算法参照CAN-tree的构建模式仅需要扫描数据库1次,对获取的TID数
据按照自然排序方式:字母排序法进行排序,然后将数据节点插入T所表示的树中。
与CAN-tree算法构建过程一致,改进算法在构建过程不进行剪枝操作,所
以暂时无需最小支持度。
createTree()伪代码如下。
输入数据库dataset;
输出构建的树tree和频繁项集头表L。
createTree(dataset)
1)
foreach tid in dataset
2)
calc_headtable(tid, L)
3)
insert_tree(tid, tree)
4)
end and output tree, L
5)
insert_tree(tid, tree)
6)
item=tid[0]
7)
if ==
8)
tree.child.count+=1
9)
N=tree.child
10)
else
11)
N.count=1
12)
N.parent_link=T
13)
N.node_link=the node of the same name
14)
if tid!=null
15)
insert_tree(tid[1::], N)
3.2 改进CAN-tree算法重构过程
频繁项集挖掘需要根据3.1节构建的树结构生成条件模式基和条件模式树,而条件模式树中的子树结构越少,算法的运行速度越快,所以改进CAN-tree算法重构过程的核心就是减小子树结构,即减少树结构中的节点个数。
改进算法使用重排序和剪枝相结合的方式实现重构。
重排序就是将3.1节构建的树结构中每条子树结构按照频繁项集头表L新的排序方式调整其节点在子树中的位置,因此重排序包含两个部分:1)对L进行重排序,记作Lsort;2)依据Lsort调整所有子树路径中节点的位置。
剪枝就是根据最小支持度计数减少树中节点个数的一种方式。
定义2 假设a是树中的任意节点,a的子节点个数size(ac)大于1, 则称a为分支节点,即a拥有多个子节点,表征为树中存在多个以a为起始节点的子树路径。
观察图1,其第一层树结构{a:3,c:2}均为分支节点。
定义3 假设P{a1,a2,…,an}是树的一条子树路径,如果ai(∀i∈[1:n])已经根据Lsort排序完成,则称P为“已排序路径”。
为实现树结构的重构,需要依次遍历树中的所有路径。
由于树结构中必然存在“分
支节点”,该节点的子树路径非唯一,其子树路径中也可能存在“分支节点”,而“分支节点”对应的每个直接子节点的支持度计数均不相等,所以从Root节点自顶向下遍历将使问题复杂化。
此时可以依据节点中的parent_link实现自底向上遍历整个树结构,因为子节点具有唯一的父节点。
在算法实现上首先需要根据支持度计数降序方式将L排列成Lsort,然后自底向上依次取出待重构路径,进行节点位置调整。
任意一个节点的支持度计数可能大于其所有直接子节点的支持度计数之和(图1中第二层树结构中的{d:2}节点就是)。
所以在获取待重构路径时需根据叶子节点的支持度计数进行抽取,同时需要在原结构中保留支持度计数大于叶子节点的部分节点信息。
为方便确定遍历过程中起始节点也即叶子节点的位置,算法需要使用频繁项集头表。
如果取出路径是“已排序路径”则无需排序可直接通过剪枝操作插入到重构树中,否则需要先进行排序才能进行下一步操作。
算法实现步骤如下:
1)根据支持度计数降序模式对频繁项集头表L进行排序,记作Lsort。
2)根据最小支持度将L中不满足条件的项集进行剪枝,以减少需遍历的起始节点个数。
3)取出经剪枝后的频繁项集头表中最后一个项集,以确保自底向上遍历。
4)根据取出项集的list_link找到树结构中对应的节点N,以N的parent_link遍
历并取出相应节点,同时需要保留支持度计数大于N的节点,但其支持度计数需
减去N的支持度计数,直到Root节点为止,取出的树路径P中所有节点的支持
度计数均为N的值。
5)根据N的node_link取出N的同名节点,并重复执行4)直到node_link为null,此时取出了所有以N为叶子节点的路径。
6)如果P是“已排序路径”则对P进行剪枝操作;否则需要根据Lsort对P进行
排序后再进行剪枝。
7)将取出的所有路径插入到重构树中,同时需要更新Lsort的list_link以及各节点的node_link。
8)去除经剪枝后频繁项集头表中最后一个项集,剩余数据作为新的频繁项集头表。
9)重复3)~8)操作,直至此频繁项集头表为空。
依据上述步骤,改进CAN-tree算法重构实现如下。
输入构建的树tree,频繁项集头表L和最小支持度计数min_count;
输出重构的树tree_restructure和排序后的频繁项集头表L_sort。
Restructure(tree, L, min_count)
1)
L_sort=sort(L)
2)
L_p=prune(L_sort, min_support_count)
3)
foreach node in reverse(L_p)
4)
path=search in tree according to node
5)
foreach p in path
6)
if p is not a sorted path
7)
sort p according to L_sort
8)
p=prune(path, min_count)
process(tree_restructure, path, min_count)
10)
L_p=L_p.delete(node)
11)
end and output tree_restructure and L_sort
以表1数据为例,设置min_count=2。
首先需要根据最小支持度和支持度计数降序方式获得Lsort,然后按Lsort方式进行重构。
构建的树以节点e 开始重构,根据L取出所有叶子节点为e的路径。
其中{a:3,c:2}是分支节点,由算法步骤4)可知{a:1,d:1},{c:1,b:1,d:1}需被保留,而{h:1}不满足min_count的要求被删除。
故取出的所有路径如下:{a:1,b:1,e:1},{a:1,d:1,e:1},{c:1,d:1,e:1},{d:1,e:1},其中{d:1,e:1}为“已排序路径”,剩余路径根据Lsort排序后如下:{e:1,a:1,b:1},{d:1,e:1,a:1},{d:1,e:1,c:1}。
节点e所有分支处理后的结果如图3(b)。
对剩余的分支作相同的处理,重构结果如图3(c)。
图3 CAN-tree重构过程Fig. 3 Restructuring procedure of CAN-tree
3.3 改进Can-tree算法挖掘过程
改进CAN-tree算法的挖掘过程和FP-growth算法思想基本相同,采用分治策略,将一个问题分解为多个较小的子问题,从而发现以某个特定后缀结尾的所有频繁项[15]。
改进CAN-tree算法挖掘过程分成三个基本步骤:1)从构建的树结构中获取条件模式基;2)构建条件模式树;3)循环执行1)和2),直到树为空。
依据上述步骤,改进CAN-tree算法挖掘过程伪代码如下。
输入构建的树tree、频繁项集头表L和最小支持度计数min_count;
输出频繁项集列表freqItemList。
mine_improveTree(tree, L, min_count)
foreach node in L
2)
freqSet.add(node);
3)
freqItemList.add(freqSet)
4)
condPattBase=find prefix path with node
5)
condTree, condL=createTree(condPattBase, min_count)
6)
if condTree is not null
7)
mine_improveTree(condTree, condL, min_count)
8)
end and output freqItemList
4 实验与结果分析
实验采用Core i3- 3220 CPU 3.3 GHz,8 GB内存,操作系统为Windows 7,
利用Python编程实现。
实验数据使用学校提供的学生事务数据,该部分数据进行了预处理和清洗,如基本信息均以类别代码替代,成绩和消费数据均通过聚类算法,以聚类结果替换,构成关联事务数据(共包含16 501条数据)。
本文分别从树结构
节点个数和频繁项集挖掘执行效率上评估改进CAN-tree算法与原CAN-tree算
法以及FCCAN算法之间的差异。
4.1 节点个数比较
为验证改进CAN-tree算法对树结构中节点个数减少的有效性,本文设计两组实验:1)设置最小支持度为0.1%,改变数据量;2)设置数据量为16 000,改变最小支持度,对比分析三种算法之间的差异。
实验结果如图4和图5所示。
由图4可以看出,在相同最小支持度下,随着数据量的增加,三种算法的节点个数均增多,而当数据量达到8 000之后,改进CAN-tree的节点个数趋于稳定,从整体上看本文算法节点个数保持最少。
由图5可以看出,在相同数据量时,随着最小支持度的增加,原CAN-tree算法节点个数保持不变,FCCAN和本文的改进CAN-tree算法节点个数均随之减少,但是本文算法的节点个数最少。
分析上述结果可知,原CAN-tree算法在进行挖掘频繁项集之前不使用最小支持度,FCCAN算法加入了剪枝操作,将不符合最小支持度的节点删除以减少后期挖掘时的节点个数,而本文的改进CAN-tree算法使用重构策略,以支持度降序方式结合最小支持度剪枝重构树结构,使树结构更为紧凑。
实验结果表明改进CAN-tree算法可以有效减少节点个数。
图4 相同最小支持度时,数据量和节点个数关系曲线Fig. 4 Relation curve between data quantity and node number with the same minimum support 图5 相同数据量时,最小支持度和节点个数关系曲线Fig. 5 Relation curve between minimum support and node number with the same amount of data
4.2 执行效率比较
为验证改进CAN-tree算法性能,针对不同的条件,给出两种情况:1)设置最小支持度为0.1%,比较不同数据量和算法执行时间之间的关系;2)设置数据量为16 000,比较不同最小支持度和算法执行时间之间的关系。
由于三种算法在树构建期间方式相同,所以在对比实验中仅对三种算法建树完成后的执行时间进行比较,其中原CAN-tree算法仅包含挖掘过程,FCCAN算法包含剪枝和挖掘过程,改进
CAN-tree算法包含重构和挖掘过程。
实验结果如图6和图7所示。
由图6可以看出,在相同的最小支持度下,随着数据量的不断增加,CAN-tree和FCCAN的执行时间都随之增加,而改进CAN-tree在数据量达到8 000后趋于平稳,结合图4可知,CAN-tree和FCCAN随着数据量的增加节点个数也不断增加,而改进CAN-tree在数据量达到8 000以后,其节点个数基本保持稳定,体现了
节点个数对算法执行时间的影响。
从整体上看本文的改进算法始终比原CAN-tree 和FCCAN执行速度快。
分析图7可以发现,在相同的数据量下,随着最小支持度的增加,三种算法的执行时间都随之减少,而本文的改进算法执行所损耗时间始终是最少的。
实验结果表明,本文的改进算法具有较高的执行效率。
这是因为在构建完树结构后,改进CAN-tree算法采用了重构机制:利用支持度计数降序模式结
合最小支持度剪枝获取压缩性更好的树结构,以减少节点个数,降低了频繁项集挖掘过程中算法的执行时间。
图6 相同最小支持度时,数据量和算法执行时间的关系曲线Fig. 6 Relation curve between data quantity and algorithm running time with the same minimum support
图7 相同数据量时,最小支持度和算法执行时间的关系曲线Fig. 7 Relation curve between minimum support and algorithm running time with the same amount of data
5 结语
为减少CAN-tree构建的树结构节点个数,提高算法在频繁项集挖掘过程中的效率,本文提出了一种基于重构的改进CAN-tree算法,该算法有以下特点:1)在构建树结构时首先采用自然排序法,仅需扫描数据库一次;2)利用重构机制,采用支持度降序方式构建压缩性更好的树结构,同时加入剪枝操作以减少树结构中的节点个数,提高挖掘效率。
实验结果表明,基于重构的改进CAN-tree算法在频繁项
集挖掘中具有更好的执行效率。
但是改进CAN-tree算法在构建树结构阶段中保
留了数据库所有信息,并且比原算法多了重构阶段,所以改进CAN-tree算法在
获得高压缩性树结构前对系统内存的开销较大,对于这方面的缺陷,下一步将考虑与分布式计算框架相结合,同时在内存消耗和算法执行时间上进行完善。
参考文献:
【相关文献】
[1] AGRAWL R, IMIELINSKI T, SWAMI A. Mining association rules between sets of items in large databases [C] // Proceedings of the 1993 ACM SIGMOD International Conference on Management of Data. New York: ACM, 1993: 207-216.
[2] HAN J, PEI J, YIN Y. Mining frequent patterns without candidate generation [C]// Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data. New York: ACM 2000:1-12.
[3] DING Z, WEI Q, DING X. An improved FP-growth algorithm based on Compound single linked list [C] // Proceedings of the 2009 Second International Conference on Information and Computing Science. Washington, DC: IEEE Computer Society, 2009, 1: 351-353.
[4] HAO J, XU H. An improved algorithm for frequency itemsets mining [C] // Proceedings of the 2017 Fifth International Conference on Advanced Cloud and Big Data. Washington, DC: IEEE Computer Society, 2017: 314-317.
[5] 李也白,唐辉,张淳,等. 基于改进的FP-tree的频繁模式挖掘算法[J]. 计算机应用,
2011,31(1):101-103.(LI Y B, TANG H, ZHANG C, el al. Frequent pattern mining algorithm based on improve FP-tree [J]. Journal of Computer Applications, 2011, 31(1): 101-103.)
[6] 李校林,杜托,刘彪.基于B-list的快速频繁模式挖掘算法[J].计算机应用,2017,37(8):2357-2361,2367. (LI X L,DU T,LIU B. Fast algorithm for mining frequent patterns based on B-list [J]. Journal of Computer Applications, 2017, 37(8): 2357-2361, 2367.)
[7] 马丽生,姚光顺,杨传健.基于改进的FP-tree最大频繁项目集挖掘算法[J].计算机应用,2012,32(2):326-329.(MA L S, YAO G S, YANG C J. Mining algorithm for maximal frequent itemsets based on improved FP-tree [J]. Journal of Computer Applications, 2012, 32(2): 326-329.)
[8] 宁慧,王素红,催立刚,等. 基于改进的FP-tree最大频繁模式挖掘算法[J]. 应用科技,2016,
43(2):37-43.(NING H, WANG S H, CUI L G, et al. An algorithm for mining maximal frequent patterns based on improved FP-tree[J]. Applied Science and Technology,2016,43(2):37-43.)
[9] 赵阳,吴廖丹. 一种自底向上的最大频繁项集挖掘方法[J]. 计算机技术与发展,2017,
27(8):57-60.(ZHAO Y,WU L D. A bottom-up method for mining maximum frequent itemsets [J]. Computer Technology and Development, 2017, 27(8): 57-60.)
[10] LI H, WANG Y, ZHAN D, el al. PFP: parallel FP-growth for query recommendation [C]// Proceedings of the 2008 ACM Conference on Recommender Systems. New York: ACM, 2008: 107-114.
[11] WEI X, MA Y, ZHANG F, el al. Incremental FP-Growth mining strategy for dynamic threshold value and database based on MapReduce [C] // Proceedings of the 2014 IEEE 18th International Conference on Computer Supported Cooperative Wori in Design. Piscataway, NJ: IEEE, 2014: 271-276.
[12] LEUNG C K-S, KHAN Q I, HOQUE T. CANTree: a tree structure for efficient incremental mining of frequent patterns [C] // Proceedings of the Fifth IEEE International Conference on Data Mining. Washington, DC: IEEE Computer Society, 2005: 274-281.
[13] 邹力鹍,张其善. 基于CAN-树的高效关联规则增量挖掘算法[J]. 计算机工程,2008,34(3):29-31.(ZOU L K, ZHANG Q S. Efficient incremental association rules mining algorithm based on CAN-tree [J]. Computer Engineering, 2008, 34(3): 29-31.)
[14] 陈刚,闫英战,刘秉权. 一种基于CAN-tree快速构建算法[J]. 微电子学与计算机,2014,31(1):76-82.(CHEN G, YAN Y Z, LIU B Q. A fast construction algorithm based on CAN-
tree[J]. Microelectronics & Computer, 2014, 32(1): 76-82.)
[15] TAN P M, STEINBACH M, KUMAR V. 数据挖掘导论(完整版)[M]. 范明,等译. 北京:人民邮电出版社,2017: 225-228.(TAN P M, STEINBACH M, KUMAR V. Writing Introduction to Data Mining [M]. FAN M, translated. Beijing:Post & Telecom Press, 2017: 225-228.)
DU Yuan, born in 1991, M. S. candidate. Her research interests include data mining, big data analysis.
ZHANG Shiwei, born in 1979, engineer. His research interests include software engineering, database.。