CN105677837A - 一种关联规则的挖掘方法和关联规则的挖掘装置 - Google Patents
一种关联规则的挖掘方法和关联规则的挖掘装置 Download PDFInfo
- Publication number
- CN105677837A CN105677837A CN201610005402.XA CN201610005402A CN105677837A CN 105677837 A CN105677837 A CN 105677837A CN 201610005402 A CN201610005402 A CN 201610005402A CN 105677837 A CN105677837 A CN 105677837A
- Authority
- CN
- China
- Prior art keywords
- item
- frequent
- frequent set
- collection
- support
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种关联规则的挖掘方法,所述挖掘方法包括以下步骤:获取和扫描事务集,将所述事务集转化为多维数据立方体,并记录下整个事务集的长度;根据所述多维数据立方体得到1-项集和1-项频繁集;根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项频繁集得到k+1-项集和k+1-项频繁集,其中k为大于且等于2的正整数;根据1-项频繁集和k-项频繁集,产生1-项频繁集的所有子集和k-项频繁集的所有子集以生成所述事务集的关联规则。该方法能减少系统的运行时间。
Description
技术领域
本发明涉及遥感影像领域,尤其涉及一种关联规则的挖掘方法和关联规则的挖掘装置。
背景技术
关联规则挖掘是数据挖掘领域中一个非常重要的分支,主要用于从大数据量的事务集中找出满足用户最小支持度的频繁项目集。对遥感影像数据挖掘而言,其过程可以理解为从遥感影像中抽取不同层次的知识,分析知识之间的关系,从而挖掘出遥感影像中隐含的潜在的规律性知识。
现有的Sampling算法、Partition算法、DIC算法等都试图减少皯交易数据集合的搜索次数,但仍有很多缺点。Sampling算法从原数据集合中随机抽样出一部分样本,利用样本来挖掘关联规则以减少算法的搜索次数,但是由于数据集合中经常存在数据分布不均匀的情况,所以随机抽样根本就无法保证能够抽取到有代表性的样本;Partition算法虽然通过对数据集合分区分别挖掘,最后进行汇总的方法来减轻I/O的负担,事实上它是增加了CPU的负担;DIC算法采用动态计算的策略来减少搜索次数以提高算法的效率,但与Apriori算法在思想上没有根本不同之处,它也还是一个多趟搜索算法。这些算法在读入交易数据时生成候选项目集,产生许多不必要的候选项目集,计算量大。尤其对海量数据集合来说,以上算法只有在较高的最小支持度和最小可信度下或增加其它约束后才有一定的挖掘效率,否则将会产生频繁项目集的组合爆炸,而变得效率低下甚至超过机器的存储和计算能力。因为任何算法都必须计算项目集及其支持度,所以真正影响算法效率的是对项目集及其支持度的计算问题。每一次的计算不仅花费大量CPU时间,而且还牵涉I/O的请求。
也就说,现有关联规则挖掘算法由于需要多次遍历事务数据库,导致挖掘效率低下,需要花费大量CPU时间。另外现有的Apriori、FP-Growth及其改进算法对数据有一定的要求,即同一个事务中,项的取值不能相同,否则挖掘算法将不能运行。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此本发明的第一个目的在于提出一种关联规则的挖掘方法。
本发明的第二个目的在于提出关联规则的挖掘装置。
为了实现上述目的,本发明第一方面实施例的关联规则的挖掘方法,所述挖掘方法包括以下步骤:
获取和扫描事务集,将所述事务集转化为多维数据立方体,并记录下整个事务集的长度;
根据所述多维数据立方体得到1-项集和1-项频繁集;
根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项集得到k+1-项集和k+1-项频繁集,其中k为大于且等于2的正整数;
根据1-项频繁集和k-项频繁集,产生1-项频繁集的所有子集和k-项频繁集的所有子集以生成所述事务集的关联规则。
本发明实施例的关联规则的挖掘方法,所述挖掘方法包括以下步骤:
获取和扫描事务集,将所述事务集转化为多维数据立方体,并记录下整个事务集的长度;
根据所述多维数据立方体得到1-项集和1-项频繁集;
根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项频繁集得到k+1-项集和k+1-项频繁集,其中k为大于且等于2的正整数;
根据1-项频繁集和k-项频繁集,产生1-项频繁集的所有子集和k-项频繁集的所有子集以生成所述事务集的关联规则。
本发明实施例的关联规则的挖掘方法,整个关联规则挖掘过程仅遍历了一遍事务集,虽然在获取频繁项集及关联规则时需要多次遍历多维数据立方体,但遍历后者的时间消耗要远小于遍历事务集,因此从运行速度上来说,本发明的方法要明显快于传统的挖掘算法。
为了实现上述目的,本发明第二方面实施例的关联规则的挖掘装置,所述挖掘装置包括:
转化模块,用于获取和扫描事务集,将所述事务集转化为多维数据立方体,并记录下整个事务集的长度;
第一生成模块,用于根据所述多维数据立方体得到1-项集和1-项频繁集;
第二生成模块,用于根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项频繁集得到k+1-项集和k+1-项频繁集,其中k为大于且等于2的正整数;
第三生成模块,用于根据1-项频繁集和k-项频繁集,产生1-项频繁集的所有子集和k-项频繁集的所有子集以生成所述事务集的关联规则。
本发明实施例的关联规则的挖掘装置,整个关联规则挖掘过程仅遍历了一遍事务集,虽然在获取频繁项集及关联规则时需要多次遍历多维数据立方体,但遍历后者的时间消耗要远小于遍历事务集,因此从运行速度上来说,本发明的方法要明显快于传统的挖掘算法。
附图说明
图1是本发明关联规则的挖掘方法一实施例的流程图;
图2是本发明生成k-项集的方法第一实施例的流程图;
图3是本发明生成k-项集的方法第二实施例的流程图;
图4是本发明生成k-项集的方法第三实施例的流程图;
图5是本发明关联规则的挖掘装置一实施例的结构示意图;
图6是本发明关联规则的挖掘方法的运行时间示意图;
图7是现有挖掘方法的运行时间示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的关联规则的挖掘方法和关联规则的挖掘装置。
图1是根据本发明一个实施例关联规则的挖掘方法的流程图。如图1所示,所述关联规则的挖掘方法,包括以下步骤:
S11,获取和扫描事务集,将所述事务集转化为多维数据立方体,并记录下整个事务集每一个项的长度。
具体地,根据所述事务集中每个事务的项的取值,将所述事务集转化为多维数据立方体。其中,多维数据立方体用于实现对数据仓库中多维数据的多角度多层面的分析和处理。本实施例中,将事务集中的每一个项定义为一个维,而每一个项的取值范围定义为该维的长度,例如,一个事务集的结构如下:
在所述事务集中,包含3个维,分别为Item1,Item2和Item3,这3个维的长度分别为5,4,4。由此可以将该事务集用一个三维数据立方体表示,三维数据立方体可以用如下的三维直角坐标系表达:
具体的,事务集中的每一个事务,均可以用三维直角坐标系中的一个点来表示。在物理存储上,该三维数据立方体可以用一个三维数组来存储,如果将三维数据立方体用C表示,则T1事务可以用C[1][4][3]=1来表示,同理可表示T2和T3事务。事务集中的所有事务均可以用三维数组中的一个点来存储,而三维数组中不包含在事务集中的点则用0来表示。由此,即可将数据集转换为一个三维数据立方体。同理,包含N个项的事务集可以表示为N维数据立方体,而在存储上,N维数据立方体可以表示为一个N维数组。
另外,所述多维数据立方体包括单值数据立方体,多值无序数据立方体,多值有序数据立方体和属性数据立方体。
其中,单值数据立方体对应于单值事务集,也称为布尔型事务集,是指在事务集中,每个事务的项的取值仅包含0和1,表示该项在该事务中的存在性。例如:
事务 | 项集 |
T1 | b d e f i |
T2 | a e g h |
T3 | a b f h i |
上述事务集中,a~i表示每一个事务所包含的项,并不是每个事务都包含所有的项,因此上述事务集可以转化为如下的单值或布尔型事务集:
表中字母a~i表示项,而1和0表示该项在事务中的取值。在将上述事务集转换为多维数据立方体时,采用项集分段的思想,按照3个项分成1段,则上述项集可以分为3段,并将每段的三个布尔值当成二进制数,并转换为十进制数,则转换后的事务集为:
经过上述转换,该事务集可以表示为一个三维数据立方体,每个维的长度为6,7,6,也可以定义每个维的长度均为7,只不过此时会存在一些数据冗余,而在存储时用三维数组表示。根据分段时所选择的项的个数不同,可以得到不同的分段,则对应的数据立方体的维数和每个维的长度会有所不同,可以根据实际情况进行合理选择。
多值无序数据立方体是指事务集中每一个事务的每一个项的取值不是0和1,而是任意数,一般取值为整数;无序是指一个事务中项的取值是没有顺序的,例如对于一个三项集,取值为[123]和[312]的两个事务是一样的。
对于这样的多值无序事务集,在表示为多维数据立方体时,可以先将事务中的项按照从小到大排序,然后按照多维数据立方体的结构进行存储;也可以不排序,直接进行存储。为了命名方便,这样的事务集表示成的多维数据立方体命名为多值无序数据立方体。
多值有序数据立方体与多值无序数据立方体类似,多值有序是指事物集中每一个事务的每一个项的取值为任意数,一般为整数,且项的取值是有顺序的,取值为[123]和[312]的事务是不一样,表示两个不同的事务。在存储为多维数据立方体时,按照事务中项的顺序,依次存入多维数据立方体的对应维中。为了命名方便,这样的事务集表示成的多维数据立方体命名为多值有序数据立方体。
对于属性数据立方体,在进行关联规则挖掘时,经常要处理一些和属性有关的问题,例如对于一幅图像,经过面向对象的图像分割,图像被分割成若干个对象,对于每个对象,可以提取各种属性,如色调、熵、形状等等,如果要挖掘这些属性之间的关联规则,就需要用到属性数据立方体。
具体步骤是,首先计算每个对象的每个属性;然后按照一定的规则,对每个属性的值进行量化,量化等级需要根据实际情况确定,每个属性的量化等级可以相同,也可以不同;每一个对象的所有属性量化后可以用一个事务表示,一个属性对应事务中的一个项;最后将事务中的每一项依次存入多维数据立方体的某一维中。经过上述操作,这些属性数据即转化为多值数据立方体。由于该属性数据源与传统的数据源有所差异,所以在命名时将由属性转化的事务集构成的多维数据立方体命名为属性数据立方体。
S12,根据所述多维数据立方体得到1-项集和1-项频繁集。
S13,根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项频繁集得到k+1-项集和k+1-项频繁集,其中k为大于且等于2的正整数。
S14,根据1-项频繁集和k-项频繁集,产生1-项频繁集的所有子集和k-项频繁集的所有子集以生成所述事务集的关联规则。
在本发明的一个实施例中,所述步骤S12,具体包括以下步骤:
S121,统计所述事务集中每个值在每个维度上的出现频率以及每个维度上每个值的支持度,得到1-项集。
具体的,首先扫描一遍事务集,将事务集转化为多维数据立方体,同时记录下整个事务集的长度,设为Len。比如,将事务集转化为三维多值有序数据立方体,即每一个事务由三个项构成,项之间是有序的,并将该三维数据立方体表示为A。设置最小支持度为min_sup,最小置信度为min_cof。由于项是有序的,因此同一个数在三个维度上出现时,其意义是不一样的,此时在获取1-项集时需要单独处理。采用数组的循环操作,在三个维度上分别统计每个值出现的频度:
fork=1:maxkv
sup_k=sum(A(k,:,:))/Len;
end
其中maxkv表示在第一维上的最大值,sup_k是第一维上每个值的支持度,sum()是求和操作。A(k,:,:)表示三维数据立方体A中第一维等于k的所有子集。由于A的三个维度的长度是有限的,且远小于原始事务集的长度,因此数组求和的计算速度非常快。对三个维度都执行相同的操作,即可获得1-项集,由于事务中的项是有序的,因此依然用数组存储最终的项集,如下表所示:
S122,查找其支持度大于预设的支持度的1-项集,得到1-项频繁集。
具体的,预设的支持度为最小支持度。
在本发明的一个实施例中,如图2所示,在步骤S13具体包括以下步骤:
S131,将1-项频繁集中的每两个频繁项进行逻辑或运算再进行求和运算,得到1-项频繁集中的多个运算结果。
具体的,1-项频繁集中的每两个频繁项进行逻辑或运算,接着对所述逻辑或运算结果进行和运算,得到和运算结果。
S132,判断每个运算结果是否等于2,如果是,进入步骤S133,如果否,进入步骤S134。
S133,所述运算结果对应的两个频繁项进行相交,得到当前2-项集。
S134,放弃计算。
S135,计算当前2-项集的支持度,查找其支持度大于最小支持度的2-项集,得到2-项频繁集。
S136,重复由1-项集生成2-项频繁集的过程,将k-项频繁集中的每两个频繁项进行逻辑或运算再进行求和运算,得到k-项频繁集中的多个运算结果。
S137,判断每个运算结果是否等于k+1,如果是,进入步骤S138,如果否,进入步骤S134。
S138,所述运算结果对应的两个频繁项进行相交,以及根据所述相交结果得到当前的k+1-项集。
S139,计算当前k+1-项集的支持度,查找其支持度大于最小支持度的k+1-项集,得到k+1-项频繁集。
具体的,通过1-项频繁集自交,生成2-项集,接着2-项频繁集自交,生成3-项集,依次计算。
具体的,通过k-项频繁集自交,生成k+1-项集。由于k-项频繁集的存储结构,在进行频繁项自交前,可以先用逻辑运算判断该频繁项是否能够自交,如果不能,则放弃,以提高计算效率。具体的判断规则为:比如利用1-项频繁集自交产生2-项集,1-项频繁集中的两个频繁项为[100]和[200],先做逻辑或运算,结果为[100],对逻辑或运算结果进行和计算,如果和等于2,则可以相交,否则不可以相交。而对于两个频繁项为[100]和[020],逻辑或运算的结果为[110],其和为2,则可以相交,相交结果为[120];在相交的基础上,利用sum(A(1,2,:))即可迅速计算该2-项集的支持度,其中A(1,2,:)表示第一个维度为1,第二个维度为2的所有子集。在此过程中无需遍历原始事务集,仅需利用数组的寻址功能,可以快速地计算支出持度。
在本发明的一个实施例中,如图3所示,在步骤S13具体包括以下步骤:
S301,将1-项频繁集中的每两个频繁项进行逻辑或运算再进行求和运算,得到1-项频繁集中的多个运算结果。
S302,判断每个运算结果是否等于2,如果是,进入步骤S303,如果否,进入步骤S304。
S303,所述运算结果对应的两个频繁项进行相交,得到当前2-项集。
S304,放弃计算。
S305,计算当前2-项集的支持度,查找其支持度大于最小支持度的2-项集,得到k-项频繁集。
S306,将k-项集与1-项频繁集进行“逻辑或”运算再进行求和运算。
S307,如果运算结果等于k+1,则进行相交,得到k+1-项集。
S308,计算当前k+1-项集的支持度,查找其支持度大于最小支持度的k+1-项集,得到k+1-项频繁集。
具体的,k-项频繁集与1-项频繁集相交,生成k+1-项集,但是在相交之前,需要先判断该频繁项是否能够相交,如果不能,则放弃。由于频繁项集的存储结构,只需要查找特定维度的1-项频繁集即可,比如要将2-项频繁集扩展为3-项集,对于2-项频繁集中的某个频繁项[120],在扩展时只需要查找1-项频繁集中类似[00k]这样的频繁项,其中k为第三维度上的任意值。这样就可以避免频繁的相交操作,提高计算效率。另外,需要先通过1-项频繁集自交得到2-项集和2-项频繁集之后,k+1-项集是通过k-项频繁集与1-项频繁集相交得到,比如5-项集是通过4-项频繁集与1-项频繁集相交得到,6-项集是通过5-项频繁集与1-项频繁集相交得到,依次计算。
在本发明的一个实施例中,如图4所示,在步骤S13具体包括以下步骤:
S401,将1-项频繁集中的每两个频繁项进行逻辑或运算再进行求和运算,得到1-项频繁集中的多个运算结果。
S402,判断每个运算结果是否等于2,如果是,进入步骤S403,如果否,进入步骤S304。
S403,所述运算结果对应的两个频繁项进行相交,得到当前2-项集。
S404,放弃计算。
S405,计算当前2-项集的支持度,查找其支持度大于最小支持度的2-项集,得到k-项频繁集。
S406,将k-项集与1-项频繁集进行“逻辑或”运算再进行求和运算,并判断运算结果是否等于k+1,,如果是,进入步骤S407,如果否,进入步骤S408。
S407,进行相交,得到k+1-项集;计算当前k+1-项集的支持度,查找其支持度大于最小支持度的k+1-项集,得到k+1-项频繁集。
S408,将k-项频繁集中的每两个频繁项进行逻辑或运算再进行求和运算,得到k-项频繁集中的多个运算结果;判断每个运算结果是否等于k+1,如果是,所述运算结果对应的两个频繁项进行相交,以及根据所述相交结果得到当前的k+1-项集;计算当前k+1-项集的支持度,查找其支持度大于最小支持度的k+1-项集,得到k+1-项频繁集。
具体的,从以上两种方法可以看出,第一种方法中利用k-项频繁集生成k+1项集时需要遍历k-项频繁集,而第二种方法中需要遍历1-项频繁集,主要的计算量消耗在遍历操作上。通常1-项集是比较小的,而频繁项集越到最后越小,中间的项集比较大,因此在利用k-项集生成k+1-项集时,可以通过比较频繁k-项集与频繁1-项集的大小来决定使用哪一种方法。如果频繁k-项集大于频繁1-项集,则可以选择第二种方法,否则使用第一种方法。通过这种选择,可以在一定程度上提高频繁项集的生成速度。
在具体实施中,所述根据k-项频繁集和1-项频繁集中查找到的频繁项,得到k+1-项集的步骤,包括以下步骤:
将所述k-项频繁集中的每个频繁项和1-项频繁集中查找到的每个频繁项进行逻辑或运算,得到多个运算结果。
判断每个运算结果是否等于第一预设值,如果是,所述运算结果对应的两个频繁项进行相交,以及根据所述相交结果得到当前k+1-项集。
具体的,比如利用1-项频繁集和2-项频繁集相交交产生3-项集,频繁1-项集中的一个频繁项为[100],2-项频繁集中的一个频繁项为[200],先做逻辑或运算,结果为[100],对逻辑或运算结果进行和计算,如果和等于2,则可以相交,否则不可以相交。而对于两个频繁项为[100]和[020],逻辑或运算的结果为[110],其和为2,则可以相交,相交结果为[120];在相交的基础上,利用sum(A(1,2,:))即可迅速计算该3-项集的支持度,其中A(1,2,:)表示第一个维度为1,第二个维度为2的所有子集。在此过程中无需遍历原始事务集,仅需利用数组的寻址功能,可以快速地计算支出持度。
在具体实施中,步骤S14,具体为:根据Apriori算法生成所述事务集的关联规则。
具体的,由于原始事务集和得到的各频繁项集均存储在多维数据立方体中,在生成关联规则时,仍然采用传统Apriori算法的生成模式,包括以下步骤:
对于每个频繁项集,产生该频繁项集的所有子集,根据下面的公式判断是否产生一条规则:
其中l为某个频繁项,s为该频繁项的某个子集,如果满足此条件,则输出关联规则:
其中l-s表示频繁项l中去除s后剩下的子集,support(l)和分别是该规则的支持度和置信度。
生成关联规则的主要计算量在于获取每个频繁子集的支持度。传统方法是将每个子集与事先获取的各频繁集进行比较,如果匹配了,就获取其支持度,进而输出规则。一般而言,匹配的过程是比较耗时的,尤其是当最小支持度设置得比较低,获取的各频繁集比较多时,更耗时。本发明将每个频繁项都统一存储在多维数据立方体中,利用数组的快速寻址能力,能够快速地获取每个频繁子集的支持度,从而提高生成关联规则的速度。
本发明实施例的关联规则的挖掘方法,整个关联规则挖掘过程仅遍历了一遍事务集,虽然在获取频繁项集及关联规则时需要多次遍历多维数据立方体,但遍历后者的时间消耗要远小于遍历事务集,因此从运行速度上来说,本发明的方法要明显快于传统的挖掘算法。
为了实现上述实施例,本发明还提出了一种关联规则的挖掘装置。
如图5所示,本发明实施例的关联规则的挖掘装置,所述挖掘装置包括:转化模块51,第一生成模块52,第二生成模块53和第三生成模块54。
转化模块51,用于获取和扫描事务集,将所述事务集转化为多维数据立方体,并记录下整个事务集的长度。
具体地,根据所述事务集中每个事务的项的取值,将所述事务集转化为多维数据立方体。其中,多维数据立方体用于实现对数据仓库中多维数据的多角度多层面的分析和处理。本实施例中,将事务集中的每一个项定义为一个维,而每一个项的取值范围定义为该维的长度,例如,一个事务集的结构如下:
在所述事务集中,包含3个维,分别为Item1,Item2和Item3,这3个维的长度分别为5,4,4。由此可以将该事务集用一个三维数据立方体表示,三维数据立方体可以用如下的三维直角坐标系表达:
具体的,事务集中的每一个事务,均可以用三维直角坐标系中的一个点来表示。在物理存储上,该三维数据立方体可以用一个三维数组来存储,如果将三维数据立方体用C表示,则T1事务可以用C[1][4][3]=1来表示,同理可表示T2和T3事务。事务集中的所有事务均可以用三维数组中的一个点来存储,而三维数组中不包含在事务集中的点则用0来表示。由此,即可将数据集转换为一个三维数据立方体。同理,包含N个项的事务集可以表示为N维数据立方体,而在存储上,N维数据立方体可以表示为一个N维数组。
另外,所述多维数据立方体包括单值数据立方体,多值无序数据立方体,多值有序数据立方体和属性数据立方体。
其中,单值数据立方体对应于单值事务集,也称为布尔型事务集,是指在事务集中,每个事务的项的取值仅包含0和1,表示该项在该事务中的存在性。例如:
事务 | 项集 |
T1 | b d e f i |
T2 | a e g h |
T3 | a b f h i |
上述事务集中,a~i表示每一个事务所包含的项,并不是每个事务都包含所有的项,因此上述事务集可以转化为如下的单值或布尔型事务集:
表中字母a~i表示项,而1和0表示该项在事务中的取值。在将上述事务集转换为多维数据立方体时,采用项集分段的思想,按照3个项分成1段,则上述项集可以分为3段,并将每段的三个布尔值当成二进制数,并转换为十进制数,则转换后的事务集为:
经过上述转换,该事务集可以表示为一个三维数据立方体,每个维的长度为6,7,6,也可以定义每个维的长度均为7,只不过此时会存在一些数据冗余,而在存储时用三维数组表示。根据分段时所选择的项的个数不同,可以得到不同的分段,则对应的数据立方体的维数和每个维的长度会有所不同,可以根据实际情况进行合理选择。
多值无序数据立方体是指事务集中每一个事务的每一个项的取值不是0和1,而是任意数,一般取值为整数;无序是指一个事务中项的取值是没有顺序的,例如对于一个三项集,取值为[123]和[312]的两个事务是一样的。
对于这样的多值无序事务集,在表示为多维数据立方体时,可以先将事务中的项按照从小到大排序,然后按照多维数据立方体的结构进行存储;也可以不排序,直接进行存储。为了命名方便,这样的事务集表示成的多维数据立方体命名为多值无序数据立方体。
多值有序数据立方体与多值无序数据立方体类似,多值有序是指事物集中每一个事务的每一个项的取值为任意数,一般为整数,且项的取值是有顺序的,取值为[123]和[312]的事务是不一样,表示两个不同的事务。在存储为多维数据立方体时,按照事务中项的顺序,依次存入多维数据立方体的对应维中。为了命名方便,这样的事务集表示成的多维数据立方体命名为多值有序数据立方体。
对于属性数据立方体,在进行关联规则挖掘时,经常要处理一些和属性有关的问题,例如对于一幅图像,经过面向对象的图像分割,图像被分割成若干个对象,对于每个对象,可以提取各种属性,如色调、熵、形状等等,如果要挖掘这些属性之间的关联规则,就需要用到属性数据立方体。
具体步骤是,首先计算每个对象的每个属性;然后按照一定的规则,对每个属性的值进行量化,量化等级需要根据实际情况确定,每个属性的量化等级可以相同,也可以不同;每一个对象的所有属性量化后可以用一个事务表示,一个属性对应事务中的一个项;最后将事务中的每一项依次存入多维数据立方体的某一维中。经过上述操作,这些属性数据即转化为多值数据立方体。由于该属性数据源与传统的数据源有所差异,所以在命名时将由属性转化的事务集构成的多维数据立方体命名为属性数据立方体。
第一生成模块52,用于根据所述多维数据立方体得到1-项集和1-项频繁集。
在具体实施中,第一生成模块52还用于统计所述事务集中每个值在每个维度上的出现频率以及每个维度上每个值的支持度,得到1-项集。
具体的,首先扫描一遍事务集,将事务集转化为多维数据立方体,同时记录下整个事务集的长度,设为Len。比如,将事务集转化为三维多值有序数据立方体,即每一个事务由三个项构成,项之间是有序的,并将该三维数据立方体表示为A。设置最小支持度为min_sup,最小置信度为min_cof。由于项是有序的,因此同一个数在三个维度上出现时,其意义是不一样的,此时在获取1-项集时需要单独处理。采用数组的循环操作,在三个维度上分别统计每个值出现的频度:
fork=1:maxkv
sup_k=sum(A(k,:,:))/Len;
end
其中maxkv表示在第一维上的最大值,sup_k是第一维上每个值的支持度,sum()是求和操作。A(k,:,:)表示三维数据立方体A中第一维等于k的所有子集。由于A的三个维度的长度是有限的,且远小于原始事务集的长度,因此数组求和的计算速度非常快。对三个维度都执行相同的操作,即可获得1-项集,由于事务中的项是有序的,因此依然用数组存储最终的项集,如下表所示:
在具体实施中,第一生成模块52还用于查找其支持度大于最小支持度的1-项集,得到1-项频繁集。
第二生成模块53,用于根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项集得到k+1-项集和k+1-项频繁集,其中k为大于且等于2的正整数。
第三生成模块54,用于根据1-项频繁集和k-项频繁集,产生1-项频繁集的所有子集和k-项频繁集的所有子集以生成所述事务集的关联规则。
在具体实施中,第三生成模块54还用于根据Apriori算法生成所述事务集的关联规则。
具体的,由于原始事务集和得到的各频繁项集均存储在多维数据立方体中,在生成关联规则时,生成步骤包括:
对于每个频繁项集,产生该频繁项集的所有子集,根据下面的公式判断是否产生一条规则:
其中l为某个频繁项,s为该频繁项的某个子集,如果满足此条件,则输出关联规则:
其中l-s表示频繁项l中去除s后剩下的子集,support(l)和分别是该规则的支持度和置信度。
生成关联规则的主要计算量在于获取每个频繁子集的支持度。传统方法是将每个子集与事先获取的各频繁集进行比较,如果匹配了,就获取其支持度,进而输出规则。一般而言,匹配的过程是比较耗时的,尤其是当最小支持度设置得比较低,获取的各频繁集比较多时,更耗时。本发明将每个频繁项都统一存储在多维数据立方体中,利用数组的快速寻址能力,能够快速地获取每个频繁子集的支持度,从而提高生成关联规则的速度。
在具体实施中,由于本发明的主要内容是从遥感影像中挖掘关联规则,因此以一幅302像素*302像素大小的QuickBird融合影像进行实验,以测试基于多维数据立方体的关联规则快速挖掘算法的有效性。在进行关联规则挖掘之前,需要先将彩色遥感影像灰度化,并进行灰度级的压缩,以减少数据量。按照以下公式进行彩色影像的灰度化:
Y=0.299R+0.587G+0.114B(4-7)
其中Y表示灰度化后的影像,R、G和B分别表示彩色影像的3个波段。然后直接采用最简单的分段线性压缩的方式,对灰度化后的影像进行灰度级压缩:
其中g表示压缩前的灰度级,G表示压缩后的最大灰度级,在下面的实验中,取G=8。
以下测试的内容是从灰度级压缩后的影像上提取像素之间的关联规则,为简单起见,仅考虑连续3个像素的关联规则。则该事务集中每个事务包含3个项,每个项的最大值为8,项之间是有顺序的,事务集中事务的最大数量为300*300=90000个,为测试事务数量对算法性能的影响,将事务数量从30000增加到90000。设置最小支持度从0.1%到0.5%,增量步长为0.05%,最小置信度为0.2,考察在某个事务数量水平下,运行时间随支持度变化的关系。测试环境为笔记本电脑,WindowsXP系统,2G内存,CPU为酷睿双核P8400,主频2.26GHz,运行环境为Matlab7.0。结果如图6所示,其中“3w”表示事务数量为30000,其他图例表示以此类推。
如图6所示的运行时间,包括从读取数据到输出关联规则的所有CPU时间。从图中可以看出,运行时间基本上维持在0.15秒左右,从整体上看,随着最小支持度的增加,运行时间会减少,这是因为最小支持度增加后,频繁项的数量会减少。由于在整个挖掘过程中,仅仅只遍历一遍原始事务集,而且在遍历事务集时将事务集转换为多维数据立方体,遍历多维数据立方体远比遍历事务集的效率高,因此总的运行时间非常低。当最小支持度增加到一定程度后,运行时间基本上保持稳定,有小幅波动,波动产生的原因主要是受操作系统后台运行的其他服务的影响。当最小支持度增加到一定程度后,运行时间基本上没有变化;随着事务数量的增加,运行时间也没有显著变化,说明本发明的挖掘算法对于事务集的大小和最小支持度的变化有一定的鲁棒性,能够保证较快速地挖掘出满足要求的关联规则。
在上述实验中,没有将该方法与现有的Apriori及FP-Growth等算法进行比较,原因在于,Apriori及FP-Growth等算法对数据有一定的要求,即同一个事务中,项的取值不能相同,也就是说,[225]这样的事务是不符合要求的。但是在本发明的实验测试中,影像经过灰度级压缩,相邻像素的灰度值很可能相等,那么在构成事务时,一个事务中项的取值有可能相同,即类似[225]这样的事务可能大量存在,而且,在本发明后续的基于像素和对象的影像检索中,类似的事务也会大量存在,因此Apriori及FP-Growth等算法不能适应于这种情况,因此在上述实验中,没有进行比较,只是对本发明算法进行了性能测试,以证明该算法的有效性以及对后续影像检索实验的适应性。
另外为了比较本发明算法与Apriori和FP-Growth算法的性能,在上述90000条事务构成的事务数据库实验中,当一个事务中有相同取值的项,则人为改变项的值,使得该事务中不具有相同值的项。此时,Apriori和FP-Growth算法能够适用于这种情况,其运行时间如图7所示。由于仅仅人为改动了某些项的值,可以认为对事务数据库基本上没有改变,因此,本发明方法的运行时间与前一个实验基本相同。对比图6和7图中的运行时间,可以得知,本发明的挖掘方法在时间性能上远小于Apriori和FP-Growth方法,体现了本发明方法在性能上的优越性,同时也体现了本发明方法在适用范围上的优越性。
本发明实施例中的关联规则的挖掘装置,整个关联规则挖掘过程仅遍历了一遍事务集,虽然在获取频繁项集及关联规则时需要多次遍历多维数据立方体,但遍历后者的时间消耗要远小于遍历事务集,因此从运行速度上来说,本发明的方法要明显快于传统的挖掘算法,能减小CPU的运行时间。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (9)
1.一种关联规则的挖掘方法,其特征在于:所述挖掘方法包括以下步骤:
获取和扫描事务集,将所述事务集转化为多维数据立方体,并记录下整个事务集的长度;
根据所述多维数据立方体得到1-项集和1-项频繁集;
根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项频繁集得到k+1-项集和k+1-项频繁集,其中k为大于且等于2的正整数;
根据1-项频繁集和k-项频繁集,产生1-项频繁集和k-项频繁集的所有子集以生成所述事务集的关联规则。
2.如权利要求1所述的挖掘方法,其特征在于:所述多维数据立方体包括单值数据立方体,多值无序数据立方体,多值有序数据立方体和属性数据立方体。
3.如权利要求1或2所述的挖掘方法,其特征在于:所述将所述事务集转化为多维数据立方体的步骤,包括以下步骤:
根据所述事务集中每个事务的项的取值,将所述事务集转化为多维数据立方体。
4.如权利要求3的挖掘方法,其特征在于:所述根据所述多维数据立方体得到1-项集和1-项频繁集的步骤,包括以下步骤:
统计所述事务集中每个值在每个维度上的出现频率以及每个维度上每个值的支持度,得到1-项集;
查找其支持度大于预设的支持度的1-项集,得到1-项频繁集。
5.如权利要求3的挖掘方法,其特征在于:根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项频繁集得到k+1-项集和k+1-项频繁集,包括以下步骤:
将1-项频繁集中的每两个频繁项进行逻辑或运算再进行求和运算,得到1-项频繁集中的多个运算结果;
判断每个运算结果是否等于2,如果是,所述运算结果对应的两个频繁项进行相交,得到当前2-项集;
计算当前2-项集的支持度,查找其支持度大于最小支持度的2-项集,得到2-项频繁集;
重复由1-项集生成2-项频繁集的过程,将k-项频繁集中的每两个频繁项进行“逻辑或”运算再进行求和运算,得到k-项频繁集中的多个运算结果;
判断每个运算结果是否等于k+1,如果是,所述运算结果对应的两个频繁项进行相交,以及根据所述相交结果得到当前的k+1-项集;
计算当前k+1-项集的支持度,查找其支持度大于最小支持度的k+1-项集,得到k+1-项频繁集。
6.如权利要求3的挖掘方法,其特征在于:根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项频繁集得到k+1-项集和k+1-项频繁集,包括以下步骤:
将1-项频繁集中的每两个频繁项进行逻辑或运算再进行求和运算,得到1-项频繁集中的多个运算结果;
判断每个运算结果是否等于2,如果是,所述运算结果对应的两个频繁项进行相交,得到当前2-项集;
计算当前2-项集的支持度,查找其支持度大于最小支持度的2-项集,得到2-项频繁集;
将k-项集与1-项频繁集进行逻辑或运算再进行求和运算,如果运算结果等于k+1,则进行相交,得到k+1-项集;
计算当前k+1-项集的支持度,查找其支持度大于最小支持度的k+1-项集,得到k+1-项频繁集。
7.如权利要求3的挖掘方法,其特征在于:根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项集得到k+1-项集和k+1-项频繁集,包括以下步骤:
将1-项频繁集中的每两个频繁项进行逻辑或运算再进行求和运算,得到1-项频繁集中的多个运算结果;
判断每个运算结果是否等于2,如果是,所述运算结果对应的两个频繁项进行相交,得到当前2-项集;
计算当前2-项集的支持度,查找其支持度大于最小支持度的2-项集,得到2-项频繁集;
判断k-项频繁集的项数是否大于所述1-项频繁集的项数;
如果是,将k-项集与1-项频繁集进行逻辑或运算再进行求和运算,如果运算结果等于k+1,则进行相交,得到k+1-项集;计算当前k+1-项集的支持度,查找其支持度大于最小支持度的k+1-项集,得到k+1-项频繁集;
如果否,将k-项频繁集中的每两个频繁项进行逻辑或运算再进行求和运算,得到k-项频繁集中的多个运算结果;判断每个运算结果是否等于k+1,如果是,所述运算结果对应的两个频繁项进行相交,以及根据所述相交结果得到当前的k+1-项集;计算当前k+1-项集的支持度,查找其支持度大于最小支持度的k+1-项集,得到k+1-项频繁集。
8.如权利要求1的挖掘方法,其特征在于:所述根据1-项频繁集和k-项频繁集,产生1-项频繁集的所有子集和k-项频繁集的所有子集以生成所述事务集的关联规则,具体为:
对于每个频繁项集,产生该频繁项集的所有子集,根据下面的公式判断是否产生一条规则:
其中l为某个频繁项,s为该频繁项的某个子集,如果满足此条件,则输出关联规则:
其中l-s表示频繁项l中去除s后剩下的子集,support(l)和分别是该规则的支持度和置信度。
9.一种关联规则的挖掘装置,其特征在于:所述挖掘装置包括:
转化模块,用于获取和扫描事务集,将所述事务集转化为多维数据立方体,并记录下整个事务集的长度;
第一生成模块,用于根据所述多维数据立方体得到1-项集和1-项频繁集;
第二生成模块,用于根据1-项频繁集得到k-项集和k-项频繁集,以及根据k-项频繁集得到k+1-项集和k+1-项频繁集,其中k为大于且等于2的正整数;
第三生成模块,用于根据1-项频繁集和k-项频繁集,产生1-项频繁集的所有子集和k-项频繁集的所有子集以生成所述事务集的关联规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610005402.XA CN105677837A (zh) | 2016-01-05 | 2016-01-05 | 一种关联规则的挖掘方法和关联规则的挖掘装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610005402.XA CN105677837A (zh) | 2016-01-05 | 2016-01-05 | 一种关联规则的挖掘方法和关联规则的挖掘装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105677837A true CN105677837A (zh) | 2016-06-15 |
Family
ID=56299188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610005402.XA Pending CN105677837A (zh) | 2016-01-05 | 2016-01-05 | 一种关联规则的挖掘方法和关联规则的挖掘装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677837A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126577A (zh) * | 2016-06-17 | 2016-11-16 | 北京理工大学 | 一种基于数据源划分矩阵的加权关联规则挖掘方法 |
CN106295811A (zh) * | 2016-07-29 | 2017-01-04 | 上海华力微电子有限公司 | 设备定期保养效果分析方法 |
CN106649479A (zh) * | 2016-09-29 | 2017-05-10 | 国网山东省电力公司电力科学研究院 | 一种基于概率图的变压器状态关联规则挖掘方法 |
CN107703383A (zh) * | 2017-09-21 | 2018-02-16 | 国网上海市电力公司 | 一种信息采集系统故障诊断知识库的建立方法 |
CN109614507A (zh) * | 2018-11-22 | 2019-04-12 | 浙江大学 | 一种基于频繁项挖掘的遥感图像推荐装置 |
CN110851442A (zh) * | 2019-10-23 | 2020-02-28 | 中国科学院国家空间科学中心 | 科学实验卫星任务数据的多维数据立方体构建系统及方法 |
CN113051742A (zh) * | 2021-03-18 | 2021-06-29 | 南京信息工程大学 | 基于关联规则的立体栅格气象要素短临预报方法 |
CN113570437A (zh) * | 2021-07-30 | 2021-10-29 | 中国银行股份有限公司 | 一种产品推荐方法和装置 |
CN114004286A (zh) * | 2021-10-19 | 2022-02-01 | 河海大学 | 一种基于频繁项挖掘的多维时间序列同步模体发现方法 |
-
2016
- 2016-01-05 CN CN201610005402.XA patent/CN105677837A/zh active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126577A (zh) * | 2016-06-17 | 2016-11-16 | 北京理工大学 | 一种基于数据源划分矩阵的加权关联规则挖掘方法 |
CN106295811A (zh) * | 2016-07-29 | 2017-01-04 | 上海华力微电子有限公司 | 设备定期保养效果分析方法 |
CN106295811B (zh) * | 2016-07-29 | 2019-08-23 | 上海华力微电子有限公司 | 设备定期保养效果分析方法 |
CN106649479B (zh) * | 2016-09-29 | 2020-05-12 | 国网山东省电力公司电力科学研究院 | 一种基于概率图的变压器状态关联规则挖掘方法 |
CN106649479A (zh) * | 2016-09-29 | 2017-05-10 | 国网山东省电力公司电力科学研究院 | 一种基于概率图的变压器状态关联规则挖掘方法 |
CN107703383A (zh) * | 2017-09-21 | 2018-02-16 | 国网上海市电力公司 | 一种信息采集系统故障诊断知识库的建立方法 |
CN109614507A (zh) * | 2018-11-22 | 2019-04-12 | 浙江大学 | 一种基于频繁项挖掘的遥感图像推荐装置 |
CN110851442A (zh) * | 2019-10-23 | 2020-02-28 | 中国科学院国家空间科学中心 | 科学实验卫星任务数据的多维数据立方体构建系统及方法 |
CN110851442B (zh) * | 2019-10-23 | 2022-07-12 | 中国科学院国家空间科学中心 | 科学实验卫星任务数据的多维数据立方体构建系统及方法 |
CN113051742A (zh) * | 2021-03-18 | 2021-06-29 | 南京信息工程大学 | 基于关联规则的立体栅格气象要素短临预报方法 |
CN113051742B (zh) * | 2021-03-18 | 2023-05-09 | 南京信息工程大学 | 基于关联规则的立体栅格气象要素短临预报方法 |
CN113570437A (zh) * | 2021-07-30 | 2021-10-29 | 中国银行股份有限公司 | 一种产品推荐方法和装置 |
CN114004286A (zh) * | 2021-10-19 | 2022-02-01 | 河海大学 | 一种基于频繁项挖掘的多维时间序列同步模体发现方法 |
CN114004286B (zh) * | 2021-10-19 | 2024-04-26 | 河海大学 | 一种基于频繁项挖掘的多维时间序列同步模体发现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677837A (zh) | 一种关联规则的挖掘方法和关联规则的挖掘装置 | |
US10776685B2 (en) | Image retrieval method based on variable-length deep hash learning | |
CN102609441B (zh) | 基于分布熵的局部敏感哈希高维索引方法 | |
Kanungo et al. | The analysis of a simple k-means clustering algorithm | |
Baumann | A database array algebra for spatio-temporal data and beyond | |
US20110075927A1 (en) | Fast image segmentation using region merging with a k-nearest neighbor graph | |
US11366836B2 (en) | Automated geospatial data analysis | |
CN106844664B (zh) | 一种基于摘要的时间序列数据索引构建方法 | |
KR20040005895A (ko) | 거리 측정기를 사용한 이미지 검색법 | |
KR20030066582A (ko) | 순환적 히스토그램 벡터 발생과 매칭하는 팔레트-기초히스토그램 | |
CN110135180B (zh) | 满足节点差分隐私的度分布直方图发布方法 | |
Wehr et al. | Parallel kd-tree construction on the gpu with an adaptive split and sort strategy | |
Venkat | The curse of dimensionality: Inside out | |
JP2007531136A (ja) | 画像を有するデータベースからビジュアルオブジェクトカテゴリを抽出する方法及び装置 | |
CN1570969A (zh) | 一种基于显著兴趣点的图像检索方法 | |
CN104881668A (zh) | 一种基于代表性局部模式的图像指纹提取方法及系统 | |
CN101339556A (zh) | 一种利用圆锥坐标实现图像颜色相似对比的方法 | |
CN108304588B (zh) | 一种基于k近邻和模糊模式识别的图像检索方法及系统 | |
Yakin et al. | Application of content based image retrieval in digital image search system | |
CN100353379C (zh) | 一种基于图像纹理特征的图像检索方法 | |
Du et al. | Evaluating structural and topological consistency of complex regions with broad boundaries in multi-resolution spatial databases | |
CN110489448A (zh) | 基于Hadoop的大数据关联规则的挖掘方法 | |
CN109299295A (zh) | 蓝印花布图像数据库搜索方法 | |
CN117015812A (zh) | 用于对数据点进行聚类的系统 | |
Yang et al. | Adaptive density peak clustering for determinging cluster center |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160615 |