当前位置:
文档之家› 关联规则中频繁项集高效挖掘的研究
关联规则中频繁项集高效挖掘的研究
阵, 构造的二项集支持度矩阵 M 如图 1 所示。
I11 I12 I 22 I13 I 23 I33 I1m I 2m I 3m I mm
图1
二项集支持度矩阵图
通过扫描数据库, 若扫描到一条事务中包含 { Ii I k} 项, 则 对位于矩阵坐标[i, k], [i, i], [k, k]中的元素计数分别加 1。 (2) 逐行扫描矩阵, 找出该行中不小于最小支持度计数的 元素 Iij , 到 j 行搜索该行中不小于最小支持度计数的元素 I jk , 再定位到矩阵 Iik 中, 若 Iik 不小于最小支持度计数, 则连接生 成候选三项集 { Ii I j I k} 。算法如下:
1
引言
关联分析是数据挖掘的一项重要研究内容, 其主要任务
众多改进算法所引用[9-10], 文献[9]通过构建两个支持度矩阵分 别挖掘频繁二项集和最大频繁项集, 其时间和空间代价较大; 文献[10]存在着在由频繁 k 项集连接生成候选 k+1 项集时效率 较低, 以及会生成错误频繁项的缺点。本文在减少扫描数据 库次数的基础上, 通过生成二项集支持度矩阵避免了产生无 效的二项集, 解决了二项集瓶颈问题。同时利用矩阵的优势对 连接和剪枝步进行改进, 提高了挖掘频繁项的效率。
L 2 中, 那么就把此三项集删除, 最后由未经删除的三项集组成
return C3 .
(3) 由 C k 生成候选 k+1 项集表 C k + 1(k≥3) , 由于生成的候 选 k 项集表 C k 是按字典顺序排列的。对于每个候选 k 项集 X, 从 X 在 C k 之后的位置中查找以 X 后 k - 1 个项开始的其他候选 k 项集, 若找到这样一个候选 k 项集 Y, 则把 X 的第一个项 I r 和 Y 的最后一个项 I s 的标号连接形成矩阵坐标 [r, s ], 到矩阵 M 中查找这个坐标上的值是否大于最小支持度计数, 如果大于 或等于, 则生成候选 k+1 项集, 如果不大于, 则不予连接, 继续 查找下一个, 直到 C k 中的最后一个 k 项集。至此候选 k+1 项集 表构造结束。 (4) 第二次扫描数据库, 因为在生成支持度矩阵时, 已经 产生了频繁二项集, 所以这里只对生成的候选 k 项集表 C k(k≥ 3) 中的每个 k 项集进行计数, 并对其进行筛选, 最后形成频繁 k 项集。值得注意的是有许多改进算法, 如文献[12]对生成的对 角矩阵进行深度遍历, 这样能更好地提高获取最高维频繁项 的连接效率, 但是却不能及时地进行剪枝, 极有可能会造成许 多连接的浪费, 此外, 它实际上只生成了候选频繁项集表, 但 并没有对数据库进行第二次扫描, 对其中的候选项集进行验 证, 这样就很有可能将非频繁 k 项集划为频繁 k 项集。表 1 所 示为数据库 D1 的情况。
表 1 数据库 D1
TID item T1 a, b T2 a, b T3 b, c T4 b, c T5 a, c T6 a, c
候选三项集表 C3 。 (5) 第三次扫描数据库, 对 C3 中的三项集进行计数, 找出 大于最小支持度的三项集, 生成频繁三项集表 L3 。这样依次 由频繁 k 项集表生成频繁 k+1 项集表, 直至不能生成更高维的 频繁项集为止。 通过对 Apriori 算法的分析可以看出它有以下几个缺点: 需要频繁的扫描数据库, 这对经常遇到的海量数据库以及平 均事务宽度很长的数据库来说, I/O 开销是非常大的; 生成了 大量的候选二项集, 产生了二项集瓶颈问题 , 其中有许多 是无效的二项集, 这样不但占用了较多的空间, 而且增加了 步骤 (3) 的工作量; 在生成的每一个候选三项集时的连接和 剪枝阶段, 都要多次对 L 2 进行扫描, 且搜索空间较大, 效率 较低。
Computer Engineering and Applications 计算机工程与应用
2011, 47 (3)
139
关联规则中频繁项集高效挖掘的研究
张云涛 1, 于治楼 2, 张化祥 1 ZHANG Yuntao1, YU Zhilou2, ZHANG Huaxiang1
1.山东师范大学 信息科学与工程学院, 济南 250014 2.浪潮集团有限公司, 济南 250101 1.School of Information Science and Engineering, Shandong Normal University, Jinan 250014, China 2.Inspur Group, Jinan 250101, China E-mail: tozyt@ ZHANG Yuntao, YU Zhilou, ZHANG Huaxiang.Research on high efficiency mining frequent itemsets on association puter Engineering and Applications, 2011, 47 (3) : 139-141. Abstract:An improved algorithm Apriori-M which combines with 2-itemsets support count matrix is brought forward for its lower efficiency of time.The algorithm scans the database to generate 2-itemsets support count matrix, and then improves the efficiency of the connectivity and the pruning by the character of the matrix; gets all the frequent itemsets correctly by scanning the database second time, and also solves the question about generating 2-itemsets invalid.Experimental results show that the capability of the improved algorithm is more efficient than Apriori. Key words:association rules; Apriori algorithm; transaction database; frequent itemsets; support matrix 摘 要: 针对 Apriori 时间性能较低的缺陷, 结合二项集支持度矩阵提出了 Apriori 改进算法 Apriori-M。在扫描数据库时生成一个 二项集支持度矩阵, 利用矩阵的性质提高了连接和剪枝的效率; 通过第二次扫描数据库就能正确地获取所有的频繁项集, 并很好 地解决了 Apriori 生成无效二项集的问题。实验结果表明 Apriori-M 的性能优于 Apriori。 关键词: 关联规则; Apriori 算法; 事务数据库; 频繁项; 支持度矩阵 DOI: 10.3778/j.issn.1002-8331.2011.03.042 文章编号: 1002-8331 (2011) 03-0139-03 文献标识码: A 中图分类号: TP391.4
合; 其中包含 k 个数据项的项集称为 k 项集。k 项集 X 在事务数 据库 D 中的百分比称为 X 的支持度, 如果此支持度大于或等于 用户设定的最小阈值 (此阈值即为最小支持度) , 则称 X 为频繁 k 项集[11]。
基金项目: 山东省自然科学基金 (the Natural Science Foundation of Shandong Province of China under Grant No.Y2007G16); 山东省科技攻关 计划 (the Key Technologies R&D Program of Shandong Province, China under Grant No.2008GG10001015)); 山东省高新技术自主 创新工程专项计划 (No.2007ZZ17); 山东省电子发展基金 (No.2008B0026) 。 作者简介: 张云涛 (1984—) , 男, 硕士研究生, 研究方向为数据挖掘, 机器学习; 于治楼, 男, 研究员, 研究方向为计算机应用, 人工智能; 张化祥, 男, 博导, 教授, 研究方向为机器学习, 人工智能及 Web 挖掘。 收稿日期: 2009-06-26 修回日期: 2009-10-23
[12]
3 Apriori-M 算法
(1) 扫描数据库, 构造二项集的支持度矩阵。分别以项目 集合 I 中的各个项作为矩阵的行标和列标, 用 Iik 表示二项集
{ Ii I k}(i≤k) 在事务数据库 D 中出现的次数, 此矩阵为对称矩
设最小支持度计数是 2, 则会有频繁二项集 {a, b}{b, c} {a, c}, 按照此算法的做法, 会生成频繁三项集{a, b, c}。但是 三项集 {a, b, c} 并不在数据库中。所以应该对数据库进行第 二次扫描, 以避免这种错误。 通过对 Apriori-M 算法的分析, 可以看出: (1) 此算法减少 了对数据库的扫描次数, 当频繁项的最高维数是 k 时, Apriori 算法需要扫描 k 次数据库才能挖掘出所有的频繁项[13], 而此算 法, 在保证不会错误的获取 k 项集时, 仅需扫描数据库两次, 就 能挖掘出所有的频繁项集, 减少了 I/O 花销。 (2) 充分利用矩阵 的性质, 进行连接时, 只到特定的行中搜索频繁二项集, 搜索 空间要远比在 L k 小, 而且由于这是一个上三角矩阵, 随着连 接过程的深入, 所要搜索的空间会越来越小, 因此可以比 Apriori 算法中的连接节省更多的时间; 进行剪枝时, 则只需定位到 矩阵特定的坐标中, 根据其元素的值来决定是否剪枝, 大大提 高了剪枝效率。
[3] [2]