基于Apriori数据挖掘算法研究

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(2 : 吉林省经济管理干部学院资源与环境管理系 , 长春
摘要 : 关联规则是从数据集中识别出频繁出现的属性值集 , 然后利用这些频繁集创建描述关联关系的规则过
程 .在分析经典关联规则挖掘算法的基础上 , 讨论了经典的 Apriori 算法 , 并提出改进的 Apriori 关联规则算 法, 对算法进行了实验数据的算法性能分析及运行时间对比 .结果表明 , 改进的算法在运行速度和挖掘性能上都 较经典的 Apriori 算法都有显著提高 .
GUO Xiu-juan1 , ZHANG Shu-bin2 , YUE Jun-hua1
School of Computer Science and Engineering , Jilin Institute of Architecture and Civil Engineering Changchun , China 130021; (1 : 2: Resources and Environment Department Jilin Province Economic Management Cadre College , Changchun ,China 130012)
1
关联规则
关联规则挖掘 , 是指从一个大型的数据集中发现有趣的关联关系 , 即从数据集中识别出频繁出现的 属性值集 , 也称为频繁项集(Frequent Item Sets , 简称频繁集) , 然后利用所得的频繁集创建描述关联规
收稿日期 : 2009-11-24. 作者简介 : 郭秀娟(1961~) , 女, 吉林省德惠市人 , 教授 , 博士 .
58










来自百度文库
第 27 卷
则的过程 [3] .关联规则中的支持度和置信度是两个规则兴趣度的度量 , 它们说明了所发现规则的有用性 (Utility) 、 确定性(Certainty) 、 新颖性(Novelty)和简洁性(Simplicity) .在实际问题的处理过程中 , 为 了满足需要 , 用户需指定规则必须满足支持度和信任度的门限 , 我们称其为最小支持度(Minimum Support) 和最小信任度(Minimum Confidence) . 1 .1 关联规则的基本概念 一个事务数据库中的关联规则挖掘可以描述如下[4] : 设 I = {i1 , i2 , , im } 是一个项目集合 , 事务数据 n )是一个项目集 库 D = {t1 , t 2 , , t n } 是由一系列具有唯一标识 TID 的事务组成 , 每个事务 t i ( i =1 , 2, …, 合,并满足 It1i ⊆ I .设 I 1 ⊆ I , 项目集 I1 在 D 上的支持度(support)是指包含 I1 的事务在 D 中所占的百分 比, 即 Support ( I 1 ) = {t ∈ D I 1 ⊆ t / D .一个定义在 I 和 D 上的形如 I1 ⇒ I 2 的关联规可以通过满足一定 的置信度(confidence)来给出 , 所谓规则的置信度是指包含 I1 和 I2 的支持度与包含 I1 的支持度之比 , 即 给定一个事务数据库 , 关联规则挖掘就是通过用户指定最小支持度和最小置信度来寻找合适关联规 则的过程一般地 , 关联规则挖掘问题可以划分成两个子问题[4] . (1) 发现频繁项目集 . 通过用户给定的 minsupport , 寻找所有频繁项目集(Frequent Itemset) , 即满 足 support 不小于 minsupport 的项目集 .事实上 , 这些频繁项目集可能具有包含关系 , 一般地 , 我们只关 心那些不被其它频繁项目集所包含的所谓频繁大项集(Frequent Large Itemset)的集合 . (2) 生成关联规则 . 通过用户给定的 minconfidence , 在每个最大频繁项目的项目集中 , 寻找 confidence 不小于 minconfidente 的关联规则 .
数据挖掘(Data Mining)是从大量的 、 不完全的 、 有噪声的 、 模糊的 、 随机的数据中 , 提取隐含在其中 的、 人们事先不知道的 、 但又是潜在有用的信息和知识的过程 ,它是知识发现的关键步骤 .它从机器学习发 展而来 , 虽然只有十多年的历史 , 却已经取得了广泛的应用 .在诸多数据挖掘算法中 , 关联规则挖掘是数据 挖掘中最活跃的研究方法之一 , Apriori 算法是由美国学者 R .Agrawal 等在 1993 年提出的一种从大规模 商业数据中挖掘关联规则的有效方法 , 现在已经被广泛用于商业决策 、 社会科学 、 科学数据处理等各种数 据挖掘领域之中 .由于传统的 Apriori 关联规则算法需要多次扫描原始数据库 , 且要生成大量的候选集 , [1-3] 效率不高 , 挖掘性能不好 .因此 , 我们对关联规则挖掘算法研究的基础上 , 提出一种改进的 Apriori 关 联规则挖掘算法 , 并利用教师授课质量调查数据进行了相关的检验 , 结果表明该算法能较好地提取关联规 则分析 , 挖掘效率和性能较好 , 同时 , 也可为今后确定教学评价体系提供重要的参考依据 .
Abstract :The associational rule refers to the sets of attribute-values ,which frequently appeared in data set recognition ,also named as frequent item-sets .using these frequent sets Description association relation rules process is set up . Based on the analysis of the classical algorithm for mining association rules ,we summarize classical Apriori algorithm of association rules , put forward improved Apriori algorithm of association rules , whose performance was tested by testing learning data sets . The results demonstrate that the improved Apriori algorithm of association rules works better in both running speed and mining capability . Keywords :data mining ;association rule ;frequent item set ; Apriori algorithm
第27 卷
第3期










Vol .27 No .3 Jun .2010
2010 年 6 月
Journal of Jilin Institute of Architecture & Civil Engineering
基于 Apriori 数据挖掘算法研究
郭秀娟1 张树彬2 岳俊华1
130021) 130012) (1 : 吉林建筑工程学院计算机科学与工程学院 , 长春
关键词 : 数据挖掘 ; 关联规则 ; 频繁项目集 ; Apriori 算法
TP 311 中图分类号 : A 文献标志码 : 1009-0185(2010)03-0057-04 文章编号 :
Research Association Rules of Data Mining Algorithm Based on Apriori
第3期
郭秀娟 , 张树彬 , 岳俊华 : 基于 Apriori 数据挖掘算法研究
59
能产生接近 107 个元素的 2- 候选集 , 如此大的候选集对时间和主存空间都是一种挑战 . 2 .2 Apriori 算法改进 在对 Apriori 关联规则经典算法研究的基础上 , 我们提出了改进的 Apriori 算法 , 基本思想是 : 以频 繁 1- 项集为候选项目集 , 对频繁 1- 项目集进行组合且扩展 , 增加判断条件 Lk .count ≥ min sup port , 得 到频繁 k+1- 项集 .将 k+1- 项集作为候选项目集 , 按照以上原则不断形成下一频繁项目集 , 从而产生出全部 的频繁项目集 , 该算法扫描数据库的次数较少 , 且产生的候选集数据不是太多 , 该改进算法比较适合大规 模的数据库挖掘频繁大项集的提取和关联规则的发现 , 扫描时 , 为了提高生成高频数据项集的效率[4-6] , 我 们基于如下基本原理 : 一个数据项 A 加到 I(A∉I) , 结果集(A∪I)的频度不会高于 I 的频度 , 如果 I 不满足最小支持度门限值 , 则后者不会满足 .即一个集合不能够通过测试 .根据这个性质可以得出以下几个推论 . 推论 1 . K 维数据项集 X 是高频数据项集的必要条件是它所有 k-1 维子集均为最大数据项集 , 这些数 据项集组成 Yk-1 . 推论 2 . 如果 K 维数据项集 Tk 的任意一个 k-1 维子集不是最大数据项集 , 则 K 维数据项集本身也不 是最大数据项集 . 推论 3 . Tk 是 K 维数据项集 , 如果所有 k-1 维高频数据项集集合 Lk-1 中包含 Tk 的 k-1 维子集的个数 小于 k , 则 Tk 不可能是 k 维最大数据项集 . 2 .3 改进 Apriori 算法主要步骤 (1) Apriori 更新算法 .关联规则发现快速算法的基本框架描述如下 : K≥2 do begin;② H1={Consequents of rules derived from Lk ① forall Large k-items Lk , H1) ; /* 以单个数据项为结果的规则生 with one item in the Consequent} ; ③ Call ap_genrules(Lk , 成多个数据项为结果所有规则 */;④ End. ap _genrules 函数是以 m 个数据项为结果的规则集 H m 生成以 m +1 个数据项为结果的规则集 其中 , Hm+1 的递归函数 (2) FP-growth 算法 . 由于 Apriori 算法存在着一些固有的缺陷 , 如当长度为 1 的频繁集有1 000个 时, 长度为 2 的候选集个数将会超过 10 m .因此 , 引进 FP-growth 方法 , 克服了 Apriori 算法的不足 .FPLk 为 k 项频繁集) growth 算法的具体流程如下 : (Ck 为 k 项候选集 , FP-growth 算法(T , min_sup , min_conf) 算法 : 输入 : 事务集合 T , 最小支持度阈值 min_sup , 最小置信度阈值 min_conf 输出 : 强关联规则集合 R_S 算法步骤 : ① 扫描 T 找出频繁 1- 项集合 L;② L 中的项按支持计数降序排序;③ 创建 FP 树的根节点 null// 创建 FP 树; ④ for T 中的每个事务 t ;找出 t 中的频繁 1- 项集合 Lt ; Lt 中的项按 L 中的顺序排序; Insert_FP(Lt , null)//创建事务分支;⑤ L_S=Search_FP(FP , null)//找出所有频繁项集;⑥ 在 L_S 中产生强关联规则集合 R_S. 改进的 Apriori 算法处上述两种外 , 有人讨论了 DHP 算法及基于抽样技术的频繁项目集生成技术 DHPBS 算法 , 而 DHP 算法着重处理了候选 2- 项目集的生成 , 使得候选个数少于以前方法生成的个数 , 从而 解决了生成 L2 时的性能瓶颈问题 , 同时也对数据库进行了剪枝 , 减少了数据量 ; 同时将将 DHP 算法与随机 取样技术结合起来便产生了 DHPBS 算法 . (3) 改进 Aprior 关联规则算法分析 . 为进一步验证改进 Apriori 算法的性能 , 采用 VC++实现上述算 法, 并利用模拟实验数据集对改进的 Apriori 算法及基本 Apriori 算法进行了验证 , 比较两种 Apriori 算 法的运行结果和执行时间 .通过对 1 000 条记录的测试 , 最小支持度分别为 0 .175 ,0 .15 , 0 .125 , 0 .1 , 0 .075 , 0 .05 , 0 .035 , 0 .025 .结果表明 : 当最小支持度增大时(即 minsup`>ninsup) , 更新算法的效率优于 Apriori 算法 ; 当最小支持度减小时(即 minsup`≤ninsup) , 两种算法的执行结果见表 1 . 从实验结果可得 , 更新算法的运行速度比 Apriori 算法快 , 其速度的改变取决于最小支持度的差异和 强项集的分布 .当最小支持度的差异较小并且原最小支持度的强项集 Lk 较大时 , 更新算法的效率能够得到 较大提高 .
confidence( I 1 ⇒ I 2 ) = sup port ( I 1 ⇒ I 2 ) / sup port ( I 1 ) (其中 I1 , I 2 ⊆ I , I1 I 2 = Φ ) .
2
2 .1
改进 Apriori 关联规则挖掘算法
Apriori算法分析 (1) Apriori算法的基本思想 . Apriori算法通过对数据库 D 的多趟扫描(Pass)来发现所有的强项 集 .该算法利用了如下两个基本性质[3-4] : ① 任何强项集的子集必定是强项集 ;② 任何弱项集的超集必 定是弱项集 . Apriori 算法的核心思想是通过项目集数目不断增长来逐步完成频繁项目集的发现[4-5] .Apriori 算法 在第一趟扫描数据库时 , 确定出满足最小支持度的 1- 强项集的集合 L1 .在后续的第k趟扫描中 , 首先以 k-1 趟扫描中所发现的含 k-1 个元素的强项集的集合 Lk-1 作为种子集 , 利用该种子集生成新的潜在的 k- 强项 集的集合 , 即候选集 Ck(Candidate Itemsets) , 计算这些候选集的支持度 , 最后从候选集 Ck 中确定出满足 最小支持度的 k 强项集的集合 Lk , 并将 Lk 作为下一趟扫描的种子集 .上述过程不断重复直至不在有新的强 项集产生为止 . D 为源数据集 .则 Apriori 算法对源数据集扫描次数为 S apriori = k . 设 k 为最长频繁项目集的长度 , (2) Apriori 基本算法的描述 . Input : Database D of transactions ; minimum support threshold L1 frequent itemsets in D. minsupport Method , Output : Lk-1≠∅ ; k++) do begin;③ Ck=Apriori_gen(Lk-1 , ① L1={Large 1-itemsets} ; ② For(k=2 ; minsupport) ; /*生成候选k-项集*/;④ Forall transactions t∈D do begin;⑤ Ct=subset(Ck , t) ; /*候选集 Ck 中提取包含在事务 t 中的候选 k-项集*/;⑥ Forall Candidates C∈Ct do;⑦ C .Count++ ; ⑧ End;⑨ Lk={ C∈Ck C .Conut≥ minsupporrt} ; ⑩ End; 11 Answer=U k Lk ; /*求 Lk 的和 */ (3) Apriori 基本算法的缺陷 .经典的 Apriori 算法存在着两个致命的性能瓶颈 , 即: I/O 负载很大 . ① 需要多次扫描事务数据库 , 对每次 k 循环 , 候选集 Ck 中的每个元素都必须通过扫描数据库一次来验证其是否加入 Lk .假如有一个 频繁大项集包含 10 个项的话 , 那么就至少需要扫描事务数据库 10 遍 . ② 可能产生庞大的候选集 .由 Lk-1 产生 k- 候选集 Ck 是以指数增长的 , 例如 104 的 1- 频繁项集就有可
相关文档
最新文档