一种基于Top-K频繁项集的挖掘算法制造技术

技术编号:22218816 阅读:46 留言:0更新日期:2019-09-30 01:13
本发明专利技术特别涉及一种基于Top‑K频繁项集的挖掘算法。该基于Top‑K频繁项集的挖掘算法,建立测试数据集T,项集I和最频繁项集数量变量N;循环遍历求解测试数据集T中每个数据项Ti的支持度TID集和支持度;初始化itemsList数组和border_sup;通过对数组itemsList的后续遍历将支持度TID集进行遍历赋值;如果支持度TID的绝对值大于系统支持的边界值,则利用AddItems函数得到项集L,利用函数InsertList将下标为t的元素插入到数组itemsList中,以静态双链表形式存储当前N个最频繁项集,实现频繁项集的分析。该基于Top‑K频繁项集的挖掘算法,基于贪心策略生成的频繁链表,抛弃了人工对于最小支持度的干预,只需一次遍历数据库操作,具有较强的可行性和时间及空间的优越性。

A mining algorithm based on Top-K frequent itemsets

【技术实现步骤摘要】
一种基于Top-K频繁项集的挖掘算法
本专利技术涉及数据仓库与数据挖掘
,特别涉及一种基于Top-K频繁项集的挖掘算法。
技术介绍
科学技术的发展及网络技术的提高使得人们能够提取的数据信息越来越多,如何从这些数据中挖掘出对社会有用的信息成为了急需要解决的问题。现如今,数据挖掘和仓库技术为运个难题提供了有效的解决办法,也因此数据仓库技术和数据挖掘技术成为各个领域争先研究的方向。关联规则(AssociationRule)是数据挖掘的重要组成部分,它被应用于发现数据库中的不同数据之间关联关系的重要工具。发现的这些数据可成为商业决策的一种依据,因为这些规则反应的是顾客购物的行为数据集。也正因为这一大因素,使得关联规则成为数据挖掘中最重要的、成熟的研究内容,而频繁项集的挖掘同时又是关联规则挖掘的核心步骤,所以频繁项集的挖掘被赋予了重要的意义。1、在进行挖掘的时候,会产生大量的不需要的待选的频繁项集,而需要把这些频繁项集存储到内存中,这样会占用和耗费大量的空间和时间,一种基于Top-K频繁项集的NFIMG挖掘算法可以避免处理支持度较小的候选频繁项集,从而减少耗费较多的存储空间和运行时间。2、传统挖掘算法在挖掘的时候每挖掘一次项集都需要对数据库进行一次扫描,然后通过项集的匹配来找到一个候选集合,这样的挖掘方法也会使得时间复杂度大大提高,一种基于Top-K频繁项集的NFIMG挖掘算法只需一次遍历数据库操作,大大减少了数据挖掘的时间复杂度。基于上述情况,本专利技术提出了一种基于Top-K频繁项集的挖掘算法。
技术实现思路
本专利技术为了弥补现有技术的缺陷,提供了一种简单高效的基于Top-K频繁项集的挖掘算法。本专利技术是通过如下技术方案实现的:一种基于Top-K频繁项集的挖掘算法,其特征在于,包括以下步骤:(1)建立测试数据集T,项集I和最频繁项集数量变量N;(2)扫描数据集T,求解测试数据集T中每个数据项Ti的支持度TID集和支持度,求解时采用循环遍历;(3)初始化itemsList数组和当前的边界支持度border_sup;(4)利用链表的后向指针next循环遍历构造数组itemsList;(5)通过对数组itemsList的后续遍历,将支持度TID集进行遍历赋值,并对边界度值进行判定;(6)如果初始化边界值与支持度TID集不存在包含关系,则输出提示信息,并跳出遍历循环,进程结束;否则,则将支持度TID的绝对值与系统支持的边界值进行对比;(7)如果支持度TID的绝对值不大于系统支持的边界值,则跳出遍历循环,进程结束;否则,则利用AddItems函数实现在数组itemsList中执行连接操作后得到的项集L,利用函数InsertList实现将下标为t的元素插入到数组itemsList中合适的位置,数组itemsList[N]以静态双链表形式存储当前N个最频繁项集,实现频繁项集的分析,进程结束。所述步骤(3)中,设置初始化参数静态双链表的头指针head=0,静态双链表的尾指针rear=0,当前的边界支持度border_sup=0,测试数据集T中的数据项Ti,i=0。所述步骤(4)中,循环遍历时设置循环次数即数组长度,测试数据集设置数组长度为12。所述步骤(7)中,将当前已求得的Top-K项集按照支持度降序存储到静态双链表中,在尚未连接的Top-K项集中选择支持度最高的两个频繁项集进行连接操作;在执行连接操作后,如果结果项集的支持度大于边界支持度,并且结果项集的长度大于2,则查找该结果项集是否存在;由于查找只须在等长项集中进行,设集合数组itemsSet[K]存储所有的等长频繁项集,其中K是潜在频繁项集的最大长度,itemsSet[i]表示所有长度为i的频繁项集的集合。所述步骤(7)中,数组itemsList[N]以静态双链表形式存储当前N个最频繁项集;为了便于查找支持度较高的两个项集进行连接,数组itemsList[N]中将N个最频繁项集降序排列;为了便于将连接后的结果项集插入到当前N个最频繁项集,同时删除当前N个最频繁项集中支持度最小的项集。所述数组itemsList[N]的结点结构包括item,count,TIDs,next和prior,其中items存储频繁项集,count存储该项集的支持度,TIDs存储该项集对应的事务ID列表,next为链表的后向指针,prior为链表的前向指针。所述步骤(7)中,AddItems函数通过itemsList[i].items、itemsList[i].count和itemsList[i].TIDs进行遍历赋值添加,循环遍历时依据数组边界进行边界控制。;AddItems函数在数组itemsList未填满时,只须将新项集追加到数组itemsList已有元素的末端;当数组itemsList已添满时,只须将新项集填入itemsList[N]的表尾元素并摘链。所述步骤(7)中,函数InsertList运算时,首先获取数据itemsList的链表的后向指针next节点值,若满足循环条件(s!=-1&&itemsList[s].count>itemsList[t].count),则循环进行数值插入操作;函数InsertList在查找到合适的位置后,插入操作只是修改静态双链表的相应指针。本专利技术的有益效果是:该基于Top-K频繁项集的挖掘算法,基于贪心策略生成的频繁链表,抛弃了人工对于最小支持度的干预,只需一次遍历数据库操作,使用生成即所得的挖掘方式进行Top-K频繁项集的挖掘,具有较强的可行性和时间及空间的优越性。附图说明附图1为本专利技术基于Top-K频繁项集的挖掘算法示意图。具体实施方式为了使本专利技术所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本专利技术进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。定义1:设I={I1,I2,…Im}是m个项的集合,T={T1,T2,…,Tn}是n个事务的集合,事务Ti(1≤i≤n)由事务ID和非空项集组成。对于项集如果Ti∈T(1≤i≤n),使得则称事务Ti包含项集X,或称项集X在事务Ti中。数据集T包含项集X的事务个数,称为项集X在数据集T中的支持度,记为sup(X),项集X包含项的个数称为该项集的长度,长度为k的项集记为k-项集。定义2:设Top-N={X1,X2,…,XN}是数据集T的N个项集,且若有sup(X)≤min{sup(X1),…,sup(XN)}成立,则称X1,X2,…,XN为数据集T的个最频繁项集,将min{sup(X1),…,sup(XN)}称为Top-N最频繁项集的边界支持度,记为border_sup。根据定义2,若将数据集T的所有项集按支持度降序排列,则Top-N由排在前N位的项集组成。记lk表示Top-N中位于第k个位置的项集(1≤k≤N),则border_sup是项集N的支持度。由于支持度等于border_sup的项集可能不只一个。因此,对于同一个数据集,不同的Top-N最频繁项集中支持度等于border_sup的项集可能不相同。该基于Top-K频繁项集的挖掘算法,包括以下步骤:(1)建立测试数据集T,项集I和最频繁项集数量变量N;(2)扫描数据本文档来自技高网...

