基于分类树的最大多样频繁模式的挖掘方法及装置与流程

文档序号:13483447阅读:150来源:国知局
本发明涉及数据挖掘
技术领域
:,尤其涉及一种基于分类树的最大多样频繁模式的挖掘方法及装置。
背景技术
::在数据挖掘领域,频繁模式挖掘是在给定的交易数据集中发掘反复同时出现的联系,且频繁模式挖掘是数据挖掘领域的一个重要研究方向,频繁模式的一个最经典、最常用的应用就是购物车分析。购物车中有很多商品,每件商品都是一个元素项,每个购物车都是一个集合,所有的购物车就形成了一个序列集合,通过挖掘分析这个序列集合中的频繁模式,零售商可以发现有哪些商品经常同时被购买,从而能够有效帮助零售商进行营销和决策。频繁模式挖掘所面临的一个重要问题是在处理较大数据集时,生成的数量庞大的频繁模式难以计算和存储。因此,在这个研究方向有了两个研究分支,分别是:闭频繁项集(closedfrequentitemset)挖掘和最大频繁项集(maximalfrequentitemset)挖掘。已有的频繁模式挖掘方法有apriori算法、fp-growth算法、fp-max算法等。apriori算法在挖掘频繁模式时通过反复扫描数据集,并检测所产生的候选集是否是频繁的,从而来挖掘所有的频繁模式;fp-growth设计一种压缩数据结构fp-tree,并使用一种模式增长的递归算法,依次挖掘所有的频繁模式;fpmax是只关注最大频繁模式,它和fp-growth类似使用fp-tree的数据结构,在递归挖掘频繁模式的过程中,加入子集检测,使得挖掘的频繁模式都是最大频繁模式。然而,在很多情况下给定的事务数据库中的元素是可以分类的,上述的方法均忽略了元素的类型属性,只将其作为简单的符号来处理。因此,如何将元素的类型属性应用在频繁模式挖掘中是目前亟待解决的问题。技术实现要素:本发明的主要目的在于提供一种基于分类树的最大多样频繁模式的挖掘方法及装置,旨在解决现有技术中元素的类型属性无法应用在频繁模式挖掘中的技术问题。为实现上述目的,本发明第一方面提供一种基于分类树的最大频繁模式的挖掘方法,包括:对给定的事务数据库进行扫描,统计出所述事务数据库中每一个元素出现的次数,并按照出现次数从大到小的顺序对所述事务数据库中的元素进行排序,得到元素的相对序列,所述事务数据库中包含多条记录,每一条记录包含至少一个元素;对所述事务数据库进行扫描,根据所述元素的相对序列及给定的最小支持度阈值,对所述事务数据库中的每一条记录进行处理,生成频繁模式树fp*-tree;利用所述fp*-tree及给定的所述事务数据库包含的元素的分类树,进行最大多样频繁模式的挖掘,得到多样性排在前k的最大多样频繁模式。为实现上述目的,本发明第二方面还提供一种基于分类树的最大频繁模式的挖掘装置,包括:第一扫描模块,用于对给定的事务数据库进行扫描,统计出所述事务数据库中每一个元素出现的次数,并按照出现次数从大到小的顺序对所述事务数据库中的元素进行排序,得到元素的相对序列,所述事务数据库中包含多条记录,每一条记录包含至少一个元素;第二扫描模块,用于对所述事务数据库进行扫描,根据所述元素的相对序列及给定的最小支持度阈值,对所述事务数据库中的每一条记录进行处理,生成频繁模式树fp*-tree;第一挖掘模块,用于利用所述fp*-tree及给定的所述事务数据库包含的元素的分类树,进行最大多样频繁模式的挖掘,得到多样性排在前k的最大多样频繁模式。本发明提供一种基于分类树的最大多样频繁模式的挖掘方法,将元素的类型通过分类树的方式结合至最大多样频繁模式的挖掘中,关注各元素在类型上的差异,能够挖掘到传统方法不容易发现的关联关系,使得能够有效的将元素的类型属性应用在频繁模式挖掘中,从而挖掘元素之间的关联、相关性和其他有趣的联系。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例中分类树的示意图;图2为本发明实施例中基于分类树的最大多样频繁模式的挖掘方法的流程示意图;图3为本发明实施例中fp*-tree的示意图;图4为本发明另一实施例中fp*-tree的生成方法的流程示意图;图5为本发明另一实施例中最大多样频繁模式挖掘的流程示意图;图6为本发明另一实施例中最大多样频繁模式挖掘的具体流程示意图;图7为本发明实施例中基于分类树的最大多样频繁模式的挖掘装置的程序模块的示意图;图8为本发明另一实施例中第二扫描模块的细化程序模块的结构示意图;图9为本发明另一实施例中第一挖掘模块的细化程序模块的结构示意图;图10为本发明另一实施例中第二挖掘模块903的细化程序模块的结构示意图。具体实施方式为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明实施例中,首先定义了最大多样频繁模式的概念,并提出了最大多样频繁模式挖掘问题的具体定义:设i是一个独立的元素,也可以称作项(item)的有限集合,i={i1,i2,......,im},d是给定的事务数据库d=(t1,t2,......,tn),该事务数据库包含多条记录,且每一条记录tj∈d(1≤j≤n)都是集合i的一个子集,一个包含l个元素的集合x={i1,i2,......,il},且被称为长度为l的模式x,或者项集(itemset)。一个模式x的支持数表示在事务数据库d中包含模式x的记录的个数,记作s(x)。例如,一个模式x={a、b、c},且该模式x在事务数据库中出现了350次(包括模式x是一条记录,及模式x是一条记录的一个子集两种情况),则称模式x的支持数为350。通常也可以使用在事务数据库d中包含模式x的记录数与总的记录数的比值来表示模式x的支持度。例如,在事务数据库中,模式x={a、b、c}的出现次数为350次,则确定模式x的支持数为350,且若事务数据库中共有10000条记录,则模式x的支持度是:350/10000=0.035。对于给定的常数δ≥1,如果模式x的支持数s(x)=δ,则确定在事务数据库d中模式x是δ-occurrent模式。即表明,对于一个模式x,若该模式x的支持数等于给定的常数,则确定该模式x为δ-occurrent模式。对于给定的常数1≤σ≤|d|,如果模式x的支持数s(x)≥δ,则确定在数据库d中模式x为σ-frequent模式。即表明,对于一个模式x,若该模式x的支持数大于给定的常数,则确定该模式x为σ-frequent模式。其中,σ-frequent模式也可以称为频繁模式。其中,常数δ是最小支持度阈值,用于在研究的问题中确定一个模式是否是频繁模式。其中,支持度和支持数均是用来度量一个模式在事务数据库d中出现的频繁程度。对于事务数据库d中的一个σ-frequent模式的模式x,如果该事务数据库d中不存在σ-frequent模式x′使得成立,即不存在模式x的真超集(父集),则称模式x为最大频繁模式。例如:若模式x={a,b,c,d},是事务数据库d中的一个σ-frequent模式,如果事务数据库d中存在另外一个σ-frequent模式x′={a,b,b,d,e},模式x′是模式x的真超集。则该模式x就不能称为最大频繁模式,因为至少还存在模式x′比它大。基于最大频繁模式,下面将定义最大多样性频繁模式,可以预先给定要挖掘的最大多样性频繁模式的个数,例如为k个,则一个模式x若属于前k个最大多样频繁模式,必须满足以下两个条件:i:模式x是最大频繁模式,即对于给定的事务数据库d和最小支持度δ,x的支持数s(x)≥δ,以通过该约束条件保证模式x是频繁的,并且不存在x的超集x′使得s(x′)>δ成立,以通过这个约束条件保证模式x是最大的;ii:基于本发明实施例中的基于分类树的最大多样频繁模式的挖掘方法,多样性大于模式x的多样性模式的个数不超过k。也就是说,如果将所有的模式按照它们的多样性从大到小排列,模式x必须是排在前k的,这个约束条件是保证模式x是前k个。其中,分类树是用来定义和求解模式的多样性的,具体,请参阅图1,为本发明实施例中分类树的示意图,该分类树是一种层次型的树型数据结构,在分类树中,每一个非叶子节点表示一种类型,每一个叶子节点表示事务数据库中的一个元素。非叶子节点的层次越高,即越靠近根节点,其表示的分类越抽象,层次越低,其表示的分类越具体,每一个中间节点都是其父节点所表示类型的子类型。在分类树的实际运用中,可以根据实际情况需要给分类树的每一个分支赋一个权重值w,在本发明介绍中,指定w1=w2.......=wn=1。可以理解的是,在事务数据库确定之后,则可以利用该事务数据库中的所有元素及元素的类型的子节点及父节点构成该事务数据库的分类树。例如,若事务数据库中包含100中元素,则生成的分类树中包含100个叶子节点,且每一个叶子节点都代表一种元素。可以理解的是,由于分类树是利用元素及元素的类型构成的,因此,在最大多样频繁模式的挖掘中使用分类树,则表明在挖掘过程中考虑到了元素的类型。在本发明实施例中,是在给定的事务数据库、最小支持度阈值、分类树和最大多样频繁模式的个数的情况下,挖掘最大多样频繁模式的。基于上述定义及解释,下面将描述本发明实施例中,基于分类树的最大多样频繁模式的挖掘方法。请参阅图2,为本发明实施例中基于分类树的最大多样频繁模式的挖掘方法的流程示意图,包括:步骤201、对给定的事务数据库进行扫描,统计出事务数据库中每一个元素出现的次数,并按照出现次数从大到小的顺序对所述事务数据库中的元素进行排序,得到元素的相对序列;在本发明实施例中,事务数据库中包含多条记录,其每一条记录都包含至少一个元素,其中,记录之间可以有相同的元素,也可以有不同的元素,以购物构成的数据为例,其中,购物构成的数据可以存储在购物数据库中,该购物数据库中包含多条购物记录,且每条购物记录中包含至少一个商品,其中,商品即为上述的元素,购物记录即为上述的记录。其中,将对给定的事务数据库进行扫描,统计出该事务数据库中每一个元素出现的次数,并按照次数从大到小的顺序对事务数据库中的元素进行排序,得到元素的相对序列。例如,若事务数据库中总共有1万条记录,且总共有100个元素,则将确定该100个元素在事务数据库中出现的次数,并按照出现的次数对该100个元素进行排列。步骤202、对事务数据库进行扫描,根据所述元素的相对序列及给定的最小支持度阈值,对事务数据库中的每一条记录进行处理,生成fp*-tree;为了更好的实现本发明实施例中最大多样频繁模式的挖掘,本发明设计了一种压缩的数据结构,即频繁模式树(fp*-tree),fp*-tree是前缀树的一种扩展,由树结构和headertable两部分组成,fp*-tree只存储模式挖掘中的关键信息,在该树结构中,每一个树节点都包含label域、count域和指针域,其中,label域是指节点表示的元素的标识,count域表示元素在事务数据库中出现的次数,指针域指向下一个节点。请参阅图3,为本发明实施例中fp*-tree的示意图,在fp*-tree中,从根节点到树种任意一个节点的路径所构成的模式都是事务数据库中的某条记录的子集,而该路径的末端节点的count就指示该模式在事务数据库中出现的次数。fp*-tree中的headertable是一种二维的线性表结构,线性表的每一个节点由item、freq.、nodelinks和postinglists四个域组成。其中,item域表示该线性表节点所指示的元素,如图3中的e、c、a、g、h、b、f、d均为元素,freq.表示该元素在事务数据库中出现的次数,如图3中,e、c、a出现的次数均为8次,g出现的次数为5次,b、f、d出现的次数均为2次。nodelinks是指向fp*-tree的索引链,该索引链将fp*-tree的树结构中所有标记为item的节点连在一起,postinglists是键-值对的数据结构,键表示和当前线性表节点所指示的元素在同一记录的元素,值表示当前线性表节点与键指示的节点同时出现的记录数,如图3中,root中各个节点中的键-值对e:8,c:6,c:2,g:4等等。在本发明实施例中,在完成一次扫描得到元素的相对序列之后,将对该事物数据再次进行扫描,在扫描的过程中根据元素的相对序列及给定的最小支持度阈值,对事务数据库中的每一条记录进行处理,生成上述的fp*-tree。基于图2所示实施例,在另一实施例中,请参阅图4,为本发明另一实施例中fp*-tree的生成方法的流程示意图,即为图2所示的步骤202细化步骤的流程示意图,包括:步骤401、按照元素的相对序列中各元素的排列顺序,对事务数据库中的每一条记录中的元素进行排序,使得每一条记录中的元素均按照出现次数从大到小的顺序排列,构成第一记录集合;其中,若事务数据库中有10000条记录,则对该10000条记录中的每一条记录中的元素按照元素的相对序列中各元素的排列顺序进行排序,例如,若各元素的排列顺序为:a、b、c、d、e、f、g、h、i、g、k、l、m、n,一条记录为{a、m、d、g、h},则对该条记录按照上述顺序进行排序,且得到新的记录为{a、d、g、h、m}。步骤402、利用给定的最小支持度阈值对第一记录集合中的每一条记录进行筛选,删除每一条记录中出现次数小于最小支持度阈值的元素,使得每一条记录中的元素均按照从大到小的顺序排列,且出现次数均大于或等于最小支持度阈值,构成第二记录集合;例如,对于一条出现次数按照从大到小排列的记录,如记录t为{a、b、c、d、e、f、g、h},若其中g、h的出现次数小于最小支持度阈值,则删除该记录中的g、h,得到按照出现次数从大到小排列,且出现次数均大于或等于最小支持度阈值的记录,为{a、b、c、d、e、f}。其中,该最小支持度阈值是一个判定模式是不是频繁的数值,利用该最小支持度阈值进行筛选,能够确保模式都是频繁的。步骤403、利用第二记录集合,元素的相对序列及预置的fp*-tree构造函数,生成fp*-tree。在本发明实施例中,对于第二记录集合中每一条记录t,都可以通过[p/a]的格式表示,其中,p表示记录t中的第一个元素,也为该记录t中出现次数最大的元素,a表示记录t中除p代表的元素以外的其他元素,且a中的所有元素也是按照出现次数从大到小的顺序排列的。其中,fp*-tree构造函数具体可以表示为递归调用insert_tree([p/a],r)函数,且最初的fp*-tree设置有一个根节点(root),可以利用该递归调用insert_tree([p/a],r)函数对第二记录集合中的每一条记录进行处理,并将每一条记录中的元素插入至fp*-tree中,以生成最终的fp*-tree。具体的:若记录t中包含元素e、c、a,则该记录可以表示为[p/a],其中,p表示元素e,a包含元素c、a。首先需要插入的是元素e,则先在fp*-tree的根节点的下一级子节点中查找是否存在代表元素e的子节点ne,若存在,则将该子节点ne的计数值加1,若不存在,则在该根节点的下一级子节点中增加子节点ne,并设置该子节点ne的初始值为1。通过该种方式,则可以将记录t中的元素e插入到fp*-tree中。接下来,在记录t中,需要插入的元素为c,则在子节点ne的下一级子节点中查找是否存在代表元素c的子节点nc,若存在,则将该子节点nc的计数值加1,若不存在,在子节点ne的下一级子节点中增加子节点nc,并设置该子节点nc的初始值为1,通过该种方式,可以将记录t中的元素c插入到fp*-tree中。接下来,在记录t中,需要插入的元素为a,则在子节点nc的下一级子节点中查找是否存在代表元素a的子节点na,若存在,则将该子节点na的计数值加1,若不存在,则在子节点nc的下一级子节点中增加子节点na,并设置该子节点na的初始值为1,通过该种方式,可以将t中的元素c插入到fp*-tree中。对于记录t,可以通过上述方式,将记录t中的所有元素依次插入到fp*-tree中,且对于第二记录集合中的所有记录,都将按照与记录t相同的处理方式依次进行处理,以得到最后的fp*-tree。可以理解的是,图3仅仅为fp*-tree中的一种示意图,并不对本发明实施例中的技术方案造成限定。步骤203、利用fp*-tree及给定的事务数据库中包含的各元素的分类树,进行最大多样频繁模式的挖掘,得到多样性排在前k的最大多样频繁模式。基于图2所示实施例,在另一实施例中,请参阅图5,为本发明另一实施例中最大多样频繁模式挖掘的流程示意图,即图5展示了步骤203的具体实现过程,包括:步骤501,根据给定的最小支持度阈值及fp*-tree,计算fp*-tree的headertable中每一个元素的频繁模式的多样性上限;其中,计算元素的频繁模式多样性上限需要用到fp*-tree的postinglists。在fp*-tree的headertable中的每一个元素都有一个位于postinglists中的一个list。这个list中是一个个键值对,在计算多样性上限时需要先进行筛选操作,将每个键值对的值(也就是键代表的元素出现的次数)与给定的最小支持度阈值进行比较,保留大于或等于最小支持度阈值的键值对。将保留下来的键值对的所有的键代表的元素和当前headertabel的元素合并作为一个模式,结合分类树计算这个模式的多样性即是多样性上限(这里计算多样性的方法和步骤603相同)。例如在图3中,假设给定的最小支持度阈值是2,当计算headertable中d的多样性上限时,会筛选出(c:2)(a:2),而(e:1)(g:1)由于它们的值小于2,会被剔除,最后保留c、a和d一起作为一个模式{c,a,d},然后结合分类树计算多样性,计算结果即是元素d的频繁模式多样性上限。步骤502、按照多样性上限从大到小的顺序,对fp*-tree的headertable中的所有元素进行排序,得到多样性元素的相对序列;步骤503、根据多样性元素的相对序列、预置的最大频繁模式挖掘算法及分类树,进行最大多样性频繁模式的挖掘,得到多样性排在前k的最大多样频繁模式。其中,最大频繁模式挖掘算法可以是fpmax算法,且挖掘得到的是最大频繁模式,为了得到最大多样性频繁模式,可以利用分类树进行进一步挖掘。具体的,基于图5所示实施例,在另一实施例中,请参阅图6,为本发明另一实施例中图5所示步骤503的细化步骤的流程示意图,即详细描述最大多样性频繁模式的挖掘过程,包括:步骤601、判断多样性元素的相对序列中第i个元素的多样性上限是否大于或等于多样性参考值;其中,对于多样性元素的相对序列,将从第1个元素开始进行处理,例如,若该多样性元素的相对序列为a、b、c、d、e、f、h,则从第1个元素,即元素a开始,将该元素a与多样性参考值进行比较,以判断该多样性元素的相对序列中的第1个元素,即元素a的多样性上限是否大于或等于多样性参考值。由于需要按照顺序对多样性元素的相对序列中的元素进行处理,则使用第i个元素的方式指代某一个具体的元素,其中,i初始值为1,且若多样性元素的相对序列中包含n个元素,则该i的值将从1开始每次增大1,直至得到前k个最大多样性频繁模式,或者直至i=n。其中,多样性参考值的初始值是预先设置的,且在处理的过程中会根据需要重新为该多样性参考值进行赋值。步骤602、若大于或等于多样性参考值,则利用预置的fpmax算法挖掘第i个元素的最大频繁模式,得到第i个元素的最大频繁模式的集合;其中,利用fpmax算法进行最大频繁模式的挖掘是现有技术,此处不做赘述。可以理解的是,在实际应用中还可以使用其他的最大频繁模式的挖掘算法,此处不做限定。其中,第i个元素的最大频繁模式的集合中至少包含一个最大频繁模式。步骤603、根据分类树,确定第i个元素的最大频繁模式的集合中每一个最大频繁模式的多样性;在本发明实施例中,对于第i个元素的最大频繁模式的集合,将确定该集合中每一个最大频繁模式的多样性,具体的,包括以下步骤a和步骤b:步骤a:利用分类树确定最大频繁模式的集合中,每一个最大频繁模式的最小生成树;例如,若第i个元素的最大频繁模式的集合中包含10个最大频繁模式,则将分别确定该10个最大频繁模式的最小生成树。其中,对于给定的最大频繁模式和分类树,该最大频繁模式的最小生成树定义为分类树中以最大频繁模式中的元素为叶子节点、最低公共祖先节点为根节点的子树,如图1所示,分类树中阴影部分是最大频繁模式x的最小生成树,其中,x={a,c,f}。以图1所示的分类树为例,对于最大频繁模式x,元素a可以表示为code(a)={c7c4c2},同理,code(c)={c8c4c2},code(f)={c9c5c2},则最大频繁模式x的最小生成树可以表示为{code(a)={c7c4c2},code(c)={c8c4c2},code(f)={c9c5c2}}。可以使用相同的方式,得到的第i个元素的最大频繁模式的集合中各个最大频繁模式的最小生成树。步骤b、分别利用每一个最大频繁模式的最小生成树,计算每一个最大频繁模式的分支数,将每一个最大频繁模式的分支数与模式长度的商分别作为每一个最大频繁模式的多样性。其中,对于第i个元素的最大频繁模式集合中的每一个最大频繁模式,都将利用其最小生成树,计算分支数,并将每一个最大频繁模式的分支数与模式长度的商作为相应的最大频繁模式的多样性。其中,模式长度是指最大频繁模式中包含的元素的个数,例如,对于最大频繁模式x,将计算该最大频繁模式x的分支数,并利用该分支数除以元素个数得到商,即为最大频繁模式x的多样性。其中,计算分支数具体可以是:设置指针变量pos,该pos表示数组的位置,例如,在程序中可以是用x[n]来存储分类树根节点到叶子节点的路径,并通过x[1]、x[2]、x[3]……x[n]来访问数组中的元素,本处是伪代码,为了方便编号0到n。在本发明实施例中,pos是一个变量,用来辅助访问最小生成树中的元素。x[pos]表示最小生成树中各元素中的第pos个节点。pos的初始值为1,表示从最小生成树中各元素所在的叶子节点开始,同时还需要确定最大频繁模式中的元素个数,将该元素个数作为分支数的初始值。此外,还需要确定最大频繁模式的最小生成树中叶节点到根节点的路径包含的节点个数,并将该节点个数作为长度值l。步骤a:判断pos的值是否小于或等于长度值l;执行步骤b或者步骤e;步骤b:若小于或等于长度值l,判断pos指向的各个元素中的第pos个节点是否完全相同;执行步骤c或者步骤d;步骤c:若不完全相同,将确定各元素的第pos个节点处不相同的节点的个数,并将该个数与分支数相加,将相加之后的和作为新的分支数,并令pos加1,即指向最大频繁模式中各元素的下一个节点,返回执行步骤a;步骤d:若完全相同,则将分支数确定为最后的分支数;步骤e:若大于长度值l,则结束分支数的确定。为了更好的理解上述分支数的确定,下面以最大频繁模式x={a,b,c}为例进行描述,如下:该最大频繁模式x的最小生成树为{code(a)={c7c4c2},code(c)={c8c4c2},code(f)={c9c5c2}},由于元素a、c、f的路径的节点个数均为3,则长度值为4,其中,该最大频繁模式包含三个元素,则分支数的初始值为3。在pos为1时,该pos的值小于长度值3,则确定在元素a、c、f路径上的第1个节点是否完全相同,由于元素a、c、f路径上的第1个节点分别为c7、c8、c9,是三个不同节点,则将分支数加上3,即新的分支数=3+3=6,并令pos为2。在pos为2时,该pos的值小于长度值3,则确定在元素a、c、f路径上的第2个节点是否完全相同,由于元素a、c、f路径上的3个节点分别为c4、c4、c5,具有两个不同的节点,即c4和c5,此时,将分支数加上2,即新的分支数=6+2=8,并令pos为3。在pos为3时,该pos的值等于长度值3,则确定在元素a、c、f路径上的第3个节点是否完全相同,由于元素a、c、f路径上的3个节点均为c2,则表明第3个节点是完全相同的,此时,可以确定最终的分支数为8。进一步的,由于最大频繁模式x的元素个数为3,则该最大频繁模式x的多样性为8与3的商。在本发明实施例中,对于第i个元素的最大频繁模式集合中的每一个最大频繁模式,都将使用上述的方式确定其分别对应的多样性。步骤604,将第i个元素的最大频繁模式的集合中的各个最大频繁模式按照多样性从大到小的顺序,插入候选集中,使得候选集中的最大频繁模式均按照多样性从大到小的顺序排列;步骤605、若候选集中最大频繁模式的个数大于或等于k,则将第k个最大频繁模式的多样性与多样性参考值进行比较;步骤606,若第k个最大频繁模式的多样性大于多样性参考值时,则更新多样性参考值,将第k个最大频繁模式的多样性作为更新后的多样性参考值,令i=i+1,返回执行步骤601,否则直接返回执行步骤601,不更新多样性参考值;步骤607,若第i个元素的多样性上限小于多样性参考值,则将候选集中排在前k的k个最大频繁模式确定为最大多样性频繁模式。可以理解的是,其中,若候选集中的最大频繁模式的个数小于k,则直接令i=i+1,并返回执行步骤601。在本发明实施例中,基于本发明实施例挖掘到的最大多样频繁模式与传统方法挖掘的最大频繁模式相比,结果更具有多样性,能够挖掘到传统方法不容易发现的关联关系。此外,本发明实施例中,通过使用多样性上限使得在挖掘最大多样频繁模式时,相对于传统方法,在数据量较大时,不需要挖掘所有的频繁模式或者最大频繁模式,具有更高的效率。需要指明的是在特定的事务数据库和用户给定参数下使用本发明方法进行最大多样频繁模式挖掘,可能存在最终确定的最大多样性频繁模式数量大于k的情况,如步骤607中候选集中最终存在多个频繁模式的多样性并列第k大,亦可能存在最终确定的最大多样性频繁模式数量小于k的情况,如步骤h中最终候选集中的频繁模式的数量不足k个,这都属于本发明实施例的内容。需要说明的是,本发明实施例中的方法使用真实的超市交易数据库作为事务数据库进行了反复测试,超市交易数据库包含3040715条交易记录,总共涉及37984件商品和1947个分类,通过本发明实施例中方法挖掘到的最大多样频繁模式的数量及挖掘时间相对于现有技术都具有明显的优势。在本发明实施例是对现有的频繁模式挖掘问题和方法的扩展,在现有的研究基础上提出最大多样频繁模式的概念,并提供了最大多样频繁模式的挖掘方法。本发明所要解决的问题是挖掘有效的事务数据库中的最大多样频繁模式,从而挖掘数据之间的关联、相关性和其他有趣的联系,本发明实施例中所解决的最终目标是在给定事务数据库,最小支持度阈值、分类树及期望挖掘的最大多样频繁模式的个数的情况下,快速挖掘最大多样频繁模式。相对于现有技术,本发明实施例中的基于分类树的最大多样频繁模式的挖掘方法不仅关注元素是否频繁出现,同时也关注各元素在类型上的差异,且这种在类型上具有较大差异的频繁模式往往是在挖掘前难以预料到的。例如:在处理超市交易数据时,可以发现{苹果、香蕉、葡萄}是一个频繁模式,但是这个结果并不会让人意外,因为这个模式中的三个元素都是水果,它们同时出现在购物车中是很容易理解的。而使用本发明实施例中的技术方案,可以发现频繁模式{啤酒、尿不湿},啤酒和尿不湿这两个元素在类别上的差异特别大,看似完全不相关的两件商品,却也构成了频繁模式,这种结果是让人很意外的。所以本发明实施例中提出的方法侧重于挖掘类型上差异很大的频繁模式,且类型上差异很大的频繁模式往往是出乎人意料,且不容易想到的,满足用户对频繁模式多样性的要求,同时填补了这方面的研究空白。请参阅图7,为本发明实施例中基于分类树的最大多样频繁模式的挖掘装置的程序模块的示意图,该装置包括:第一扫描模块701,用于对给定的事务数据库进行扫描,统计出所述事务数据库中每一个元素出现的次数,并按照出现次数从大到小的顺序对所述事务数据库中的元素进行排序,得到元素的相对序列,所述事务数据库中包含多条记录,每一条记录包含至少一个元素;在本发明实施例中,事务数据库中包含多条记录,其每一条记录都包含至少一个元素,其中,记录之间可以有相同的元素,也可以有不同的元素,以购物构成的数据为例,其中,购物构成的数据可以存储在购物数据库中,该购物数据库中包含多条购物记录,且每条购物记录中包含至少一个商品,其中,商品即为上述的元素,购物记录即为上述的记录。其中,将对给定的事务数据库进行扫描,统计出该事务数据库中每一个元素出现的次数,并按照次数从大到小的顺序对事务数据库中的元素进行排序,得到元素的相对序列。例如,若事务数据库中总共有1万条记录,且总共有100个元素,则将确定该100个元素在事务数据库中出现的次数,并按照出现的次数对该100个元素进行排列。第二扫描模块702,用于对所述事务数据库进行扫描,根据所述元素的相对序列及给定的最小支持度阈值,对所述事务数据库中的每一条记录进行处理,生成频繁模式树fp*-tree;为了更好的实现本发明实施例中最大多样频繁模式的挖掘,本发明设计了一种压缩的数据结构,即频繁模式树(fp*-tree),fp*-tree是前缀树的一种扩展,由树结构和headertable两部分组成,fp*-tree只存储模式挖掘中的关键信息,在该树结构中,每一个树节点都包含label域、count域和指针域,其中,label域是指节点表示的元素的标识,count域表示元素在事务数据库中出现的次数,指针域指向下一个节点。请参阅图3,为本发明实施例中fp*-tree的示意图,在fp*-tree中,从根节点到树种任意一个节点的路径所构成的模式都是事务数据库中的某条记录的子集,而该路径的末端节点的count就指示该模式在事务数据库中出现的次数。fp*-tree中的headertable是一种二维的线性表结构,线性表的每一个节点由item、freq.、nodelinks和postinglists四个域组成。其中,item域表示该线性表节点所指示的元素,如图3中的e、c、a、g、h、b、f、d均为元素,freq.表示该元素在事务数据库中出现的次数,如图3中,e、c、a出现的次数均为8次,g出现的次数为5次,b、f、d出现的次数均为2次。nodelinks是指向fp*-tree的索引链,该索引链将fp*-tree的树结构中所有标记为item的节点连在一起,postinglists是键-值对的数据结构,键表示和当前线性表节点所指示的元素在同一记录的元素,值表示当前线性表节点与键指示的节点同时出现的记录数,如图3中,root中各个节点中的键-值对e:8,c:6,c:2,g:4等等。在本发明实施例中,在完成一次扫描得到元素的相对序列之后,将对该事物数据再次进行扫描,在扫描的过程中根据元素的相对序列及给定的最小支持度阈值,对事务数据库中的每一条记录进行处理,生成上述的fp*-tree。基于图7所示的实施例,在另一实施例中,请参阅图8,为本发明另一实施例中第二扫描模块702的细化程序模块的结构示意图,包括:第一排序模块801,用于按照所述元素的相对序列中各元素的排列顺序,对所述事务数据库中的每一条记录中的元素进行排序,使得所述每一条记录中的元素均按照出现次数从大到小的顺序排列,构成第一记录集合;其中,若事务数据库中有10000条记录,则对该10000条记录中的每一条记录中的元素按照元素的相对序列中各元素的排列顺序进行排序,例如,若各元素的排列顺序为:a、b、c、d、e、f、g、h、i、g、k、l、m、n,一条记录为{a、m、d、g、h},则对该条记录按照上述顺序进行排序,且得到新的记录为{a、d、g、h、m}。筛选模块802,用于利用给定的最小支持度阈值对所述第一记录集合中的每一条记录进行筛选,删除所述每一条记录中出现次数小于所述最小支持度阈值的元素,使得每一条记录中的元素均按照出现次数从大到小的顺序排列,且出现次数均大于或等于所述最小支持度阈值,构成第二记录集合;例如,对于一条出现次数按照从大到小排列的记录,如记录t为{a、b、c、d、e、f、g、h},若其中g、h的出现次数小于最小支持度阈值,则删除该记录中的g、h,得到按照出现次数从大到小排列,且出现次数均大于或等于最小支持度阈值的记录,为{a、b、c、d、e、f}。其中,该最小支持度阈值是一个判定模式是不是频繁的数值,利用该最小支持度阈值进行筛选,能够确保模式都是频繁的。生成模块803,用于利用所述第二记录集合、所述元素的相对序列及预置的fp*-tree构造函数,生成所述fp*-tree。在本发明实施例中,对于第二记录集合中每一条记录t,都可以通过[p/a]的格式表示,其中,p表示记录t中的第一个元素,也为该记录t中出现次数最大的元素,a表示记录t中除p代表的元素以外的其他元素,且a中的所有元素也是按照出现次数从大到小的顺序排列的。其中,fp*-tree构造函数具体可以表示为递归调用insert_tree([p/a],r)函数,且最初的fp*-tree设置有一个根节点(root),可以利用该递归调用insert_tree([p/a],r)函数对第二记录集合中的每一条记录进行处理,并将每一条记录中的元素插入至fp*-tree中,以生成最终的fp*-tree。具体的:若记录t中包含元素e、c、a,则该记录可以表示为[p/a],其中,p表示元素e,a包含元素c、a。首先需要插入的是元素e,则先在fp*-tree的根节点的下一级子节点中查找是否存在代表元素e的子节点ne,若存在,则将该子节点ne的计数值加1,若不存在,则在该根节点的下一级子节点中增加子节点ne,并设置该子节点ne的初始值为1。通过该种方式,则可以将记录t中的元素e插入到fp*-tree中。接下来,在记录t中,需要插入的元素为c,则在子节点ne的下一级子节点中查找是否存在代表元素c的子节点nc,若存在,则将该子节点nc的计数值加1,若不存在,在子节点ne的下一级子节点中增加子节点nc,并设置该子节点nc的初始值为1,通过该种方式,可以将记录t中的元素c插入到fp*-tree中。接下来,在记录t中,需要插入的元素为a,则在子节点nc的下一级子节点中查找是否存在代表元素a的子节点na,若存在,则将该子节点na的计数值加1,若不存在,则在子节点nc的下一级子节点中增加子节点na,并设置该子节点na的初始值为1,通过该种方式,可以将t中的元素c插入到fp*-tree中。对于记录t,可以通过上述方式,将记录t中的所有元素依次插入到fp*-tree中,且对于第二记录集合中的所有记录,都将按照与记录t相同的处理方式依次进行处理,以得到最后的fp*-tree。可以理解的是,图3仅仅为fp*-tree中的一种示意图,并不对本发明实施例中的技术方案造成限定。第一挖掘模块703,用于利用所述fp*-tree及给定的所述事务数据库包含的元素的分类树,进行最大多样频繁模式的挖掘,得到多样性排在前k的最大多样频繁模式。基于图7所示实施例,在另一实施例中,请参参阅图9,为本发明另一实施例中第一挖掘模块703的细化程序模块的结构示意图,包括:第一计算模块901,用于根据给定的最小支持度阈值及所述fp*-tree,计算所述fp*-tree的headertable中的每一个元素的频繁模式的多样性上限;第二排序模块902,用于按照多样性上限从大到小的顺序,对所述fp*-tree的headertable中的所有元素进行排序,得到多样性元素的相对序列;第二挖掘模块903,用于根据所述多样性元素的相对序列、预置的最大频繁模式挖掘算法及所述分类树,进行最大多样性频繁模式的挖掘,得到多样性排在前k的最大多样频繁模式。基于图9所示实施例,在另一实施例中,请参阅图10,为本发明另一实施例中第二挖掘模块903的细化程序模块的结构示意图,包括:判断模块1001,用于判断所述多样性元素的相对序列中第i个元素的多样性上限是否大于或等于多样性参考值,所述i的初始值为1,所述多样性参考值的初始值为0;第三挖掘模块1002,用于若大于或等于预置的多样性参考值,则利用预置的fpmax算法挖掘所述第i个元素的最大频繁模式,得到第i个元素的最大频繁模式的集合;第一确定模块1003,用于根据所述分类树,确定所述最大频繁模式的集合中每一个最大频繁模式的多样性;插入模块1004,用于按照多样性从大到小的顺序,将所述第i个元素的最大频繁模式的集合中各最大频繁模式插入至候选集中,使得候选集中的最大频繁模式均按照多样性从大到小的顺序排列;比较模块1005,用于若所述候选集中最大频繁模式的个数大于或等于k,则将第k个最大频繁模式的多样性与所述多样性参考值进行比较;更新返回模块1006,用于若所述第k个最大频繁模式的多样性大于或等于所述多样性参考值,则更新所述多样性参考值,将所述第k个最大频繁模式的多样性作为更新后的所述多样性参考值,令i=i+1,返回执行所述判断模块1001,若所述第k个最大频繁模式的多样性小于所述多样性参考值,则直接返回执行所述判断模块1001;第二确定模块1007,用于返回算法最终挖掘到的多样性排在前k最大多样频繁模式集合,如果模块1001在执行过程中判断到第i个元素的多样性上限小于多样性参考值,则将所述候选集中排在前k的k个最大频繁模式确定为最大多样性频繁模式。其中,第一确定模块1003具体用于:利用所述分类树确定所述最大频繁模式的集合中,每一个最大频繁模式的最小生成树;分别利用所述每一个最大频繁模式的最小生成树,计算所述每一个最大频繁模式的分支数,将所述每一个最大频繁模式的分支数与模式长度的商分别作为所述每一个最大频繁模式的多样性,所述模式长度是指最大频繁模式包含的元素的个数。在本发明实施例中,基于本发明实施例挖掘到的最大多样频繁模式与传统方法挖掘的最大频繁模式相比,结果更具有多样性,能够挖掘到传统方法不容易发现的关联关系。此外,本发明实施例中,通过使用多样性上限使得在挖掘最大多样频繁模式时,相对于传统方法,在数据量较大时,不需要挖掘所有的频繁模式或者最大频繁模式,具有更高的效率。需要说明的是,本发明实施例中的方法使用真实的超市交易数据库作为事务数据库进行了反复测试,超市交易数据库包含3040715条交易记录,总共涉及37984件商品和1947个分类,通过本发明实施例中方法挖掘到的最大多样频繁模式的数量及挖掘时间相对于现有技术都具有明显的优势。在本发明实施例是对现有的频繁模式挖掘问题和方法的扩展,在现有的研究基础上提出最大多样频繁模式的概念,并提供了最大多样频繁模式的挖掘方法。本发明所要解决的问题是挖掘有效的事务数据库中的最大多样频繁模式,从而挖掘数据之间的关联、相关性和其他有趣的联系,本发明实施例中所解决的最终目标是在给定事务数据库,最小支持度阈值、分类树及期望挖掘的最大多样频繁模式的个数的情况下,快速挖掘最大多样频繁模式。相对于现有技术,本发明实施例中的基于分类树的最大多样频繁模式的挖掘方法不仅关注元素是否频繁出现,同时也关注各元素在类型上的差异,且这种在类型上具有较大差异的频繁模式往往是在挖掘前难以预料到的。例如:在处理超市交易数据时,可以发现{苹果、香蕉、葡萄}是一个频繁模式,但是这个结果并不会让人意外,因为这个模式中的三个元素都是水果,它们同时出现在购物车中是很容易理解的。而使用本发明实施例中的技术方案,可以发现频繁模式{啤酒、尿不湿},啤酒和尿不湿这两个元素在类别上的差异特别大,看似完全不相关的两件商品,却也构成了频繁模式,这种结果是让人很意外的。所以本发明实施例中提出的方法侧重于挖掘类型上差异很大的频繁模式,且类型上差异很大的频繁模式往往是出乎人意料,且不容易想到的,满足用户对频繁模式多样性的要求,同时填补了这方面的研究空白。在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。以上为对本发明所提供的一种基于分类树的最大多样频繁模式的挖掘方法及装置的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1