matlab实现apriori算法源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
matlab 实现apriori 算法源代码
一、实验目的
通过实验,加深数据挖掘中一个重要方法——关联分析的认识,其经典算法为apriori 算法,了解影响apriori 算法性能的因素,掌握基于apriori 算法理论的关联分析的原理和方法。
二、实验内容
对一数据集用apriori 算法做关联分析,用matlab 实现。
三、方法手段
关联规则挖掘的一个典型例子是购物篮分析。市场分析员要从大量的数据中发现顾客放入其购物篮中的不同商品之间的关系。如果顾客买牛奶,他也购买面包的可能性有多大? 什么商品组或集合顾客多半会在一次购物时同时购买?例如,买牛奶的顾客有80%也同时买面包,或买铁锤的顾客中有70%的人同时也买铁钉,这就是从购物篮数据中提取的关联规则。分析结果可以帮助经理设计不同的商店布局。一种策略是:经常一块购买的商品可以放近一些,以便进一步刺激这些商品一起销售,例如,如果顾客购买计算机又倾向于同时购买财务软件,那么将硬件摆放离软件陈列近一点,可能有助于增加两者的销售。另一种策略是:将硬件和软件放在商店的两端,可能诱发购买这些商品的顾客一路挑选其他商品。
关联规则是描述数据库中数据项之间存在的潜在关系的规则,形式为1212......m n A A A B B B ∧∧∧⇒∧∧∧,其中(1,2...,)i A i m =,(1,2...,)j A j n =是数据库中的数据项.
数据项之间的关联规则即根据一个事务中某些项的出现,可推导出另一些项在同一事务中也出现。
四、Apriori 算法
1.算法描述
Apriori 算法的第一步是简单统计所有含一个元素的项集出现的频率,来决定最大的一维项目集。在第k 步,分两个阶段,首先用一函数sc_candidate(候选),通过第(k-1)步中生成的最大项目集L k-1来生成侯选项目集C k 。然后搜索数据库计算侯选项目集C k 的支持度. 为了更快速地计算C k 中项目的支持度, 文中使用函数count_support 计算支持度。 Apriori 算法描述如下:
(1) C 1={candidate1-itemsets};
(2) L 1={c ∈C 1|c.count ≥minsupport};
(3) for(k=2,L k-1≠Φ,k++) //直到不能再生成最大项目集为止 (4) C k =sc_candidate(L k-1); //生成含k 个元素的侯选项目集 (5) for all transactions t ∈D //办理处理
(6) Ct=count_support(C k ,t); //包含在事务t 中的侯选项目集 (7) for all candidates c ∈C t (8) c.count=c.count+1; (9) next
(10) L k ={c ∈C k |c.count ≥minsupport}; (11) next
(12) resultset=resultset ∪L k 其中, D 表示数据库;minsupport 表示给定的最小支持度;resultset 表示所有最大项目集。
Sc_candidate函数
该函数的参数为L k-1,即: 所有最大k-1维项目集,结果返回含有k个项目的侯选项目集C k。事实上,C k是k维最大项目集的超集,通过函数count_support计算项目的支持度,然后生成Lk。
该函数是如何完成这些功能的, 详细说明如下:
首先, 通过对L k-1自连接操作生成C k,称join(连接)步,该步可表述为:
insert into C k
select P.item1,P.item2,...,P.item k-1,Q.item k-1 from L k-1P,L k-1Q
where P.item1=Q.item1,...,P.item k-2=Q.item k-2,P.item k-1 若用集合表示:C k={X∪X'|X,X'∈L k-1,|X∩X'|=k-2} 然后,是prune(修剪)步,即对任意的c,c∈C k, 删除C k中所有那些(k-1)维子集不在L k-1中的项目集,得到侯选项目集C k。表述为: for all itemset c∈C k for all (k-1)维子集s of c if(s不属于L k-1) then delete c from C k; 用集合表示:C k={X∈C k|X的所有k-1维子集在L k-1中} 2.Apriori算法的举例 示例说明Apriori算法运作过程,有一数据库D, 其中有四个事务记录, 分别表示为 在Apriori,并和预定义的最小支持度比较,来确定该步的最大项目集。 首先统计出一维项目集,即C1.这里预定义最小支持度minsupport=2,侯选项目集中满足最小支持度要求的项目集组合成最大的1-itemsets。为生成最大的2-itemsets,使用了sc_candidate函数中join步,即:L1joinL1,并通过prune步删除那些C2的那些子集不在L1中的项目集。生成了侯选项目集C2。搜索D中4个事务,统计C2中每个侯选项目集的支持度。然后和最小支持度比较,生成L2。侯选项目集C3是由L2生成.要求自连接的两个最大2-itemsets中,第一个项目相同,在L2中满足该条件的有{I2,I3},{I2,I5}.这两个集合经过join步后, 产生集合{I2,I3,I5}.在prune步中,测试{I2,I3,I5}的子集{I3,I5},{I2,I3},{I2,I5}是否在L2中,由L2可以知道{I3,I5},{I2,I3},{I2,I5}本身就是最大2-itemsets.即{I2,I3,I5}的子集都是最大项目集.那么{I2,I3,I5}为侯选3-itemset.然后搜索数据库中所有事务记录,生成最大的3-tiemsets L3。此时, 从L3中不能再生成侯选4-itemset 。Apriori算法结束. 算法的图例说明