一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于独立概率完全加权的并行关联规则挖掘方法与流程

2022-03-16 14:01:20 来源:中国专利 TAG:


1.在大数据时代,数据挖掘成为了一项热门技术,在数据挖掘领域中,关联规则挖掘是被广泛研究的一种重要模型,基于关联规则的数据挖掘目的是想要找出数据集中的频繁模式。但是传统的关联规则挖掘方法往往忽略数据库中各个项目的重要程度的区别,因此在分析实际数据时,利用加权关联规则是有意义的,它可以发现那些出现频率较低但却是比较重要的关联规则。该技术广泛的应用于教育行业、电力系统、金融及零售业市场营销、互联网、医疗等领域。本发明提出了基于独立概率完全加权的并行关联规则挖掘方法,更加适用于各行业的真实事务数据库的关联规则挖掘中。


背景技术:

2.数据挖掘是在大型数据存储库中,自动的发现有用信息的过程。良好的数据挖掘方法可以高效快速的发现数据间存在的规律从而得到有用信息,关联规则法是数据挖掘经典方法之一。当前经典的关联规则挖掘方法对大数据集进行挖掘时运行效率将会受到单机计算资源的限制,原因在于:传统的串行方法不能将大数据集一次性的放入到内存中,随着数据集规模的增加,挖掘频繁项集的效率会大大降低。所以本发明使用了基于内存计算的spark分布式平台。
3.当前经典的关联规则挖掘方法在面对大规模数据集进行挖掘时也存在速度慢的问题,对于apriori方法在运算过程中需要反复读取数据库,会给系统i/o造成很大的负荷;fp-growth方法在数据集规模较大或设置的支持度阈值较小时就会导致生成树的结构过大,容易发生内存溢出的危险;eclat方法没有对产生的候选项集进行删减操作,若项目出现的频率非常高,在进行交集操作时会消耗系统大量内存从而影响方法效率。对于以上经典方法存在的缺陷,需要对其进行改进才能适应大数据挖掘。所以本发明使用了前缀划分技术及位图存储技术以解决上述缺陷,提高方法运行效率。
4.同时在以上提到的关联规则挖掘方法中,都涉及到一个前提假设:数据库中各项目的重要性相同且分布是均匀的。但在真实事务数据库中项目间的重要程度往往具有一定的差异性,所以在经典关联规则方法中无论将支持度阈值设置的偏低或偏高都很难得到更有价值的关联规则。针对此问题,加权关联规则挖掘被广泛的探讨和研究,其思想是根据项目的实际意义由用户或领域专家为项目赋予合适的权重并参与到频繁项集的生成中。但是这些权重是独立于事务数据库之外的且在整个挖掘过程中是保持不变的,所以如何实现一种依赖于事务集且能够适用于大多数实验数据集与真实数据集的加权方式成为该领域亟待解决的问题。所以本发明提出了一种基于项的独立概率完全加权方式进行项的权重赋予。


技术实现要素:

