Apriori算法研究
十大经典算法之Apriori算法

⼗⼤经典算法之Apriori算法关联分析关联分析是⼀种在⼤规模数据集中寻找有趣关系的任务。
这些关系可以有两种形式:频繁项集(frequent item sets): 经常出现在⼀块的物品的集合。
关联规则(associational rules): 暗⽰两种物品之间可能存在很强的关系。
相关术语关联分析(关联规则学习): 从⼤规模数据集中寻找物品间的隐含关系被称作关联分析(associati analysis)或者关联规则学习(association rule learning)。
下⾯是⽤⼀个杂货店例⼦来说明这两个概念,如下图所⽰:频繁项集: {葡萄酒, 尿布, ⾖奶} 就是⼀个频繁项集的例⼦。
关联规则: 尿布 -> 葡萄酒就是⼀个关联规则。
这意味着如果顾客买了尿布,那么他很可能会买葡萄酒。
那么频繁的定义是什么呢?怎么样才算频繁呢?度量它们的⽅法有很多种,这⾥我们来简单的介绍下⽀持度和可信度。
⽀持度: 数据集中包含该项集的记录所占的⽐例。
例如上图中,{⾖奶} 的⽀持度为 4/5。
{⾖奶, 尿布} 的⽀持度为 3/5。
可信度: 针对⼀条诸如 {尿布} -> {葡萄酒} 这样具体的关联规则来定义的。
这条规则的可信度被定义为⽀持度({尿布, 葡萄酒})/⽀持度({尿布}),从图中可以看出⽀持度({尿布, 葡萄酒}) = 3/5,⽀持度({尿布}) = 4/5,所以 {尿布} -> {葡萄酒} 的可信度 = 3/5 / 4/5 = 3/4 = 0.75。
⽀持度和可信度是⽤来量化关联分析是否成功的⼀个⽅法。
假设想找到⽀持度⼤于 0.8 的所有项集,应该如何去做呢?⼀个办法是⽣成⼀个物品所有可能组合的清单,然后对每⼀种组合统计它出现的频繁程度,但是当物品成千上万时,上述做法就⾮常⾮常慢了。
我们需要详细分析下这种情况并讨论下 Apriori 原理,该原理会减少关联规则学习时所需的计算量。
Apriori 原理假设我们⼀共有 4 个商品: 商品0, 商品1, 商品2, 商品3。
Apriori算法的研究与改进

建两 个支 持度 矩 阵分别 挖掘频 繁 二项集 和最 大频 繁
项集 , 其时 间和 空 间代 价 较 大 ; 献 I ]在 由频 繁 k 文 - 6 项 集 连接 生成候 选 k+ 1项 集 时效 率较 低 且会 生 成 错误 频繁 项 。 文在 减少 扫描数 据 库次数 的基 础上 , 本
Ve . 0 No 3 12 .
S p. 201 e 1
21 0 1年 9月
I I1 . 9 9ii n 1 7—6 5 2 1 . 3 0 6 N) :0 3 6 /.s . 6 26 8 . 0 1 0 . 0 s
A roi 法 的研 究 与 改 进 p ir 算
陈 宜荣
( 徐州经 贸高等职业学校 信息系 , 江苏 徐州 2 10 ) 2 0 4
摘
要 : 绍 关联规 则挖 掘 中的 经典 算 法—— Ap ir 算 法 的关键 思 想 。针 对 传 统 Ap ir 算 法 效 介 r i o r i o
率上 的不足 , 出改进 Apir 算 法 。该 算 法通 过 构 造辅 助表 , 少访 问表 中 的无 效 记 录 , 而 减 提 r i o 减 从 少每 次访 问数据 库 的次数 , 好地提 高 了效 率 。 实验 结果 表 明 , 较 改进 后 的算 法具有 较好 的有 效性 。 关 键词 : r r 算 法 ; Ap i i o 改进 ; 助表 ; 辅 仿真
t g f Ap i r a g rt m ,o r a g rt m e e a e i a l s t v i s l s a a n e u e a e o ro i l o ih u l o ih g n r t s ad t b e o a o d u e e s d t ,a d d d c s t e t s o a a a e v stn h i me fd t b s iii g,S ti o e e fce t c mp r d wih t e ta ii n lo e Ex e i O i s m r fii n o a e t h r d t a n . o p r — me trs l s o h tt en w l o i m u p ro mst e f r e n ,a d g t o d p a t ai . n e ut h ws t a h e ag r h o t e r h o m ro e n e sa g o r ci l y t f c t
Apriori算法的改进及实例

