数据挖掘关联分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据挖掘关联分析
1 引言
在大型数据库中,关联规则挖掘是最常见的数据挖掘任务之一.关联规则挖掘就是从大量数据中发现项集之间的相关联系.Apriori 算法,前者采用逐层搜索的迭代策略,先产生候选集,再对候选集进行筛选,然后产生该层的频繁集。
2 Apriori 算法
Apriori 算法是关联规则挖掘中最基本也是最常见的算法.它是由Agrawal 等人于1993年提出的一种最有影响的挖掘布尔关联规则频繁项集的算法,主要用来在大型数据库上进行快速挖掘关联规则。
2.1 算法基本思想
Apriori 算法采用逐层迭代搜索方法,使用候选项集来找频繁项集。其基本思想是: 首先找出所有频繁1-项集的集合L l,L1用于找频繁2-项集的集合L2,而L2用于找L3,如此下去,直到不能找到频繁k-项集。并利用事先设定好的最小支持度阈值进行筛选,将小于最小支持度的候选项集删除,再进行下一次的合并生成该层的频繁项集。经过筛选可减少候选项集数,从而加快关联规则挖掘的速度。
2.2 算法的挖掘
如果一个项集是频繁的,那么它的所有子集都是频繁的
先验原理成立的原因:
X
s
Y
Y
⊆
∀
⇒
X≥
,Y
X
(
)
(
)
)
s
(:
一个项集的支持度不会超过其任何子集的支持度
该性质称作支持度的反单调性质
2.2.1候选项集的生成
Apriori 算法使用了Apriori性质来产生候选项集.任何非频繁的( k-1 )项集都不可能是频繁k-项集的子集.因此,如果一个候选k-项集的( k-1 )-子集不在L k -1中,则该候选项集也不可能是频繁的,从而可以从C k中删除.
2.2.2由L k-1 生成L k
设定k=1
扫描事务数据库一次,生成频繁的1-项集
如果存在两个或以上频繁k-项集,重复下面过程:
[候选产生] 由长度为k的频繁项集生成长度为k+1的候选项集
[候选前剪枝] 对每个候选项集,若其具有非频繁的长度为k的子集,则删除该候选项集
[支持度计算] 扫描事务数据库一次,统计每个余下的候选项集的支持度
[候选后剪枝] 删除非频繁的候选项集,仅保留频繁的(k+1)-项集,设定k = k+1
Apriori流程图
2.2.3候选项集的支持度计算
1)扫描事务数据库,决定每个候选项集的支持度。
2)为了减少比较次数,将候选项集保存在散列(hash)结构中,将每个事务与保存在
散列结构的候选项集作匹配
2.3基于Apriori算法的数据挖掘应用实例
2.3.1数据库样本
当前是列出我们实验中用到的一个候选项集:
{1 4 5}, {1 2 4}, {4 5 7}, {1 2 5}, {4 5 8}, {1 5 9}, {1 3 6}, {2 3 4}, {5 6 7}, {3 4 5}, {3 5 6}, {3 5 7}, {6 8 9}, {3 6 7}, {3 6 8}。
2.3.2Apriori算法的实现过程
首先设置散列函数,和叶子大小限制。
根据以上限制,先根据首项形成初步的散列树,见下图:
图:生成候选的散列树(原始版本)
接着根据第二项形成优化后的散列树,结果见下图:
图:生成候选的散列树(中间过程)
按照以上过程,按照项的顺序,我们可以将树的分裂做到最后一项,最终结果见下图:
图:生成候选的散列树(最终版本)
2.4 Apriori算法的优缺点
1 ) 产生大量的频繁集
2 ) 重复扫描事务数据库.
2.5 Apriori算法的优化思考
我们从复杂度方面考虑:
1)最小支持度阈值的选择
低支持度阈值导致更多频繁项集
将会增加候选项集的个数和频繁项集的最大长度
2)数据库的维度,即项的个数
需要更多空间保存每个项的支持度计数
如果频繁项集的个数增加,则计算量和I/O开销也增加
3)数据库的大小
由于Apriori多次访问数据库,算法的运行时间将随事务个数的增加而增加
平均事务长度
4)事务长度随数据库密度的增加而增加
可能会增加频繁项集的最大长度和散列树的遍历时间(因为事务的子集个数随着其长度的增加而增加)