一种频繁项集的挖掘方法、装置、存储介质和电子设备
技术领域
本申请涉及数据挖掘技术领域,具体涉及一种频繁项集的挖掘方法、装置、存储介质和电子设备。
背景技术
频繁项集挖掘一直以来都是数据挖掘中最活跃的领域之一。它在现实生活中具有非常广泛的应用,例如,它广泛应用于数据挖掘、软件错误探测、时空数据分析、生物分析等多个研究领域。由于其实际意义,频繁项集挖掘已经引起了广泛的关注。
目前,常见的频繁项集挖掘算法有Apriori(关联规则算法)算法、FP-Growth算法和Eclat算法,从而可通过以上三种算法来进行频繁项集的挖掘。
在实现本发明的过程中,发明人发现现有技术中存在如下问题:在数据集对应的数据量比较大的时候,通过现有的频繁项集挖掘算法来进行挖掘所使用的时间比较长。
发明内容
本申请实施例的目的在于提供一种频繁项集的挖掘方法、装置、存储介质和电子设备,以解决现有技术中存在着的由于数据量比较大引起的频繁项集的挖掘时间比较长的问题。
第一方面,本申请实施例提供了一种频繁项集的挖掘方法,该挖掘方法包括:获取原始数据集;将原始数据集划分为多个子数据集;计算多个子数据集中每个子数据集的至少一个频繁项集;将所有子数据集的所有频繁项集进行汇总,得到原始数据集的至少一个候选频繁项集;从至少一个候选频繁项集中筛选出原始数据集的频繁项集。
因此,本申请实施例可通过对原始数据集进行划分,从而由于每个子数据集的数据量都相对较小,从而能够快速地得到每个子数据集的频繁项集。以及,还可通过对所有子数据集的所有频繁项集进行汇总,从而不仅能够获取所有的频繁项集,还能够过滤掉不同的子数据集中重复的频繁项集。以及,对于该原始数据集的频繁项集来说,若该频繁项集是原始数据集的频繁项集,那么该原始数据集的频繁项集至少在多个子数据集中至少一个子数据集上也是频繁的,即所有的子数据集的频繁项集并非都是原始数据集的频繁项集,从而可通过对至少一个候选频繁项集进行筛选来得到原始数据集的频繁项集。
此外,相比于现有的频繁项集的挖掘方法,本申请实施例由于每个子数据集的数据量比较小,所以,每个子数据集的频繁项集挖掘所使用的时间也相对较短,以及后续的频繁项集的汇总和候选频繁项集的筛选过程也是相对比较简单的过程,所以,使用的时间也相对较短,从而本申请实施例的获取原始数据的频繁项集的整个过程所使用的时间也是比较短的,即本申请实施例能够达到减少频繁项集的挖掘时间的效果。
在一个可能的实施例中,从至少一个候选频繁项集中筛选出原始数据集的频繁项集,包括:依次计算至少一个候选频繁项集中每个候选频繁项集在原始数据集中的出现次数;在出现次数大于等于预设次数的情况下,将对应的候选频繁项集确定为原始数据集的频繁项集。
因此,本申请实施例通过候选频繁项集在原始数据集中的出现次数来确定原始数据集的频繁项集,从而能够快速地确定原始数据集的频繁项集。
在一个可能的实施例中,依次计算至少一个候选频繁项集中每个候选频繁项集在原始数据集中的出现次数,包括:将原始数据集划分为N个数据集,其中,N为预设值;依次计算每个候选频繁项集在N个数据集中每个数据集中的出现次数;将每个候选频繁项集在N个数据集中每个数据集中的出现次数进行累加,以得到每个候选频繁项集在原始数据集中的出现次数。
因此,本申请实施例可通过将原始数据集划分为N个数据集,并可通过并行统计的方式来快速地得到每个候选频繁项集在原始数据集中的出现次数。
在一个可能的实施例中,将原始数据集划分为多个子数据集,包括:将原始数据集随机划分为多个子数据集。
因此,本申请实施例通过随机划分的方式来避免在计算较低支持度时出现无法计算的场景的出现。
第二方面,本申请实施例提供了一种频繁项集的挖掘装置,该挖掘装置包括:获取模块,用于获取原始数据集;划分模块,用于将原始数据集划分为多个子数据集;第一计算模块,用于计算多个子数据集中每个子数据集的至少一个频繁项集;汇总模块,用于将所有子数据集的所有频繁项集进行汇总,得到原始数据集的至少一个候选频繁项集;筛选模块,用于从至少一个候选频繁项集中筛选出原始数据集的频繁项集。
在一个可能的实施例中,筛选模块,包括:第二计算模块,用于依次计算至少一个候选频繁项集中每个候选频繁项集在原始数据集中的出现次数;确定模块,用于在出现次数大于等于预设次数的情况下,将对应的候选频繁项集确定为原始数据集的频繁项集。
在一个可能的实施例中,划分模块,还用于将原始数据集划分为N个数据集,其中,N为预设值;第二计算模块,还用于依次计算每个候选频繁项集在N个数据集中每个数据集中的出现次数;第二计算模块,还用于将每个候选频繁项集在N个数据集中每个数据集中的出现次数进行累加,以得到每个候选频繁项集在原始数据集中的出现次数。
在一个可能的实施例中,划分模块,还用于将原始数据集随机划分为多个子数据集。
第三方面,本申请实施例提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行第一方面或第一方面的任一可选的实现方式所述的方法。
第四方面,本申请实施例提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行第一方面或第一方面的任一可选的实现方式所述的方法。
第五方面,本申请提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行第一方面或第一方面的任意可能的实现方式中的方法。
为使本申请实施例所要实现的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的一种频繁项集的挖掘方法的流程图;
图2示出了本申请实施例提供的一种随机划分原始数据集的方法的流程图;
图3示出了本申请实施例提供的一种获取原始数据集的候选频繁项集的方法的流程图;
图4示出了本申请实施例提供的一种获取原始数据集的频繁项集的流程图;
图5示出了本申请实施例提供的一种频繁项集的挖掘装置的结构框图;
图6示出了本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
现有技术中的频繁项集挖掘算法是直接对整个原始数据集进行处理的,在原始数据集对应的数据量比较大(例如,原始数据集的大小超过了预设大小则认为原始数据集对应的数据量比较大,且预设大小可根据实际需求来进行设置)的情况下,可能会引起频繁项集挖掘所使用的时间比较长的问题,从而无法在预设时间内获取到原始数据集的频繁项集,进而现有的频繁项集挖掘算法已经无法满足用户的需求。
基于此,本申请实施例巧妙地提供了一种频繁项集的挖掘方案,通过将获取的原始数据集划分为多个子数据集,并计算多个子数据集中每个子数据集的至少一个频繁项集,以及将所有子数据集的所有频繁项集进行汇总,得到原始数据集的至少一个候选频繁项集,最后从原始数据集的至少一个候选频繁项集中筛选出原始数据集的频繁项集。
从而,本申请实施例可通过对原始数据集进行划分,从而由于每个子数据集的数据量都相对较小,从而能够快速地得到每个子数据集的频繁项集。以及,还可通过对所有子数据集的所有频繁项集进行汇总,从而不仅能够获取所有的频繁项集,还能够过滤掉不同的子数据集中重复的频繁项集。以及,对于该原始数据集的频繁项集来说,若该频繁项集是原始数据集的频繁项集,那么该原始数据集的频繁项集至少在多个子数据集中至少一个子数据集上也是频繁的,即所有的子数据集的频繁项集并非都是原始数据集的频繁项集,从而可通过对至少一个候选频繁项集进行筛选来得到原始数据集的频繁项集。
此外,相比于现有的频繁项集的挖掘方法,本申请实施例由于每个子数据集的数据量比较小,所以,每个子数据集的频繁项集挖掘所使用的时间也相对较短,以及后续的频繁项集的汇总和候选频繁项集的筛选过程也是相对比较简单的过程,所以,使用的时间也相对较短,从而本申请实施例的获取原始数据的频繁项集的整个过程所使用的时间也是比较短的,即本申请实施例能够达到减少频繁项集的挖掘时间的效果。
为了便于理解本申请实施例,首先在此对本申请实施例中的一些术语进行解释如下:
“频繁模式”是指频繁地出现在数据集中的模式,譬如项集、子序列或子结构。
“频繁项集”是支持度大于等于最小支持度的集合。其中,支持度是指某个集合在所有事务中出现的频率。
例如,在原始数据集是商品的交易相关的数据集的情况下,该频繁项集可以是“牛奶+面包”,也可以是“苹果+橙子”等。
“Apriori算法”是将发现关联规则的过程分为两个步骤,其中,第一步是通过迭代检索出事务数据库中的频繁项集,即支持度不低于用户设定的阈值的项集;第二步是利用频繁项集构造出满足用户最小置信度的规则,其中,挖掘和识别所有频繁项集是该算法的核心,占据了整个计算量的大部分。
此外,Apriori算法的基本思想是:运用频繁项集的子集必然是频繁项集,故只要知道某一项集是非频繁的,那其超集便无需再验证。
另外,Apriori算法是基于水平数据格式来进行挖掘频繁项集的算法。
“FP-Growth算法”是将提供频繁项集的数据库压缩到一棵频繁模式树,但仍保留项集关联信息。
此外,FP-Growth算法的核心思想是:第一次扫描与Apriori算法一样,导出频繁项集和支持度计数,并且频繁项集按支持度计数递减排序;为了避免重复扫描,会将提供频繁项的数据库压缩到一个频繁模式树,但是仍然保留频繁项集的关联信息。随后再将FP-树分化成一些条件库,每个库和一个长度为1的频集相关,然后再分别对其进行挖掘。
另外,FP-Growth算法也是基于水平数据格式来进行挖掘频繁项集的算法。
“Eclat算法”是一种使用垂直数据格式来进行挖掘频繁项集的算法。它通过扫描一次数据集,项集的支持度计数直接作为项集TID的长度,从K=1开始,根据Aprioir性质,使用频繁K项集来构造候选(k+1)项集。通过取频繁K项集的TID集的交计算对应的(k+1)项集的TID集。如此重复,每次k自增1,直到不能再找到频繁项集或候选集位置。其中,TID是事务标识符。
请参见图1,图1示出了本申请实施例提供的一种频繁项集的挖掘方法的流程图。应理解,图1所示的方法可以由频繁项集的挖掘装置执行,该装置可以与下文中的图5所示的装置对应,该装置可以是能够执行该方法的各种设备,例如,如个人计算机、服务器或网络设备等,本申请实施例并不限于此,具体包括如下步骤:
步骤S110,获取原始数据集。
应理解,原始数据集还可称为初始数据集,也可称为待挖掘数据集,本申请实施例并不局限于此。
还用理解,原始数据集也可以是包含任意类型数据的数据集,本申请实施例并不局限于此。
例如,原始数据集可以是包含商品的相关数据的数据集,也可以是包含网页的相关数据的数据集,也可以是包含生物分析相关数据的数据集等。
还应理解,原始数据集可以是未划分的数据集,也可以是已经划分之后的数据集,本申请实施例并不局限于此。
还应理解,原始数据集可以是在每次频繁项集的挖掘之前,输入到挖掘装置的应用程序中的数据集,也可以是预先存储到挖掘装置的应用程序中的数据集(即后续挖掘装置可直接通过读取内存的方式来直接获取原始数据集),本申请实施例并不局限于此。
步骤S120,将原始数据集划分为多个子数据集。
应理解,子数据集的具体个数也可根据实际需求来进行设置,本申请实施例并不局限于此。
例如,子数据集的具体个数可以是10个,也可以是30个,也可以是55个等。
还应理解,原始数据集的具体划分方式可根据实际需求来进行设置,本申请实施例并不局限于此。
例如,可按照随机划分的方式,将原始数据集随机划分为多个子数据集,从而通过随机划分的方式来尽可能避免在计算较低支持度时出现的无法计算的场景。
再例如,还可按照预设的划分规则,将原始数据集划分为多个子数据集(例如,在原始数据集包含有某年的历史商品交易的相关数据的情况下,预设的划分规则为:将原始数据集划分两个子数据集,其中一个子数据集是包含关于某年的上半年的历史商品交易的相关数据,另外一个子数据集是包含关于某年的下半年的历史商品交易的相关数据)。
为了便于理解本申请实施例中的步骤S120,下面通过具体的实施例来进行描述。
请参见图2,图2示出了本申请实施例提供的一种随机划分原始数据集的方法的流程图。如图2所示的方法包括:
步骤S210,输入原始数据集和子数据集的具体个数,即将原始数据集和想要对原始数据集划分的份数都输入到挖掘装置的应用程序中。其中,原始数据集是由M行数据构成的,子数据集的具体个是L,M和L均为正整数。
步骤S220,在M行的范围内,从M行数据中随机获取J行的数据,其中,J=M/L。
步骤S230,获取当前数据集。其中,当前数据集是将M行数据中的J行的数据删除之后得到的。
例如,原始数据集是由1000行的数据构成的,通过步骤S220随机获取100行的数据之后,步骤S230是将步骤S220对应的100行的数据进行删除,从而当前数据集为剩余的900行的数据。
步骤S240,在当前数据集对应的行数范围内,再次随机获取J行的数据,并在当前数据集中,将当前获取的J行的数据进行删除。
步骤S250,保存最新的数据集。其中,最新的数据集是将步骤S240中的J行的数据删除后对应的数据集。
此外,在L的值大于2的情况下,还可循环执行上述步骤S240至步骤S250,从而最终能够获取L个子数据集。其中,循环的次数为L-2次。
步骤S260,结束。
需要说明的是,虽然图2以获取相同大小的L个子数据集(即构成每个子数据集的行数是一致的)为例来进行描述的,但本领域的技术人员应当理解,每个子数据集的大小也可不相同,本申请实施例并不局限于此。
例如,多个子数据集中的任意两个子数据集的大小都不一致。
步骤S130,计算多个子数据集中每个子数据集的至少一个频繁项集。
应理解,每个子数据集的频繁项集的挖掘(或计算)算法也可根据实际需求来进行设置,本申请实施例并不局限于此。
例如,可通过改进的Apriori算法,计算每个子数据集的至少一个频繁项集。
再例如,在多个子数据集是A+B个子数据集的情况下,可通过Apriori算法,计算其中A个子数据集中每个子数据集的至少一个频繁项集,以及还可通过FP-Growth算法,计算其他B个子数据集中每个子数据集的至少一个频繁项集。
步骤S140,将所有子数据集的所有频繁项集进行汇总,得到原始数据集的至少一个候选频繁项集。
应理解,所有频繁项集的汇总过程可以包括:将所有频繁项集中重复的频繁项集过滤掉,只保留至少两个重复的频繁项集中的一个频繁项集即可,从而在后续筛选过程中,能够减少计算量,从而避免了对多个重复的候选频繁项集进行重复处理的情况。
例如,在10个子数据集中的3个子数据集都包含有“牛奶+面包”这个频繁项集的情况下,在后续汇总的过程中,只保留一个“牛奶+面包”的频繁项集即可。
还应理解,候选频繁项集是通过对所有子数据集的所有频繁项集进行汇总后得到的。
例如,第一子数据集的2个频繁项集分别为“牛奶+面包”和“奶粉+啤酒”,以及第二子数据集的2个频繁项集分别为“苹果+橙子”和“牛奶+面包”,在对第一子数据集和第二子数据集进行汇总后,原始数据集的3个候选频繁项集分别为“牛奶+面包”、“奶粉+啤酒”和“苹果+橙子”。
需要说明的是,虽然前文中步骤S130和步骤S140是分开描述的,但是,在实际应用的过程中,步骤S130和步骤S140可以通过一个过程一并实现(例如,步骤S130和步骤S140分别对应于一次MapReduce的过程中的Map(映射)阶段和Reduce(归约)阶段),本申请实施例并不局限于此。
为了便于理解本申请实施例的步骤S130和步骤S140,下面通过具体的实施例来进行描述。
请参见图3,图3示出了本申请实施例提供的一种获取原始数据集的候选频繁项集的方法的流程图。如图3所示的方法的流程图包括:输入多个子数据集(例如,子数据集1至子数据集N,其中,N为正整数);通过改进的Apriori算法分别计算多个子数据集中每个子数据集的频繁项集;将所有子数据集的所有频繁项集进行汇总;获取原始数据集的至少一个候选频繁项集。
步骤S150,从至少一个候选频繁项集中筛选出原始数据集的频繁项集。
应理解,原始数据集的频繁项集的个数可以是至少一个,本申请实施例并不局限于此。
需要说明的是,对于该原始数据集的频繁项集来说,若该频繁项集是原始数据集的频繁项集,那么该原始数据集的频繁项集至少在多个子数据集中至少一个子数据集上也是频繁的,即所有的子数据集的频繁项集并非都是原始数据集的频繁项集,所以,这里需要通过步骤S150来对至少一个候选频繁项集进行筛选。
应理解,至少一个候选频繁项集的具体筛选过程可根据实际需求来进行设置,本申请实施例并不局限于此。
为了便于理解步骤S150,下面通过具体的实施例来进行描述。
可选地,从至少一个候选频繁项集中筛选出原始数据集的频繁项集包括:依次计算至少一个候选频繁项集中每个候选频繁项集在原始数据集中的出现次数;在出现次数大于等于预设次数的情况下,将对应的候选频繁项集确定为原始数据集的频繁项集;在出现次数小于预设次数的情况下,将对应的候选频繁项集删除。
应理解,预设次数对应的具体次数可根据实际需求来进行设置,本申请实施例并不局限于此。
还应理解,预设次数也可称为最小支持度(这里的最小支持度是最小支持度计数,此处为了便于本领域技术人员的理解,所以,这里以最小支持度来进行描述),本申请实施例并不局限于此。
为了便于理解本申请实施例中的步骤S150,下面通过具体的实施例来进行描述。
例如,在原始数据集的候选频繁项集包括2个候选频繁项集的情况下,可依次计算2个候选频繁项集中每个候选频繁项集在原始数据集中的出现次数。通过计算可以确定,其中1个候选频繁项集在原始数据集中的出现次数为30次,另一个候选频繁项集在原始数据集中的出现次数为60次。由于预设次数为50次,那么可将出现次数为30次对应的候选频繁项集删除,以及还可将出现次数为60次对应的候选频繁项集确定为原始数据集的频繁项集。
此外,为了提升每个候选频繁项集在原始数据集中的出现次数的统计效率,还可将原始数据集划分为N个数据集,随后依次计算每个候选频繁项集在N个数据集中每个数据集中的出现次数,最后将每个候选频繁项集在N个数据集中每个数据集中的出现次数进行累加,以得到每个候选频繁项集在原始数据集中的出现次数。其中,N为预设值,且N为正整数。因此,本申请实施例可以通过并行统计的方式来提升统计效率。
应理解,N的具体值也可根据实际需求来进行设置,本申请实施例并不局限于此。
例如,在将原始数据集划分为2个数据集的情况下,通过计算确定,某频繁项集在其中一个数据集中的出现次数为6次,在另外一个数据集中的出现次数为4次,那么该频繁项集在原始数据集的出现次数为10次。
为了便于理解本申请实施例中的步骤S150,下面通过具体的实施例来进行描述。
请参见图4,图4示出了本申请实施例提供的一种获取原始数据集的频繁项集的流程图。如图4所示的方法包括:
分别将原始数据集和步骤S140得到的原始数据集的至少一个候选频繁项集输入到挖掘装置的应用程序中。
记录出现次数,其中,记录次数是指记录候选频繁项集在原始数据集或者当前数据集中的出现次数,具体地:
在步骤S150中,若未对原始数据集进行划分,那么记录次数是指在原始数据集中的出现次数;在步骤S150中,若将原始数据集划分为N个数据集,那么记录次数是指在每个频繁项集的挖掘器中对应的数据集进行记录,即一个频繁项集的挖掘器对应一个数据集的出现次数。
统计出现次数。其中,统计出现次数是指统计候选频繁项集在原始数据集的出现次数,具体地:
在步骤S150中,若未对原始数据集进行划分,那么最终统计的出现次数与上一步记录的出现次数一致;在步骤S150中,若将原始数据集划分为N个数据集,那么最终统计的出现次数是所有的数据集对应的出现次数的和。
判断统计后的出现次数是否大于等于预设次数。若统计后的出现次数大于等于预设次数,则输出结果,即将对应的候选频繁项集确定为原始数据集的频繁项集。若统计后的出现次数小于预设次数,则丢弃,即删除对应的候选频繁项集。
可选地,从至少一个候选频繁项集中筛选出原始数据集的频繁项集包括:依次计算至少一个候选频繁项集中每个候选频繁项集的支持度(此处的支持度为概率,这里为了便于本领域技术人员的理解,所以描述为支持度);在支持度大于等于预设支持度的情况下,将对应的候选频繁项集确定为原始数据集的频繁项集;在支持度小于预设支持度的情况下,将对应的候选频繁项集删除。
应理解,预设支持度的具体值也可根据实际需求来进行设置,本申请实施例并不局限于此。
此外,需要说明的是,在实际应用的过程中,本申请实施例中的步骤S110至步骤S150可通过MapReduce框架来实现,本申请实施例并不局限于此。
具体地,本申请实施例选用MapReduce框架有以下两个目的:
MapReduce框架在处理大规模数据集时有较大的优势;
MapReduce框架在计算时会对数据进行分片,此分片正好对应步骤S120中的原始数据集的划分的过程。
此外,对于步骤S110和步骤S120来说,MapReduce框架可自动对输入的原始数据集进行划分,从而可通过MapReduce框架来获取子数据集。
此外,虽然MapReduce框架可自动对输入的原始数据集进行划分,但是该划分方式并不能保证随机性,若在实际需求为对原始数据集进行随机划分的情况下,用户可通过手动的方式来实现原始数据集的随机划分。
对于步骤S130和步骤S140来说,步骤S130和步骤S140可对应于一次MapReduce的过程。
其中,步骤S130对应于一次MapReduce的过程中的Map阶段,步骤S140对应于一次MapReduce的过程中的Reduce阶段。
对于步骤S150来说,步骤S150来说,步骤S150可对应于一次MapReduce的过程。
因此,本申请实施例可通过对原始数据集进行划分,从而由于每个子数据集的数据量都相对较小,从而能够快速地得到每个子数据集的频繁项集。以及,还可通过对所有子数据集的所有频繁项集进行汇总,从而不仅能够获取所有的频繁项集,还能够过滤掉不同的子数据集中重复的频繁项集。以及,对于该原始数据集的频繁项集来说,若该频繁项集是原始数据集的频繁项集,那么该原始数据集的频繁项集至少在多个子数据集中至少一个子数据集上也是频繁的,即所有的子数据集的频繁项集并非都是原始数据集的频繁项集,从而可通过对至少一个候选频繁项集进行筛选来得到原始数据集的频繁项集。
此外,相比于现有的频繁项集的挖掘方法,本申请实施例由于每个子数据集的数据量比较小,所以,每个子数据集的频繁项集挖掘所使用的时间也相对较短,以及后续的频繁项集的汇总和候选频繁项集的筛选过程也是相对比较简单的过程,所以,使用的时间也相对较短,从而本申请实施例的获取原始数据的频繁项集的整个过程所使用的时间也是比较短的,即本申请实施例能够达到减少频繁项集的挖掘时间的效果。
应理解,上述频繁项集的挖掘方法仅是示例性的,本领域技术人员可对上述的方法可以进行各种变形,变形之后的方案也处于本申请实施例的保护范围内。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。例如,对于图1来说,可将步骤S130至步骤S140合并成一个步骤。
请参见图5,图5示出了本申请实施例提供的一种频繁项集的挖掘装置500的结构框图,应理解,该挖掘装置500与上述图1至图4方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该挖掘装置500具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该挖掘装置500包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在挖掘装置500的操作系统(operating system,OS)中的软件功能模块。具体地,该挖掘装置500包括:
获取模块510,用于获取原始数据集;
划分模块520,用于将原始数据集划分为多个子数据集;
第一计算模块530,用于计算多个子数据集中每个子数据集的至少一个频繁项集;
汇总模块540,用于将所有子数据集的所有频繁项集进行汇总,得到原始数据集的至少一个候选频繁项集;
筛选模块550,用于从至少一个候选频繁项集中筛选出原始数据集的频繁项集。
在一个可能的实施例中,筛选模块550,包括:
第二计算模块(未示出),用于依次计算至少一个候选频繁项集中每个候选频繁项集在原始数据集中的出现次数;
确定模块(未示出),用于在出现次数大于等于预设次数的情况下,将对应的候选频繁项集确定为原始数据集的频繁项集。
在一个可能的实施例中,划分模块520,还用于将原始数据集划分为N个数据集,其中,N为预设值;
第二计算模块,还用于依次计算每个候选频繁项集在N个数据集中每个数据集中的出现次数;
第二计算模块,还用于将每个候选频繁项集在N个数据集中每个数据集中的出现次数进行累加,以得到每个候选频繁项集在原始数据集中的出现次数。
在一个可能的实施例中,划分模块520,还用于将原始数据集随机划分为多个子数据集。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
图6示出了本申请实施例提供的一种电子设备600的结构框图。如图6所示,电子设备600可以包括处理器610、通信接口620、存储器630和至少一个通信总线640。其中,通信总线640用于实现这些组件直接的连接通信。其中,本申请实施例中设备的通信接口620用于与其他节点设备进行信令或数据的通信。处理器610可以是一种集成电路芯片,具有信号的处理能力。上述的处理器610可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程逻辑门阵列(Field Programmable GateArray,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器610也可以是任何常规的处理器等。
存储器630可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。存储器630中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器610执行时,电子设备600可以执行上述图1至图4方法实施例涉及的各个步骤。
电子设备600还可以包括存储控制器、输入输出单元、音频单元、显示单元。
所述存储器630、存储控制器、处理器610、外设接口、输入输出单元、音频单元、显示单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线640实现电性连接。所述处理器610用于执行存储器630中存储的可执行模块,例如电子设备600包括的软件功能模块或计算机程序。并且,电子设备600用于执行下述方法:获取原始数据集;将所述原始数据集划分为多个子数据集;计算所述多个子数据集中每个子数据集的至少一个频繁项集;将所有子数据集的所有频繁项集进行汇总,得到所述原始数据集的至少一个候选频繁项集;从所述至少一个候选频繁项集中筛选出所述原始数据集的频繁项集。
输入输出单元用于提供给用户输入数据实现用户与所述服务器(或本地终端)的交互。所述输入输出单元可以是,但不限于,鼠标和键盘等。
音频单元向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。
显示单元在所述电子设备与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。
可以理解,图6所示的结构仅为示意,所述电子设备600还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。图6中所示的各组件可以采用硬件、软件或其组合实现。
本申请提供一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行实施例所述的方法。
本申请还提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行方法实施例所述的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。