Apriori算法的改进及实例【摘要】随着数据规模的不断增大,传统的Apriori算法在处理大规模数据集时性能较低。
为了解决这一问题,研究者们提出了多种改进策略。
本文针对Apriori算法的改进及实例进行了研究和探讨。
首先介绍了使用FP-growth算法替代Apriori算法的改进方法,其能够显著提高算法的效率。
其次讨论了剪枝策略的优化,通过精细化的剪枝方法可以减少计算时间。
对并行化处理进行了探讨,使得算法能够更好地应对大规模数据集。
通过实例分析,展示了基于FP-growth算法的关联规则挖掘和优化的剪枝策略在市场篮分析中的应用。
结论部分指出了不同场景下的改进策略对提高算法效率和精度的重要意义。
通过这些改进措施,Apriori算法在处理大规模数据集时将得到更好的应用和推广。
【关键词】关键词:Apriori算法、FP-growth算法、剪枝策略、并行化处理、关联规则挖掘、市场篮分析、大规模数据集、效率、精度1. 引言1.1 Apriori算法的改进及实例Apriori算法是一种经典的关联规则挖掘算法,它通过逐层扫描数据集来发现频繁项集,并基于频繁项集生成关联规则。
随着数据规模的不断增大,Apriori算法在处理大规模数据集时面临着一些效率和性能上的挑战。
为了克服这些挑战,研究者们提出了许多针对Apriori算法的改进方法。
一种常见的改进方法是使用FP-growth算法来替代Apriori算法。
FP-growth算法利用树结构存储数据集信息,减少了对数据集的多次扫描,从而提高了算法的效率。
剪枝策略的优化也是改进Apriori算法的一个重要方向。
通过优化剪枝策略,可以减少频繁项集的生成数量,进而提升算法的性能。
针对多核处理器的并行化处理也是一种改进Apriori算法的方法。
通过将数据集分割成更小的子集,可以实现并行处理,从而加快算法的运行速度。
在接下来的实例部分,我们将分别介绍基于FP-growth算法的关联规则挖掘实例以及优化的剪枝策略在市场篮分析中的应用实例,展示这些改进方法在实际应用中的效果和优势。
Apriori算法总结

Apriori ['eɪprɪ'ɔ:rɪ]Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。
而且算法已经被广泛的应用到商业、网络安全等各个领域。
其核心是基于两阶段频集思想的递推算法。
该关联规则在分类上属于单维、单层、布尔关联规则。
在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
经典的关联规则数据挖掘算法Apriori 算法广泛应用于各种领域,通过对数据的关联性进行了分析和挖掘,挖掘出的这些信息在决策制定过程中具有重要的参考价值。
Apriori算法广泛应用于商业中,应用于消费市场价格分析中,它能够很快的求出各种产品之间的价格关系和它们之间的影响。
通过数据挖掘,市场商人可以瞄准目标客户,采用个人股票行市、最新信息、特殊的市场推广活动或其他一些特殊的信息手段,从而极大地减少广告预算和增加收入。
百货商场、超市和一些老字型大小的零售店也在进行数据挖掘,以便猜测这些年来顾客的消费习惯。
Apriori算法应用于网络安全领域,比如网络入侵检测技术中。
早期中大型的电脑系统中都收集审计信息来建立跟踪档,这些审计跟踪的目的多是为了性能测试或计费,因此对攻击检测提供的有用信息比较少。
它通过模式的学习和训练可以发现网络用户的异常行为模式。
采用作用度的Apriori算法削弱了Apriori算法的挖掘结果规则,是网络入侵检测系统可以快速的发现用户的行为模式,能够快速的锁定攻击者,提高了基于关联规则的入侵检测系统的检测性。
Apriori算法应用于高校管理中。
随着高校贫困生人数的不断增加,学校管理部门资助工作难度也越加增大。
针对这一现象,提出一种基于数据挖掘算法的解决方法。
将关联规则的Apriori算法应用到贫困助学体系中,并且针对经典Apriori挖掘算法存在的不足进行改进,先将事务数据库映射为一个布尔矩阵,用一种逐层递增的思想来动态的分配内存进行存储,再利用向量求"与"运算,寻找频繁项集。
数据挖掘实验报告结论(3篇)

