1.一种基于滑动窗口的频繁项集并行增量挖掘的方法,其特征在于包括以下步骤:步骤1,获取数据集;
步骤2,对获取的数据集进行数据预处理;
步骤3,将数据集划分为n份增量数据集DBk;
步骤4,对划分出的数据集DBk按批次输入滑动窗口进行增量挖掘;
在步骤4中,有如下定义:
定义4.1,滑动窗口定义为一个包含m个批次数据集的固定大小窗口,其性质类似于一个长度为m的固定大小的队列,一头进、另一头出;滑动窗口中仅保留m个批次的数据集,当第m+1个批次的增量数据集输入时,需要将窗口另一头的第1个批次的数据集剔除,保证窗口中只有m个固定批次数据集;
定义4.2,滑动窗口中的增量挖掘定义为每次输入窗口中的单批次数据集DBk是要在其前序的m‑1个批次数据集的基础上进行增量的挖掘;
步骤5,挖掘当前单批次数据集DBk的频繁项集和准频繁项集;
在步骤5中,包含如下定义和步骤:
定义5.1,频繁项集表示项集的支持度supitems超过了频繁最小支持度minsup;
定义5.2,准频繁项集表示项集的支持度supitems超过了准频繁最小支持度semisup,但又小于频繁最小支持度minsup;其中需要满足semisup
步骤5.3,将单批次数据集DBk作为当前窗口输入数据,通过textFile读取该数据集;
步骤5.4,统计频繁1项集和准频繁1项集,通过对数据集中每条事务记录tran(item1,item2…,itemq)做flatMap操作,映射成二元组(itemq,1),接着通过reduceByKey聚合操作,累计出每个1项集的计数itemCount,映射成新的二元组(itemq,itemCount);最后使用filter操作筛选出semisup*itemCoumt<=minsup*|DBk|的1项集作为准频繁1项集LD1’,使用filter操作筛选出频繁1项集LD1;
步骤5.5,将频繁1项集和准频繁1项集进行合并Ls1=LD1+LD1’,按项集字典序排序,并广播到各个计算节点使用;
步骤5.6,事务数据集剪枝;根据上述统计出的1项集Ls1,重新扫描数据集DBk,对于数据集DBk中不在1项集Ls1中的事务记录项进行剔除;
步骤5.7,事务记录按字典序前缀项item分组;重新读入剪枝后的事务集DBk,对每条事务记录中的各项按字典序排序,然后再对每条事务记录执行flatMap操作,每个操作内对每条记录按相同后缀枚举,如(item1,item2,item3)可枚举为(item1,item2,item3)(item2,item3)(item3)三条相同后缀的记录;之后通过groupByKey操作按前缀项item分组聚合,将相同前缀项item的事务记录都汇聚到同一分组中;
步骤5.8,通过foreach操作对每个前缀分组中的事务记录构建模式树Fp‑tree进行频繁项集LD和准频繁项集LD’的挖掘,挖掘过程同FPGrowth算法;模式树的构建过程中,需要读取步骤5.5中广播的1项集Ls1,作为模式树Header表;
步骤6,将当前批次数据集DBk作为前序批次DB1…k‑1数据集的增量,合并滑动窗口中当前批次和前序批次数据集挖掘出的频繁项集和准频繁项集;
在步骤6中,包含如下步骤:
步骤6.1,按各个计算节点上的前缀项item分组,读入当前前缀所属窗口中的前序批次数据集DB1…k‑1挖掘出的频繁项集PLD和准频繁项集PLD’,并将两者合并PLs=PLD+PLD’,以共享前缀路径的方式构建项集前缀树Item‑PLTree;
步骤6.2,将步骤5中挖掘到的增量频繁项集LD和准频繁项集LD’以共享前缀路径的方式合并到该项集前缀树Item‑PLTree中;
步骤6.3,以前序遍历的方式遍历该项集前缀树Item‑PLTree,对支持度计数小于准频繁支持度semisup的节点分支进行剪枝;
步骤6.4,以前序遍历的方式遍历该项集前缀树,对支持度计数大于等于频繁支持度minsup的节点,输出该节点到根节点的路径,即为增量更新后当前窗口中所有批次数据集的频繁项集WLD;
步骤6.5,持久化存储当前窗口中该分组下的项集前缀树所存储的频繁项集WLD和准频繁项集WLD’;
步骤7,获取更新后当前滑动窗口中的全部频繁项集。
2.根据权利要求1所述的一种基于滑动窗口的频繁项集并行增量挖掘的方法,其特征在于:在步骤2中,数据预处理包括对事务数据集中事务项的数值化处理,剔除脏数据。
3.根据权利要求1所述的一种基于滑动窗口的频繁项集并行增量挖掘的方法,其特征在于:在步骤3中,数据集划分方式为按数据集事务总条数等分为n份,每份数据集记为DBk,k∈[1,n];由于每份数据集事务记录条数相等,每条事务记录的事务项数目不同,因此最终每份数据集DBk的大小不绝对相等。