【技术保护点】
1.一种基于Top‑K频繁项集的挖掘算法,其特征在于:包括以下步骤:(1)建立测试数据集T,项集I和最频繁项集数量变量N;(2)扫描数据集T,求解测试数据集T中每个数据项Ti的支持度TID集和支持度,求解时采用循环遍历;(3)初始化itemsList数组和当前的边界支持度border_sup;(4)利用链表的后向指针next循环遍历构造数组itemsList;(5)通过对数组itemsList的后续遍历,将支持度TID集进行遍历赋值,并对边界度值进行判定;(6)如果初始化边界值与支持度TID集不存在包含关系,则输出提示信息,并跳出遍历循环,进程结束;否则,则将支持度TID的绝对值与系统支持的边界值进行对比;(7)如果支持度TID的绝对值不大于系统支持的边界值,则跳出遍历循环,进程结束;否则,则利用AddItems函数实现在数组itemsList中执行连接操作后得到的项集L,利用函数InsertList实现将下标为t的元素插入到数组itemsList中合适的位置,数组itemsList[N]以静态双链表形式存储当前N个最频繁项集,实现频繁项集的分析,进程结束。

【技术特征摘要】
1.一种基于Top-K频繁项集的挖掘算法,其特征在于:包括以下步骤:(1)建立测试数据集T,项集I和最频繁项集数量变量N;(2)扫描数据集T,求解测试数据集T中每个数据项Ti的支持度TID集和支持度,求解时采用循环遍历;(3)初始化itemsList数组和当前的边界支持度border_sup;(4)利用链表的后向指针next循环遍历构造数组itemsList;(5)通过对数组itemsList的后续遍历,将支持度TID集进行遍历赋值,并对边界度值进行判定;(6)如果初始化边界值与支持度TID集不存在包含关系,则输出提示信息,并跳出遍历循环,进程结束;否则,则将支持度TID的绝对值与系统支持的边界值进行对比;(7)如果支持度TID的绝对值不大于系统支持的边界值,则跳出遍历循环,进程结束;否则,则利用AddItems函数实现在数组itemsList中执行连接操作后得到的项集L,利用函数InsertList实现将下标为t的元素插入到数组itemsList中合适的位置,数组itemsList[N]以静态双链表形式存储当前N个最频繁项集,实现频繁项集的分析,进程结束。2.根据权利要求1所述的基于Top-K频繁项集的挖掘算法,其特征在于:所述步骤(3)中,设置初始化参数静态双链表的头指针head=0,静态双链表的尾指针rear=0,当前的边界支持度border_sup=0,测试数据集T中的数据项Ti,i=0。3.根据权利要求1所述的基于Top-K频繁项集的挖掘算法,其特征在于:所述步骤(4)中,循环遍历时设置循环次数即数组长度,测试数据集设置数组长度为12。4.根据权利要求1所述的基于Top-K频繁项集的挖掘算法,其特征在于:所述步骤(7)中,将当前已求得的Top-K项集按照支持度降序存储到静态双链表中,在尚未连接的Top-K项集中选择支持度最高的两个频繁项集进行连接操作;在执行连接操作后,如果结果项集的支持度大于边界支持度,并且结果项集的长度大于2,则查找该结果项集是否存在;由于查找只须在等长项集中进行...

【专利技术属性】
技术研发人员:朱波邹建军杨培强
申请(专利权)人:浪潮软件集团有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1