第1篇一、实验概述本次数据挖掘实验以Apriori算法为核心,通过对GutenBerg和DBLP两个数据集进行关联规则挖掘,旨在探讨数据挖掘技术在知识发现中的应用。
实验过程中,我们遵循数据挖掘的一般流程,包括数据预处理、关联规则挖掘、结果分析和可视化等步骤。
二、实验结果分析1. 数据预处理在实验开始之前,我们对GutenBerg和DBLP数据集进行了预处理,包括数据清洗、数据集成和数据变换等。
通过对数据集的分析,我们发现了以下问题:(1)数据缺失:部分数据集存在缺失值,需要通过插补或删除缺失数据的方法进行处理。
(2)数据不一致:数据集中存在不同格式的数据,需要进行统一处理。
(3)数据噪声:数据集中存在一些异常值,需要通过滤波或聚类等方法进行处理。
2. 关联规则挖掘在数据预处理完成后,我们使用Apriori算法对数据集进行关联规则挖掘。
实验中,我们设置了不同的最小支持度和最小置信度阈值,以挖掘出不同粒度的关联规则。
以下是实验结果分析:(1)GutenBerg数据集在GutenBerg数据集中,我们以句子为篮子粒度,挖掘了林肯演讲集的关联规则。
通过分析挖掘结果,我们发现:- 单词“the”和“of”在句子中频繁出现,表明这两个词在林肯演讲中具有较高的出现频率。
- “and”和“to”等连接词也具有较高的出现频率,说明林肯演讲中句子结构较为复杂。
- 部分单词组合具有较高的置信度,如“war”和“soldier”,表明在林肯演讲中提到“war”时,很可能同时提到“soldier”。
(2)DBLP数据集在DBLP数据集中,我们以作者为单位,挖掘了作者之间的合作关系。
实验结果表明:- 部分作者之间存在较强的合作关系,如同一研究领域内的作者。
- 部分作者在多个研究领域均有合作关系,表明他们在不同领域具有一定的学术影响力。
3. 结果分析和可视化为了更好地展示实验结果,我们对挖掘出的关联规则进行了可视化处理。
通过可视化,我们可以直观地看出以下信息:(1)频繁项集的分布情况:通过柱状图展示频繁项集的分布情况,便于分析不同项集的出现频率。
Apriori改进算法讲解和实现

