频繁项集挖掘算法的优化方法
【专利说明】频繁项集挖掘算法的优化方法
[0001]
技术领域
[0002 ]本发明涉及数据处理领域,具体地,涉及一种频繁项集挖掘算法的优化方法。
【背景技术】
[0003]频繁项集挖掘算法用于挖掘经常一起出现的item集合(称为频繁项集),通过挖掘出这些频繁项集,当在一个事务中出现频繁项集的其中一个item,则可以把该频繁项集的其他item作为推荐。
[0004]常见的频繁项集挖掘算法有两类,一类是Apr1r i算法,另一类是FPGrowth。FPGrowth是基于Apr1ri算法优化而成。FPgrowth算法相对于Apr1ri,最大的突破是缩减了数据的迭代次数。Apr1ri在计算频繁项集需要进行K-1次计算,K为频繁一项集的个数,而Fpgrowth通过构建fptree只需要遍历2次数据就能完成频繁项集的计算。
[0005]随着信息化的发展,数据的爆发性增多,数据的复杂性大大增加。虽然通过hadoop,spark,Fpgrowth等技术可以缩短频繁项集的计算时间和数据的迭代次数,但是不同来源的数据,会造成频繁项集的数量集的增大和无效频繁项集的增多。项目中实际使用效果并不精准,往往推荐出错误的结果。而且无效数据量会增大频繁项集的大小,使项目的性能和成本不能满足需求。
【发明内容】
[0006]本发明的目的在于,针对上述问题,提出一种频繁项集挖掘算法的优化方法,以实现缩小数据量大小,以及缩减数据计算过程和数据存储的优点。
[0007]为实现上述目的,本发明采用的技术方案是:
一种频繁项集挖掘算法的优化方法,包括:
接收数据;
对于接收的数据,使用前序遍历,遍历项集树,从而对项集进行排列;
对排列后的项集中相邻的项集做父子集比较,并将比较结果为真子集与父集关系的项集合并;
其中项集为频繁项集的简称。
[0008]优选的,所述父子集比较,比较的内容包括,项集的从属关系和项集的支持度。
[0009]优选的,所述项集的从属关系比较具体为:
假设,两个项集分别为A项集和B项集,如果A项集里面的项都包含于B项集中,则认为A项集属于B项集,A项集是B项集的子集。
[0010]优选的,所述项集的支持度比较具体为:
假设,两个项集分别为A项集和B项集,项集的支持度来源于数据中,简单来说就是该项集里面的项在数据中同时出现的次数,如果A项集的频繁度和B项集的频繁度相等并且A项集是B项集的子集,则A项集是B项集的真子集;如果A项集是B项集的子集,但是支持度不同,贝1JA项集是B项集的子集,但并不是真子集。
[0011 ]本发明的技术方案具有以下有益效果:
本发明的技术方案,与现有频繁项集挖掘算法比较,提取真子集的作用,主要的优点是通过提取真子集,缩小数据量的大小,缩减数据的计算过程和数据存储的大小,并且通过有效的减少无效项集的计算,防止重复数据的反复计算。从而使用该算法做推荐时,避免推荐无效的商品,可以有效的增加用户体验。真子集的使用是即节约成本,又提高性能和用户体验。
[0012]下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
【附图说明】
[0013]图1为本发明实施例所述的频繁项集挖掘算法的优化方法的流程图;
图2为本发明实施例所述的频繁项集的数据结构示意图;
图3为本发明实施例所述的频繁项集可以合并的数据结构示意图;
图4为本发明实施例所述的频繁项集可以部分合并的数据结构示意图。
【具体实施方式】
[0014]以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0015]如图1所示,一种频繁项集挖掘算法的优化方法,包括:
接收数据;
对于接收的数据,使用前序遍历,遍历项集树,从而对项集进行排列;
对排列后的项集中相邻的项集做父子集比较,并将比较结果为真子集与父集关系的项集合并;
其中项集为频繁项集的简称。
[0016]优选的,父子集比较,比较的内容包括,项集的从属关系和项集的支持度。
[0017]优选的,所述项集的从属关系比较具体为:
假设,两个项集分别为A项集和B项集,如果A项集里面的项都包含于B项集中,则认为A项集属于B项集,A项集是B项集的子集。
[0018]优选的,项集的支持度比较具体为:
假设,两个项集分别为A项集和B项集,项集的支持度来源于数据中,简单来说就是该项集里面的项在数据中同时出现的次数,如果A项集的频繁度和B项集的频繁度相等并且A项集是B项集的子集,则A项集是B项集的真子集;如果A项集是B项集的子集,但是支持度不同,贝1JA项集是B项集的子集,但并不是真子集。
[0019]如图2所示:频繁项集结果集中存在如图2所示的三列数据,第二列和第三列为第一列的子集,并且三列频繁项集的支持度都为10。在此情况下,第一列,第二列和第三位来自于同一数据源,说明了第二列和第三列为第一列的真子集,不必分为三列计算,可以合并为同一列,如图3所不。
[0020]如图3所示:在频繁项集的计算结果中,选择下一列数据与当前数据列数据比较支持度和父子集关系,如果下一列是当前列的真子集,则将2列合为一列,再比较第三列,如果第三列仍和第一列是父子集关系,则将三列合为一列,依次比较下去;如果第三列和第一列不为父子关系,如图4所示,则将第一列和第二列合并,从第三列依次往下比较。
[0021]真子集和父集合并为同一列,在数据量方面缩减了重复数据的发生,在频繁项集使用过程中,减少了计算的次数。在数据准确性方面,减少了来自于相同数据源的频繁项集的重复使用,在数据准确性上面起到了优化的作用。
[0022]父子集比较:父子集比较分为2个部分。第一点是频繁项集的从属关系,项集是频繁项的集合,如果A频繁项集里面的项都包含于B频繁项集中,则认为A项集属于B项集,A项集是B项集的子集。第二点比较支持度,频繁项集的支持度来源于数据中,简单来说就是该项集的里面的项在数据中同时出现的次数。如果A项集的频繁度和B项集的频繁度相等并且A项集是B项集的子集,则A项集是B项集的真子集;如果A项集是B项集的子集,但是支持度不同,则A项集是B项集的子集,但并不是真子集。
[0023]父子集比较选择:在选择频繁项集做父子集比较时候,只需要选择相邻的2个集合做比较即可,在遍历项集树的使用前序遍历,在可能存在父子关系的项集,会按照相邻的关系排列在一起。
[0024]最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种频繁项集挖掘算法的优化方法,其特征在于,包括: 接收数据; 对于接收的数据,使用前序遍历,遍历项集树,从而对项集进行排列; 对排列后的项集中相邻的项集做父子集比较,并将比较结果为真子集与父集关系的项集合并; 其中项集为频繁项集的简称。2.根据权利要求1所述的频繁项集挖掘算法的优化方法,其特征在于,所述父子集比较,比较的内容包括,项集的从属关系和项集的支持度。3.根据权利要求2所述的频繁项集挖掘算法的优化方法,其特征在于,所述项集的从属关系比较具体为: 假设,两个项集分别为A项集和B项集,如果A项集里面的项都包含于B项集中,则认为A项集属于B项集,A项集是B项集的子集。4.根据权利要求3所述的频繁项集挖掘算法的优化方法,其特征在于,所述项集的支持度比较具体为: 假设,两个项集分别为A项集和B项集,项集的支持度来源于数据中,简单来说就是该项集里面的项在数据中同时出现的次数,如果A项集的频繁度和B项集的频繁度相等并且A项集是B项集的子集,则A项集是B项集的真子集;如果A项集是B项集的子集,但是支持度不同,贝1JA项集是B项集的子集,但并不是真子集。
【专利摘要】本发明公开了一种频繁项集挖掘算法的优化方法,包括:接收数据;对于接收的数据,使用前序遍历,遍历项集树,从而对项集进行排列;对排列后的项集中相邻的项集做父子集比较,并将比较结果为真子集与父集关系的项集合并。与现有频繁项集挖掘算法比较,提取真子集的作用,主要的优点是通过提取真子集,缩小数据量的大小,缩减数据的计算过程和数据存储的大小,并且通过有效的减少无效项集的计算,防止重复数据的反复计算。
【IPC分类】G06F17/30
【公开号】CN105447134
【申请号】CN201510806032
【发明人】李磊
【申请人】央视国际网络无锡有限公司
【公开日】2016年3月30日
【申请日】2015年11月20日