5.为了解决大数据下的加权关联规则挖掘问题,本发明公开了一种基于独立概率完全加权的并行关联规则挖掘方法,能够提高挖掘大数据集时的运行速率,并通过独立概率
完全加权的方式,在有限数据集内也能挖掘出更多有价值的隐含规则。为此,本发明提供了如下技术方案:
6.一种基于独立概率完全加权的并行关联规则挖掘方法,其特征在于对数据进行了预处理操作及依赖于数据集的独立概率权值计算和前缀划分原则。预处理操作及依赖于数据集的独立概率权值计算中包含了数据库的类型判断及形式转换,权值计算操作及过滤操作并以位图保存tidset。对于数据库的类型判断及形式转换,就是将水平数据库形式转换为垂直数据库形式,将数据库操作转换为基于内存的集合计算;对于权值计算,就是通过该项在当前数据集中的独立出现频次进行计数,在剪枝操作中参与计算候选项集的加权支持度;对于过滤操作,就是在映射出所有的候选项集时,过滤掉不满足最小加权支持度阈值的候选项集,得到有效候选项集从而加快方法运行效率;对于位图保存tidset操作,就是在有关于项集存储时直接将每个事务所对应的tidset用位图来保存,以便于后续加快求交集的速度,提高运行效率。前缀划分原则可以在计算频繁k-项集时将候选项集规模控制在2,根据此原则可以大幅减少要遍历数据集的大小,并保证结果可靠性,以此提高运行效率。具体包括:
7.数据库形式转换:数据库形式转换就是将数据库存储的数据形式从水平数据库形式即《tid:itemid》形式,转化为垂直数据库形式即《itemid:tid》形式,这样可以将数据库之间的运算转换为集合之间的运算。
8.独立概率权值计算:对所有事务编号进行计数,即为该项在数据集中的出现频数tidsetcount作为该项的权值参与进项集加权支持度的计算过程中,这样能达到挖掘出隐藏在数据库中的高价值规则的目的。
9.位图保存tidset:使用位图保存就可以将原来的集合之间的运算转换到位图之间的计算。位图是一种基于内存的特殊数据结构,将加权频繁项集tidset中的每一个值在位图的对应位置上存入1就达到了存储加权频繁项集tidset的目的,在进行两个加权频繁项集之间的交集运算时只需要进行位运算,这样可以在数据量比较大的情况下也能很好的保持其快速的特点,大大的提高了方法的运行效率。
10.前缀划分原则:在加权频繁k-项集(k》2)的迭代计算中当获取到加权频繁2-项集时要对加权频繁2-项集进行前缀划分,这时提取的前缀规模为1,提取后的剩余部分再次进行一次加权频繁2-项集运算,得到新的加权频繁2-项集,再与之前规模为1的前缀进行拼接就得到了加权频繁3-项集。以此类推,对加权频繁k-项集(k》2)计算时,只需对加权频繁(k-1)-项集进行前缀划分,然后对每个加权频繁项集剩余的第k项进行步骤5的运算得到加权频繁2-项集。再与对应的前缀项集进行拼接即得到了加权频繁k-项集,这样可以将加权频繁k-项集的计算规模减少到频繁3-项集的规模,从而提高方法的运行效率。
11.基于独立概率完全加权的并行关联规则挖掘方法包括:步骤1:给出方法的数据集输入路径,关联规则输出路径,最小加权支持度阈值;步骤2:对数据集形式进行判断,如果不是垂直形式则转换成垂直形式;步骤3:对垂直数据集中的项进行独立概率权值计算并用位图保存所有项的tidset;步骤4:以最小加权支持度阈值为依据,对候选1-项集进行过滤得到加权频繁1-项集;
步骤5:映射出所有候选2-项集并进行权值计算,最后过滤得到加权频繁2-项集;步骤6:迭代的对当前加权频繁项集执行前缀划分方法和计算加权频繁2-项集,得到加权频繁k-项集(k》2)。
12.相比于现有技术,本发明具有如下有益效果:
13.1.本发明提出的基于独立概率完全加权的并行关联规则挖掘方法能够快速高效的对大数据集进行挖掘且对内存和i/o占用较小。
14.2.本发明提出的基于独立概率完全加权的并行关联规则挖掘方法能够使最终挖掘出的有效关联规则数大幅增加,得到原本隐藏在数据集中但未能被有效挖掘的关联规则。
附图说明
15.图1为本次发明的方法流程图;
16.图2为计算独立概率权值及过滤生成加权频繁1-项集的过程;
17.图3为加权频繁2-项集的生成过程;
18.图4为前缀划分技术的过程;
19.图5为本发明提出的方法同其他经典方法在t40i10d100k.dat数据集上运行时间效率比较。
20.图6为本发明提出的方法同其他经典方法在学生成绩真实数据集studentsc.dat上挖掘规则数的比较。
具体实施方式
21.下面结合附图对本发明的技术方案做进一步的说明:
22.图1所示为本发明的方法流程图,根据流程图中所示的内容对每一步进行详细说明。
23.在方法的第一阶段中,首先从分布式文件系统(hdfs)中将数据以spark rdd的形式加载出来并保存。然后将水平数据库转化为本文所需要的垂直数据库,此时数据以(item tidset)的垂直形式存储于rdd中,在将处理好的数据保存回hdfs中。通过rdd再次迭代垂直数据,使用map()将所有事务中包含的每一个项(item)及该事物所对应的事务编号(tid)形成键值对,使用reduce()将每一个项及所对应的所有事务编号进行合并。对所有事务编号进行计数,即为该项在数据集中的出现频数(tidsetcount)作为该项的权值。通过权值与该项的支持度进行乘积运算,将所得结果与给定的最小加权支持度阈值进行比较,如果小于则将该项为非加权频繁项;如果大于则该项为加权频繁项。把数据集中的非加权频繁项过滤掉,就得到了加权频繁1-项集,最后,将加权频繁1-项集的tidset保存在位图中,即将tidset中的每一个值在位图的对应位置存入1。
24.在方法的第二阶段中,首先要计算加权频繁2-项集,在根据加权频繁2-项集得出加权频繁k-项集(k》2),在计算加权频繁2-项集时,通过循环遍历所有加权频繁1-项集,对所有可能的候选项集的两个项的tidset进行位图交集操作,该交集的长度与该候选2-项集的权值进行乘积运算,所得结果即为该2-项集的加权支持度,与最小加权支持度阈值进行比较,大于或等于的即为加权频繁2-项集。在对加权频繁k-项集进行计算时,需要先使用前
缀划分策略对加权频繁2-项集进行前缀划分,得出共享前缀,各分布式计算节点在计算加权频繁3-项集时,只需在共享前缀的基础上,重复计算除共享前缀外的加权频繁2-项集,在与共享前缀进行拼接,生成候选3-项集,筛选得到加权频繁3-项集。频繁2-项集的计算开销,远远小于计算频繁3-项集,以此类推得到新的共享前缀,这将大大减少加权频繁k-项集的计算规模,减少通信开销,提高方法效率。
25.对步骤1中参数设置进行说明,方法的输入路径为要进行关联规则挖掘计算的数据集存储路径,该数据集可以存放在本地也可以存放在hdfs上;输出路径为计算好的频繁项集存放地址,要给出的是一个文件夹地址,该文件夹名称不能存在,同样可以为本地也可以为hdfs;最小加权支持度阈值的给出是根据不同的数据集大小确定的,对于实验中用到的studentsc.dat真实数据集,给出的加权支持度阈值分别为30,40,50,70和90。t40i10d100k.dat实验数据集,给定的最小支持度阈值分别为1000k,640k和360k。
26.对步骤2中提到的数据库形式转换进行说明,数据库形式转换就是将水平数据库形式转换成垂直数据库形式,即从《tid,itemset》形式转换为《item,tidset》形式。eclat方法虽然利用(k-1)-项集作为生成k-项集的前缀,减少了扫描数据库的时间消耗,提高了方法效率,但是在当数据量的规模较大或最小支持度阈值较小时,候选项集的数目会随之增大,生成k-项集的前缀数量也会增多,当进行交集操作的同时,会给cpu带来巨大的压力。即使在分布式计算框架下,如果当前结点的计算能力不足以完成被分配的任务,则系统会自动将该任务分配到计算能力更强的结点上,此调度过程所需的代价是巨大的。所以在数据预处理阶段,先将数据库形式转换为垂直数据结构,以便于在对频繁k-项集进行计算时,可以大幅度减少中间候选集的数量,避免频繁任务调度所造成大量计算资源的消耗,提高方法效率。
27.如表1所示给出水平数据库形式的简单示例。表1所示为水平数据库存放形式
28.其中tid表示事务的id号,itemset表示该id号下包含的项集。
29.如表2所示将表1中给出的水平数据库示例转换成垂直数据库形式。表2所示为垂直数据库存放形式
30.其中item表示项,tidset表示该项都出现在哪个事务的id下。
31.如表1所示,水平数据库中tid为1时的项集分别为a,b,c,d,tid为2时项集分别为b,c,d,e,tid为3时项集分别为a,c,d,tid为4时项集分别为b,d。将当前的水平数据库转换成垂直数据库后,如表2中所示,a项分别出现在tid为1,3的项集中,项b分别出现在tid为1,2,4的项集中,项c分别出现在tid为1,2,3的项集中,项d出现在tid为1,2,3,4的项集中,项e分别出现在tid为2的项集中。至此,转换成垂直数据库成功。
32.上述所有过程之和为数据预处理的过程,如表3所示为数据预处理的伪代码实现:表3数据预处理方法伪代码
33.对步骤3中提到的对垂直数据集中的项进行独立概率权值计算并用位图保存所有项的tidset进行说明。步骤2中生成的垂直数据库已经是每一个项目item对应了事务编号集tidset的形式,在权值计算时可以应用此结果,对每一个tidset进行计数后得到了该项所对应在事务数据库中的频数p(ij),即ij项的权值w(ij),计算结果存放到哈希结构中。
34.对步骤4中提到的过滤出加权频繁1-项集进行说明。为降低由数据集庞大或者最小加权支持度过低所导致的调度代价,在权值计算完成后,直接对加权支持度小于最小加权支持度的数据进行过滤得到加权频繁1-项集,从而减少整个方法计算过程中产生的中间候选集。
35.如图2所示,给出了由垂直数据库得到项的权值并在最小加权支持度为4时,过滤加权频繁1-项集的计算过程。项e的tidset为{2},只有一个元素即元素e只在数据库中的第2行出现一次,所以项e的权值为1,可以得到1-项集{e}的加权支持度为1,由于小于设定的最小加权支持度阈值4,所以将该项集从垂直数据库中删除,剩余的a,b,c,d满足要求,留在垂直数据库中,就得到了过滤后的加权频繁1-项集{{a}:(1,3),{b}:(1,2,4),{c}:(1,2,3),{e}:(1,2,3,4)}。对于加权频繁1-项集,采用位图的形式存放tidset,由于位图是以位进行操作的,所以将位图中与tidset中的值对应的位置标号设为1即可。位图的交集操作占用的系统资源远远小于集合求交集的占用资源。如表4所示为权值计算及过滤加权频繁1-项集的伪代码实现:表4权值计算及过滤加权频繁1-项集
36.对步骤5中提到的计算加权频繁2-项集进行说明,如图3所示为计算加权频繁2-项集过程。采用对两个项集取交集的思想同时对两个加权频繁1-项集组合生成候选2-项集itemset及对所对应的两个位图取交集得到该候选2-项集的tidset。两个事务项分别获取对应的权值并计算出该候选2-项集的权值后得到该候选2-项集的加权支持度并与最小加权支持度阈值进行比较,过滤得到加权频繁2-项集。通过加权频繁1-项集得到新的候选2-项集:{a,b},{a,c},{a,d},{b,c},{b,d},{c,d}。由于{a,b}的加权平均支持度为2,小于规定的加权最小支持度阈值4,所以将该候选2-项集过滤掉后,获得加权频繁2-项集{{a,c}:(1,3),{a,d}:(1,3),{b,c}:(1,2),{b,d}:(1,2,4),{c,d}:(1,2,3)}。由于在权值计算中,已经将数据项作为key,该项的权值作为value存放到哈希结构中,所以在计算候选2-项集的平均权值时,只需要以数据项作为搜索条件,直接从哈希结构中读取出相对应的权值。采
取该种对候选2-项集平均权值的动态计算方法,就可以避免预先计算好所有可能的候选2-项集的平均权值所消耗的大量计算资源及存储资源。
37.表5所示为计算加权频繁2-项集的伪代码实现:表5计算加权频繁2-项集方法伪代码
38.对步骤6中提到的计算加权频繁k-项集(k》2)进行说明。该步骤主要包含两个部分,分别为对频繁(k-1)-项集进行前缀划分以及根据前缀划分后的数据计算频繁2-项集并加入前缀进而得到频繁k-项集。
39.首先将加权频繁项的前第(k-1)个项提取出来,作为该加权频繁项集的前缀项集,将提取之后剩余的第k项与当前加权频繁项集的tidset组合生成新的哈希表结构,在spark框架中,被拆分的前缀项集和剩余的哈希表结构通过map()被存放在一个rdd中,将所有加权频繁项完成拆分之后,通过执行reducebykey()算子对有相同前缀项集的rdd进行合并成一个rdd,该rdd包含两部分,第一部分为前缀项集作为key值,第二部分为拥有该前缀项集的哈希表结构所构成的大的哈希表结构。
40.其次通过前缀划分我们在对计算加权频繁k(k》2)-项集计算时,只需对加权频繁(k-1)-项集进行前缀划分,然后对每个加权频繁项集剩余的第k项进行加权频繁2-项集的计算,再与对应的前缀项集进行拼接即得到了加权频繁k-项集。由于对2-项集的挖掘要远远小于对k(k》2)-项集挖掘所需消耗的计算资源,所以使用该前缀划分策略可以大幅度提高方法的执行效率。如图4所示为前缀划分策略的示例,以b为前缀的加权频繁2-项集{{b,c}:(1,2),{b,d}:(1,2,4)}进行前缀划分的过程:首先通过spark中的map()转换算子进行前缀提取得到{b,{c:(1,2)}},{b,{d:(1,2,4}},然后通过reducebykey()行动算子进行合并得到最后的前缀划分结果{b,{c:(1,2),d:(1,2,4)}}。前缀划分后除去前缀之外的部分{c:(1,2),d:(1,2,4)}进行加权频繁2-项集的计算,得到{{c,d}:(1,2)}由于该2-项集的加权支持度为7,大于最小加权支持度的阈值,所以只需将前缀b加入到{c,d}中,就得到了加权频繁3-项集{{b,c,d}:(1,2)}。
41.以此类推,当对频繁k-项集的计算时以自底向上的形式并行的进行迭代,用加权频繁k-项集生成加权频繁(k 1)-项集。在每一次进行前缀划分前,进行一次判断,如果当前
项集已经是空集则终止对加权频繁(k 1)-项集的迭代,反之则继续进行迭代计算。即通过spark框架,将项集分配给不同的计算结点,进行前缀划分计算,重复进行计算加权频繁2-项集等步骤,将前缀项集与加权频繁2-项集进行拼接,生成加权频繁k-项集。此过程中,前缀项集中项的个数为(k-2)个,与新生成的加权频繁2-项集拼接后就得到了规模为k的加权频繁项集。
42.如表6所示为计算频繁k-项集伪代码实现:表6计算加权频繁k-项集方法伪代码
43.为了验证本发明所提出方法的正确性,在t40i10d100k数据集上与加权mreclat方法的处理结果进行对比,t40i10d100k数据集是被广泛应用关联规则挖掘的数据集和比较关联规则挖掘方法的性能;在某大学计算机科学与技术学院2013-2016级全体学生成绩数据(studentsc)上与无加权sparkeclat方法的处理结果进行对比。
44.数据集的参数如表7所示,常用在可接受的范围内比较方法的性能。表中avg.length表示事务的平均长度,#items表示项的个数,#trans表示数据库中事务的总数,size表示数据集的大小。表7数据集参数表7数据集参数
45.对于t40i10d100k.dat数据集,选择较低的加权支持度分别为1000000,640000,1000,为了保证实验结果的正确性,设计三组不同加权支持度阈值进行实验,并在每次方法输出完全一致的情况下对5次运行时间取平均数作为最终实验结果,最终实验结果如图5所示。各个方法均能完成任务,在同一数据集、同一加权支持度阈值下,本发明的方法的运行
时间要远小于mapreduce下的加权eclat方法。当加权支持度阈值为1000000的时,本文方法优于对比方法约26倍,随加权支持度阈值的降低,加权频繁项集的数目和规模也随之增多,对比方法执行所消耗的时间近似于直线式增长,而本发明的方法的运行时间增长较为缓慢,基本保持水平。当加权支持度阈值为360000时,本文方法优于对比方法约184倍,发生这种情况的原因是:本文方法采用的是spark框架,将运算中间结果存入内存中,减少大量i/o通信的时间,使用位图代替集合的方式使交集运算时间消耗大大降低之外,还通过前缀划分的方式使规模为k的加权频繁项集运算降低为规模为2的加权频繁项集的运算,从而提升了运算效率,减少了方法运行时间。由此可知本文方法性能的提升会随数据集规模的增大而体现的愈发明显。
46.对于真实数据集studentsc.dat数据集,选择的支持度阈值分别为30,40,50,70,90,为保证实验结果的正确性,在支持度阈值一致的条件下进行了五组实验进行结果对比。比较结果如图6所示。可以看出,在同一数据集与支持度阈值的情况下,本发明的方法生成的规则数要远大于spark下的不加权eclat方法。当支持度为90时,本发明方法通过加权挖掘过程,生成的规则数比speclat方法多84条,这种优势会随着支持度阈值的减小而逐渐变大。当支持度为30时,本发明方法可以挖掘出2409条有效规则相比speclat方法多挖掘出2111条规则,因为同样对相同数量的1-项集进行关联规则挖掘时,本发明方法可以挖掘出更多有效规则,获取更多的信息,这些信息往往是隐藏在项集之间且常规关联规则挖掘方法无法挖掘出来的规则。两种方法在真实数据集studentsc中挖掘出的候选项集hi、加权频繁项集fi及关联规则数量比较如表8所示,其中的项分别代表不同的科目:{d1}电子技术(模拟)、{n1}概率论与数理统计、{f1}复变函数、{f2}积分变换、{g1}高等数学(一)、{g2}高等数学(二)。当本发明方法和对比方法speclat对studentsc实验数据集进行2-项集的挖掘时设置合适支持度阈值,保证两个方法的候选2-项集hi相同。通过分析两个方法对相同候选2-项集进行频繁3-项集挖掘的结果可以得出:本发明发法在挖掘出对比方法所挖掘的关联规则基础上可以对隐藏信息进行进一步的挖掘从而得到更多的关联规则。如频繁项集{n1,x1}表示学生在概率论与数理统计与线性代数这两门课挂科之间体现了关联关系,其指导老师可以根据此规则对同学进行成绩预警,促进学生学习、降低挂科率。表8两种方法在studentsc中挖掘的频繁2-项集实例
47.发生以上情况的原因是:本发明方法采用的是基于独立概率完全加权的挖掘方式,通过取项集平均权值的方式在判断候选k-项集是否是频繁项集时降低了大概率事件的
加权支持度,提高了小概率事件的加权支持度,使得这部分小概率事件可以参与到加权频繁k-项集的生成过程中,而不是随着项集规模k的增大而被大量过滤掉,最后以关联规则的方式体现到运算结果中。这样的关联规则可以更加全面的、真实的体现该数据集中隐藏信息,最大程度的发挥关联规则在实际应用领域的指导意义。
48.综上所述,针对eclat挖掘效率低及不能在有限的数据集中挖掘出更有价值的关联规则的问题,给出了并行的独立概率完全加权关联规则方法,该方法在eclat方法只需要遍历一次数据库的基础上通过采取位图存储频繁项集及通过前缀划分与设置支持度阈值共同剪枝的方法同时应用spark分布式计算框架使方法的运行效率得到大幅度的提升,并且本发明方法通过独立概率完全加权,提升一部分项集的加权支持度使得最终挖掘出的有效关联规则数大幅增加,得到原本隐藏在数据集中,但是未能被挖掘的有效信息。同时本文方法可以在低支持度与高支持度的情况下,保证方法的运行高效性及挖掘的有效性,可广泛应用于各行业的事务数据库的关联规则挖掘中。
49.以上所述,是结合附图对本发明的方法进行的详细介绍,本文的具体实施方式只是用于帮助理解本发明的方法。对于本技术领域的普通技术人员,依据本发明的思想,在具体实施方式及应用范围内均可有所变更和修改,故本发明书不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献