链接和修剪
• 其中, apriori- gen 是以频繁(k- 1)- 项目序列集Lk- 1 为自变量的候 选集生成函数。该函数返回包含所有频繁k- 项目集的超集, 分 链接和修剪两步执行: 第1 步:链接(join) • Procedure apriori_gen(Lk- 1:frequent(k- 1)- itemsets; minsup) • 1) for each itemset l1∈Lk- 1 • 2) for each itemset l2∈Lk- 1 L • 3) if ((l1[1]=l2[1])(l1[2]=l2[2])∧…∧(l1[k- 2]=l2[k- 2])∧(l1[k- 1]≠l2[k- 1])then { • 4) c=l1∪l2;//连接, 产生候选集 • 5) if has_infrequent_subset(c,Lk- 1) then • 6) delete c;//修剪, 去掉无用的候选项 • 7) else add c to Ck; • 8) } • 9) return Ck;
定义和性质
• 根据上述定义,可以这样描述Apriori 算法:Apriori 算法使用逐 层搜索的迭代方法来产生频繁项集,设有频繁k-项集L k,通过 Galois连接产生候选k + 1 项集Ck+1,再通过扫描数据集产生频繁 k + 1 项集L k+1,最后由产生的频繁项目集产生关联规则。 • 性质1 :(Apriori 性质)频繁项目集的所有非空子集都必须也是频 繁的。 • 证明(用反证法) :略。 • 推论1 :一个非频繁项目集的任一超集必定也是非频繁的。 • 证明:根据定义若有k-1 项集Ik -1 ,不满足最小支持度阈值minsup ,即P( Ik-1) < min-sup ,则称Ik-1 为非频繁的。若将任意一项 (集) A 添加到Ik - 1 中,则必有P( Ik - 1∪ A) < P( Ik - 1) < min- sup,即Ik - 1 的任一超集( Ik - 1 ∪A) 是非频繁的。得证。
基于Apriori算法的关联规则挖掘研究
_
具 有不 同的重 要性——这 些项 只是 简单 地被 视 为具 有等 同
价值 。 常常会导致那些 具有 重要价值但 是 出现频率相对 较 这
小 的项 被忽略 。例如 , 一个商场 每月会售 出打 印机 墨盒一 千
维普资讯
关 联 规 则 是 美 国 I M ma e eerh C ne B Al d n R sac etr的
f r a h c n i t ∈ Ct o c a dd e C e a
C. co t : n u ++
R ks rw l等 人 于 19 a eh Aga a 9 3年 提 出 的 KD (n wl g D ko e e d
实 的 数 据 是 具 有 多 个 不 同 的 层 次 的 ; 而 在 多层 的 关 联 规 则
A r r使 用一种称作逐 层搜 索的迭代 算法 ,将 k 项集 pi i o . 用 于探索(+ ) 项集 。 k 1一 首先 , 找出频繁 1 项集 的集合 , . 该集合 记作 L 。1 l L 用于找频 繁 2 项集的集合 L , L . 2 而 2用于找 L , 3 如 此下去 , 直到不 能找到频 繁 k 项集 为止 。找每个 L . k需 要
的商 品的关联规则 , 而对 牛奶面包记录不 感兴趣 。 以, 所 这里 的 电脑 就是用户 感兴趣 的项 。利用这样 的用户约束 , 我们 就 可 以对 数据库进 行 “ 缩小 ’ 一
关 的数 据 才 被 作 为 挖 掘 对 象 。
只有那 些与用户 感兴趣项 有
非频 繁项 集。
A r r的 核 心 思 想 是 : pi i o
一种基于Apriori的关联规则的改进算法的研究
图 5 系统 响 应 曲线
到 不 同 的 仿 真 结 果 , 而 得 到 最 终 的参 数 , 图 5中 的 B 图所 进 如
示 , 此 时 的 Q = 1 2 ; ; ] R=[ .5 , [0 5 0 0 0 4 0 0 0 0 , O 1 ] K=
BC
BC AC A C BC
AB
AC A D BC BD
2
4 l 6 3
AC
BC BD CD
4
6 3 3
BCD
3
产 生 k 候 选 集 。 个 方 法要 求 多次 扫 描 数 据 库 从 而造 成 很 大 的 一 这
0 3
输 出 : 繁 项 目集 L 频 。
输 出 : 繁项 目集 L 频 。 1 扫描 一 次 D, 将事 务 按 照长 度 进行 分 组排 序 , 出 C1 ) 并 得 ;
2 根 据 引 理 1和 引 理 2, 新 D D1 ) 更 — ;
3 C = 1作 笛 卡 尔积 , 选 出 L ; )2 L 筛 2
Ke wo d : ir al i m .ss it n ul d a y r sapr i gorh a ocai r e,at miig o t o nn
随 着 数 据 库 和人 工 智 能 技 术 的迅 猛 发 展 ,数 据 整 合 和 数 据 挖 掘 成 为 人 们 研究 的一 个 热 点 。 即我 们 需 要 从 海 量 的数 据 中有 效 地 抽 取 出 有 价值 的数 据 ,那 么 不 得 不 使 用 一 个 高 效 的挖 掘 算 法 。 联 规 则 挖 掘是 数据 挖 掘 研 究 中的 一 个 重要 分 支 , 是 数 据 关 也 挖 掘 的众 多 知 识类 型 中最 为 典 型 的 一 种 。而 Api i 法 在众 多 r r算 o 的关 联 规 则 算 法 中是 最 经 典 的 。 1 A r r算 法概 述 … pi i o 输 入 : 据 集 ; 小 支 持 数 mi u — o n。 数 最 n pc ut s
基于关联规则的经典Apriori算法研究
{ ,) AF
.
3
5 3 5
3 3
( C 一c u t s p o Ckt 6 , o n — u p  ̄( ,) )
对每个候选计数
{ , BC J (, BD) (, CD)
{,) C E {,】7o la dd t C ) a s
{ ,) AB ( ,) AC
表 5频繁 2 项集 L 一 ! 项集
( C A,】 { D A,】
支持度
2 4
支持度
4 3
( D A,} ( ,】 AE
{,} AF {,) BC
(,) BD {,) BE
3 2
3 5
3 2
扫描事务数据库
数据挖掘( t nn ) 近些年 比较热 门的话题 , Da Miig是 a 它利用数据 挖掘 技术从海 量的数据 中找出隐藏 的规律 建立准确 的数 据模型 , 用来 预测 未来 的发展趋势 。其 中关联规则挖掘是 数据 挖掘中的一个重要的研究 方 向 ,9 3年 A rw l 19 ga a等人最早提 出了关联规则 , 关联规则最典 型的例 子是购物篮分析 。 1关 联 规 则 的 相 关 概 念 . 关 联 规 则 挖 掘 的过 程 描 述 如 下 : 设 I i, , … 是项 的集合 。设任 务相关 的数据 D是数 据库 -{ i … i) l 事务 的集合 , 中每个事务 丁是项 的集 合 , 其 使得 丁 ,。每个事务有一 个 标 识符 , 称作 T D 。设 A是 一 个项 集 , I 事务 T包 含 A 当且仅 当 A[ 丁。关联规 则是诸 如 A B的蕴涵式 , 中 A[ ,, 其 B[,, 并且 A nB一 。 定 义 1 关 联规 则 A≥B在 事务 D 中成立 , 有支持 度 S 其 中 s : 具 , 是 D 中 事务 包 含 AUB 的百 分 比 , 的概 率 P( 它 AUB )。即是 sp u— pr( B -P( otA ) AUB) 最小 支持度记 作 m nu 。支持度 定义为下 式 , isp
Apriori算法在研究生成绩中的应用
…
[ 关键 词] 关联 规则 数 据挖 掘 A r o i p ir 算法 中图分类 号 : P 0 . T3 1 6 文献 标识码 : A
频繁项 目集 文章 编号 :0 9 9 4 (O O 1 — 2 2 0 10 1X2 L )2 07 2
引言 信息 技 术是 当 今最 活 跃 、发展 最迅 速 、影 响最 , 、渗透 力 最强 的 科 泛
2课程 间 的关联 分 析 2 1数 据预 处理 由于 教育信 息 一 般 以关 系数 据 库 的形式 存 在 。对反 映学 生 情况 、学 生 成 绩 的数据 库, 对其 进行 量化 和聚类 处理后 , 可能 会产 生很多 相 同的记录 。根 据 以上特 点 , 文对 数据进 行预 处理 , 本 以达 到关联规 则挖掘 的 目的 。我们 将学 生成 绩中 8 分之 上的分数用 布 尔变量 l 5 表示, 8 分之下 的分 数用布 尔变 量 在 5
事 务集 D中具有置 信度 c 其 中 c D中包含 A的事 务 同时也 是包含 B的 百分 , 是 比。这 是条 件概 率 P( ) 即 B1 。 A
s s p o t A > ) P AU B = u p r ( = B = ( ) c c n i e c (= B :P Bl) = o f d a e A > ) ( A 项的集 合 称 为项 集 。包 含 k个项 的项集 称 作 k项集 。项集 的 出现 频率 是包 含项 集 的事 务数, 简称 为 项集 的频 率 、支持 度或 计数 。如 果项 集 i的支 持度 大于 或等 于最 小支 持度 ( 由用 户 或领 域专 家设 定) 则 I为频 繁项集 。给 , 定一 个事 务集D 挖掘关 联规 则 问题 就 是产 生同 时满足最 小支 持度 阈值 ( i ~ , mn s p 和最 小置信 度 闽值 ( i o f 的关 联规 则 ( u) mncn ) 即强 规则 ) 。 关 联规 则 的挖 掘 可 以分 两个 步 骤 完成 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Apriori算法研究 Apriori算法是一个挖掘关联规则的算法,是Agrawal等设计的一个基本算法。它采用两阶段挖掘的思想,并且基于多次扫描事务数据库来执行。
1. 关联规则
1.1. 基本概念 关联规则是形如 X → Y 的蕴涵式,表示通过 X 可以推导 “ 得到 ” Y ,其中 X 和 Y 分别称为关联规则的先导 (antecedent 或 left-hand-side, LHS) 和后继 (consequent 或 right-hand-side, RHS)。 关联规则 A->B 的支持度 support=P(AB) ,指的是事件 A 和事件 B 同时发生的概率。 置信度 confidence=P(B|A)=P(AB)/P(A), 指的是发生事件 A 的基础上发生事件 B 的概率。 同时满足最小支持度阈值和最小置信度阈值的规则称为强规则 。 如果事件 A 中包含 k 个元素,那么称这个事件 A 为 k 项集, 并且事件 A 满足最小支持度阈值 的事件称为频繁 k 项集 。
1.2. 挖掘过程 第一,找出所有的频繁项集;其目标是发现满足最小支持度阈值的所有项集,这些项集称作频繁项集。 第二,由频繁项集产生强规则。其目标是从上一步发现的频繁项集中提取所有高置信度的规则,这些规则称为强规则。 通常,频繁项集产生的计算开销远大于产生规则所需的计算开销。
2. Apriori算法思想 Apriori 算法使用频繁项集的先验知识,使用一种称作逐层搜索的迭代方法, k 项集用于探索 (k+1) 项集。首先,通过扫描事务(交易)记录,找出所有的频繁 1 项集,该集合记做 L1 ,然后利用 L1 找频繁 2 项集的集合 L2 , L2 找 L3 ,如此下去,直到不能再找到任何频繁 k 项集。最后再在所有的频繁集中找出强规则,即产生用户感兴趣的关联规则。 其中, Apriori 算法具有这样一条性质 :任一频繁项集的所有非空子集也必须是频繁的。因为假如 P(I)< 最小支持度阈值,当有元素 A 添加到 I 中时,结果项集( A ∩ I )不可能比 I 出现次数更多。因此 A ∩ I 也不是频繁的。 该算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递归的方法。
3. Apriori算法步骤 Apriori算法的设计可以分解为两步骤来执行挖掘: 3.1. 挖掘所有频繁项集 从事务数据库(D)中挖掘出所有频繁项集。 支持度大于最小支持度minSup的项集(Itemset)称为频集(Frequent Itemset)。 首先需要挖掘出频繁1-项集;然后,继续采用递推的方式来挖掘频繁k-项集(k>1),具体做法是:在挖掘出候选频繁k-项集(Ck)之后,根据最小置信度minSup来筛选,得到频繁k-项集。最后合并全部的频繁k-项集(k>0)。 挖掘频繁项集的算法描述如下:
算法 Apriori算法的频繁集产生 1: L1 = find_frequent_1-itemsets(D); // 挖掘频繁1-项集,比较容易 2: for (k=2;Lk-1 ≠Φ ;k++) { 3: Ck = apriori_gen(Lk-1 ,min_sup); // 调用apriori_gen方法生成候选频繁k-项集 4: for each transaction t ∈ D { // 扫描事务数据库D 5: Ct = subset(Ck,t); 6: for each candidate c ∈ Ct 7: c.count++; // 统计候选频繁k-项集的计数 8: } 9: Lk ={c ∈ Ck|c.count≥min_sup} // 满足最小支持度的k-项集即为频繁k-项集 10: } 11: return L= ∪ k Lk; // 合并频繁k-项集(k>0)
Apriori算法的频繁项集产生的部分有两个重要的特点:第一,它是一个逐层算法,即从频繁1-项集到最长的频繁项集,它每次遍历项集格中的一层;第二,它使用产生-测试策略来发现频繁项集。在每次迭代之后,新的候选项集都由前一次迭代发现的频繁项集产生,然后对每个候选的支持度进行计数,并与最小支持度阈值进行比较。该算法需要的总迭代次数是kmax+1,其中kmax是频繁项集的最大长度。
3.2. 挖掘频繁关联规则 基于第1步挖掘到的频繁项集,继续挖掘出全部的频繁关联规则。 置信度大于给定最小置信度minConf的关联规则称为频繁关联规则(Frequent Association Rule)。在这一步,首先需要从频繁项集入手,首先挖掘出全部的关联规则(或者称候选关联规则),然后根据minConf来得到频繁关联规则。 挖掘频繁关联规则的算法描述如下:
算法 挖掘频繁关联规则 1: 初始状态 : L = ∪ k Lk; AR = Φ; // L是频繁项集集合,AR是频繁关联规则集合 2: for all λk (λk是L的元素,是一个k-频繁项集,大小为n){ 1. for all αk (αk是λk 的非空真子集){ i. if(αk → βm的置信度>= minConf) { // 这里,m + k = n,其中αk → βm是一个关联规则 a) AR = AR ∪ (αk → βm); ii. } 2. } 3: } 4: return AR;
4. Apriori算法计算复杂度 4.1. 影响因素 Apriori算法计算复杂度受如下因素影响。 支持度阈值 降低支持度阈值通常将导致更多的频繁项集。这给算法的计算复杂度带来不利影响,因为必须产生更多候选集并对其计数。随着支持度阈值的降低,频繁项集的最大长度将增加。而随着频繁项集最大长度的增加,算法需要扫描数据集的次数也将增多。 项数(维度) 随着项数的增加,需要更多的空间来存储的支持度计数。如果频繁项集的数目也随着数据维度增加而增长,则由于算法产生的候选项集更多,计算量和I/O开销将增加。 事务数 由于Apriori算法反复扫描数据集,因此它的运行时间随着事务数的增加而增加。 事务的平均宽度 对于密集数据集,事务的平均宽度可能很大,这将在两个方面影响Apriori算法的复杂度。首先,频繁项集的最大长度随事务平均宽度增加而增加,因而,在候选项产生和支持度计算时必须考察更多候选项集;其次,随着事务宽度的增加,事务中将包含更多的项集,这将增加支持度计数时Hash树的遍历次数。
4.2. 时间复杂度 频繁1-项集的产生 对于每个事务,需要更新事务中出现的每个项的支持度计数。假定w为事务的平均宽度,则该操作需要的时间为O(Nw),其中N为事务的总数。 候选的产生 为了产生候选k-项集,需要合并一对频繁(k-1)-项集,确定它们是否至少有k-2个项相同。每次合并操作最多需要k-2次相等比较。在最好情况下,每次合并都产生一个可行的候选k-项集;在最坏的情况下,算法必须合并上次迭代发现的每对频繁(k-1)-项集。因此,合并频繁项集的总开销为:
∑(k−2)|Ck|wk=2k−1|
2
w
k=2 Hash树在候选产生时构造,以存放候选项集。由于Hash树的最大深度为k,将候选项集散列到Hash树的开销为O(∑k|Ck
|w
k=2)。在候选项剪枝的过程中,需要检验每个候选k-项
集的k-2个子集是否频繁。由于在Hash树上查找一个候选的花费是O(k),因此候选剪枝需要的时间是O(∑k(k−2)|Ck
|w
k=2)。
支持度计数 每个长度为|t|的事务将产生C|t|k个k-项集。这也是每个事务遍历Hash树的有效次数。支持度计数的开销为O(N∑Cwkαkk),其中w是事务的最大宽度,αk是更新Hash树中一个候选k-项集的支持度计数的开销。
5. Apriori算法应用 经典的关联规则数据挖掘算法Apriori 算法广泛应用于各种领域,通过对数据的关联性进行了分析和挖掘,挖掘出的这些信息在决策制定过程中具有重要的参考价值。 Apriori算法广泛应用于商业中,应用于消费市场价格分析中,它能够很快的求出各种产品之间的价格关系和它们之间的影响。通过数据挖掘,市场商人可以瞄准目标客户,采用个人股票行市、最新信息、特殊的市场推广活动或其他一些特殊的信息手段,从而极大地减少广告预算和增加收入。 Apriori算法应用于网络安全领域,比如时候入侵检测技术中。它通过模式的学习和训练可以发现网络用户的异常行为模式。采用作用度的Apriori算法削弱了Apriori算法的挖掘结果规则,是网络入侵检测系统可以快速的发现用户的行为模式,能够快速的锁定攻击者,提高了基于关联规则的入侵检测系统的检测性。 Apriori算法应用于高校管理中。随着高校贫困生人数的不断增加,学校管理部门资助工作难度也越加增大。针对这一现象,提出一种基于数据挖掘算法的解决方法。将关联规则的Apriori算法应用到贫困助学体系中,并且针对经典Apriori挖掘算法存在的不足进行改进。实验结果表明,改进后的Apriori算法在运行效率上有了很大的提升,挖掘出的规则也可以有效地辅助学校管理部门有针对性的开展贫困助学工作。 Apriori算法被广泛应用于移动通信领域。在关联规则数据挖掘中广泛应用的Apriori算法被很多公司应用。依托某电信运营商正在建设的增值业务Web数据仓库平台,对来自移动增值业务方面的调查数据进行了相关的挖掘处理,从而获得了关于用户行为特征和需求的间接反映市场动态的有用信息,这些信息在指导运营商的业务运营和辅助业务提供商的决策制定等方面具有十分重要的参考价值。