- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于散列的频繁项集分组算法.doc
基于散列的频繁项集分组算法
摘要:
Apriori算法是频繁项集挖掘的经典算法。针对Apriori算法的剪枝操作和多次扫描数据集的缺点,提出了基于散列的频繁项集分组(HFG)算法。证明了2项集剪枝性质,采用散列技术存储频繁2项集,将Apriori算法剪枝操作的时间复杂度从O(k×|Lk|)降低到O(1);定义了首项的子项集概念,将数据集划分为以Ii为首项的数据子集并采用分组索引表存储,在求以Ii为首项的频繁项集时,只扫描以Ii为首项的数据子集,减少了对数据集扫描的时间代价。实验结果表明,由于HFG算法的剪枝操作产生了累积效益,以及分组扫描排除了无效的项集和元组,使得HFG算法在时间性能方面与Apriori算法相比有较大提高。
关键词:
频繁项集;2项集剪枝;散列表;首项分组;索引表
0引言
随着频繁项集挖掘应用领域的扩展,吸引了很多学者加入研究,提出了许多频繁项集挖掘算法,其中,美国学者Agrawal等[1]提出的Apriori算法是一个里程碑,其基本原理是用频繁k项集找出候选频繁(k+1)项集,再扫描数据集得到频繁(k+1)项集及其支持度。Apriori算法的缺点是产生大量候选频繁项集,并且需要多次扫描数据集。针对Apriori算法的缺点,很多学者对Apriori算法进行了改进研究,如采用FP树(FrequentPattern tree)存储数据集[2-4]、采用垂直格式存储数据集[5-6]、采用散列表存储候选频繁项集[7]、分段计算支持度[6,8-10]、不产生候选项集[2-3]等。近年来,有学者提出基于概念格的挖掘算法[11]、基于滑动窗口的挖掘算法[12]等。
本文针对Apriori算法的剪枝操作和多次扫描数据集的缺点,证明了非频繁2项集剪枝性质,采用散列表存储频繁2项集,在O(1)时间完成了与Apriori算法同样的剪枝操作;定义了首项的子项集概念,将数据集按首项进行分组,在求以Ii为首项的频繁项集时,只扫描以Ii为首项的数据子集,从而减小了对数据集扫描的时间代价;在此基础上,提出了基于散列的频繁项集分组(Hashbased Frequent itemsets Grouping, HFG)算法。相比其他频繁项集挖掘算法,HFG算法没有复杂的理论推导,容易理解和实现。实验结果表明,HFG算法在时间性能方面与Apriori算法相比有较大提高。
1相关工作
1.1问题描述
问题描述[1,13]如下:设I={I1,I2,…,Im}是所有项的集合,非空项集中包含项的个数称为项集A的长度,长度为k的项集记为k项集。设T={T1,T2,…,Tn}是相关事务的数据集合,其中每个事务由TID标识,且1≤i≤n。
设A是一个项集,数据集T包含项集A当且仅当1≤i≤n,数据集T中包含项集A的事务的个数,称为项集A在数据集T中的支持度,记为sup_count(A)。给定支持度阈值min_sup,如果项集A满足sup_count(A)≥min_sup,则称项集A为数据集T的一个频繁项集。频繁项集挖掘的任务就是在数据集T中找出所有支持度不小于给定阈值min_sup的频繁项集。
1.2Apriori算法
Apriori算法采用逐层搜索的迭代方法,具体过程是:扫描数据集找出所有频繁1项集(记为L1);将L1进行自身连接,产生所有候选频繁2项集(记为C2),再扫描数据集得到L2;将L2进行连接,产生C3,再扫描数据集得到L3;依此下去,直至不能找到频繁项集为止。
在Apriori算法的连接步,对于两个频繁k项集A和B,假定数据集中的项集按字典排序,如果A[1]=B[1]∧A[2]=B[2]∧…∧A[k-1]=B[k-1]∧A[k]B[k],则称A和B是可连接的,连接后产生(k+1)项集{A[1],A[2],…,A[k-1],A[k],B[k]}。为减小候选频繁项集Ck+1的规模,Apriori算法利用Apriori性质进行剪枝:如果候选频繁(k+1)项集的某个k项子集非频繁,则该候选项集一定非频繁,从而可以从Ck+1中删除。
1.3Apriori算法的改进研究
为了避免对数据集进行重复扫描,文献[2]提出FPGrow(FrequentPatternGrow)算法将数据集压缩存储到FP树中,然后递归地对FP树进行挖掘。FPGrow算法的缺点是遍历树的开销仍然很大,而且当数据集规模很大时,构造基于内存的FP树遇到困难。文献[3]提出OP(Opportune Project)算法集成了自顶向下和自底向上的方法遍历FP树;文献[4]使用基于投影进行超集检测的机制,减少了遍历树的开销;文献[5]使用了空间代价较大的垂直格式存储数据集,通过取频繁k项集的TID集的交得到
原创力文档


文档评论(0)