《Weka系统中的关联规则课件》由会员分享,可在线阅读,更多相关《Weka系统中的关联规则课件(26页珍藏版)》请在金锄头文库上搜索。
1、Weka系统中的关联规则,1.Apriori 2.PredictiveApriori 3.Terius,关联规则的基本概念,设I=i1 ,i2 ,im是所有数据项的集合,相当于商品的所有种类的集合。设任务相关的数据D是数据库所有事务的集合,其中每个事务T是数据项的集合,使得。每一个事务有一个标识符,称作TID。设A是一个项集,事务T包含A当且仅当。关联规则是形如的蕴涵式,其中,并且。规则在事务集D中成立,具有支持度s,其中s是D中事务包含(即A和B二者)的百分比。它是概率P()。规则在事务集D中具置信度c,如果D中包含A的事务同时也包含B的百分比是c。这是条件概率P(B|A)。即是 Suppo
2、rt (A=B)=P(AUB) Confidence (A=B)=P(B|A)。 同时满足最小支持度阈值(min_sup)和最小置信度阈值(min_conf)的规则称作强关联规则。,Apriori算法综述,经典的频集算法 Agrawal等于1994年提出了一个挖掘顾客交易数据库中项集间的关联规则的重要方法,其核心是基于两个阶段频繁集思想的递推算法。所有支持度大于最小支持度的项集称为频繁项集,简称频集。 算法的基本思想 首先找出所有的频繁集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频繁集产生强关联规则,这些规则必须满足最小支持度和最小可信度。,Apriori核心算法分析,为生成所
3、有频繁集,使用了递推的方法。其核心思想简要描述如下: 输入:交易数据库D,最小支持阈值min _sup; 输出:Li,D中的频繁项集; 方法: (1) L1=find_frequent_1_itemset(D); /发现1-项集 (2) For (k=2;Lk-1 ;k+) (3) Ck=apriori_gen(Lk-1,min_sup); /根据频繁(k-1)-项集产生候选k-项集 (4) For each t D /扫描数据库,确定每个候选集的支持频度 (5) Ct=subset (Ck, t); /获得t所包含的候选项集 (6) For each c Ct c. count+; (7)
4、(8) L k= c Ct | c. count min _sup; (9) Return L=U k L k;,Procedure apriori_gen(Lk-1,min_sup) (1) for each l1Lk-1 (2) for each l2Lk-1 (3) if(l11= l21)(l1k-2= l2k-2)(l1k-1= l2k-1) (4) c= l1 join l2; /将两个项集连接到一起 (5) if has _ infrequent _ itemset (c, Lk-1) (6) delete c; /除去不可能产生频繁项集的候选 (7) else Ck=Ck c;
5、 (8) (9) Return Ck; procedure has _ infrequent _ subset(c, Lk-1) (1)for each(k-1)-subset s of c (2)if sLk-1 return TRUE; else return FALSE;,Apriori算法的第(1)步就是发现频繁1-项集L1;在第(2)至第(8)步,利用Lk-1产生Ck以便获得Lk。apriori_gen过程产生相应的候选项集;然后利用Apriori性质删除那些子集为非频繁项集的候选项集(第(3)步)。一但产生所有候选,就要扫描数据库(第(4)步),对于数据库中的每个交易利用subse
6、t函数来帮助发现该交易记录的所有(已成为候选项集)的子集(第(5)步),由此累计每个候选项集的支持频度(第(6)步)。最终满足最小支持频度的候选项集组成了频繁项集L。这样可以利用一个过程来帮助从所获得频繁项集中生成所有的关联规则。 Apriori过程完成两种操作,那就是连接和消减操作。在连接过程中, Lk-1与Lk-1相连接以产生潜在候选项集(Apriori算法中的第(1)步至第(4)步);消减过程中(Apriori算法中的第(5)步至第(6)步)利用Apriori性质消除候选项集中那些子集为非频繁项集的项集。 可能产生大量的候选集,以及可能需要重复扫描数据库,是Apriori算法的两大缺点。
7、,PredictiveApriori算法,将置信度和支持度合并为预测精度而成为单一度测量法 找出经过预测精度排序的关联规则,Terius算法,根据确认度来寻找规则,它与Apriori一样寻找其结论中含有多重条件的规则,但不同的是这些条件相互间是或,而不是与的关系。,实例:期货市场与现货市场之间的关联性研究,源数据介绍 数据是2004年1月到2006年8月的小麦期货市场和现货市场的价格,其中期货市场价格来自郑州商品交易所,选硬冬白小麦(WT609),价格为每月的收盘价,现货市场的价格来自国家粮油信息中心,为中等普通小麦市场批发价格,价格数值为每个月的下旬平均价。单位均转换为元/吨。,数据预处理,
8、WEKA数据挖掘平台上的关联规则挖掘算法有三种,分别是Apriori、PredictiveApriori和Terius,这三个算法均不支持数值型数据。事实上,绝大部分的关联规则算法均不支持数值型。所以必须将数据进行处理,将数据按区段进行划分,进行离散化分箱处理。,小麦期货市场和现货市场的价格数据,期货市场的最高价是2004年9月,价格为1700元/吨,最低价是2006年6月,价格为1266元/吨。根据实际情况和业务需求,将价格按高低分为5个部分,分别为高、中高、中、中低和低。其划分方法是: 将最高价减去最低价再除以5,得价差。即(1700-1266)/5=86.8。 将最高价减去价差,得第一区
9、间最低值,即1700-86.8=1613.2。 将第一区间最低值减去价差,得第二区间最低值,即1613.2-86.8=1526.4。 依步骤3,得第三区间最低值1439.6和第四区间最低值1352.8。 每个区间的最低值为下一区间的最高值。 这样就可以分为1700,1613.2),1613.2,1526.4),1526.4,1439.6),1439.6,1352.8),1352.8,1266。 分别用HF,HMF,MF,MLF,LF表示, 其中H为high,代表高,M为medium代表中,L为low,代表低。 F为future,代表期货市场。,现货市场的最高价是2004年3月,价格为1642元
10、/吨,最低价是2004年的1月份,价格为1401元/吨。与期货市场采用相同的方法进行离散化分箱操作,价差为(1642-1401)/5=48.2,分区间可得: 1642,1593.8)用HC表示; 1593.8,1545.6) 用HMC表示; 1545.6,1497.4) 用MC表示; 1497.4,1449.2) 用MLC表示; 1449.2,1401 用LC表示。 其中C为current, 代表现货市场。,离散化分箱后数据文件,Weka打开数据文件,删除不需要的属性,使用Apriori进行分析,使用Apriori进行分析,Apriori = Minimum support: 0.1 (3 i
11、nstances) Minimum metric : 0.9 Number of cycles performed: 18 Generated sets of large itemsets: Size of set of large itemsets L(1): 10 Size of set of large itemsets L(2): 4 Best rules found: 1. Future=LF 3 = Current=LC 3 conf:(1) 得到一条规则,其意思是如果期货市场上小麦价格低,那么现货市场的价格也是低,这条规则是对的。,使用Apriori的调整设置,使用Apriori
12、的调整设置,调整Apriori 参数,将minMitric(最小置信度)从0.9调成0.55。再次运算可得: Best rules found: 1. Future=LF 3 = Current=LC 3 conf:(1) 2. Current=MLC 7 = Future=MLF 4 conf:(0.57) 3. Future=HMF 7 = Current=HMC 4 conf:(0.57) 规则的意义为: 如果期货市场上小麦价格低,那么现货市场的价格也是低,可信度100%。 如果现货市场上小麦价格中低,那么期货市场的价格也是中低,可信度57%。 如果期货市场上小麦价格中高,那么现货市场的
13、价格也是中高,可信度57%。 这几条规则后也许可以判断出这两个价格之间存在着某种的正关联关系。但其关联程度如何,是否真正有正关联便不得而知。,使用其它关联规则算法进行分析,使用PredictiveApriori进行挖掘,使用PredictiveApriori进行挖掘 Best rules found: 1. Future=LF 3 = Current=LC 3 acc:(0.77994) 2. Future=HMF 7 = Current=HMC 4 acc:(0.47441) 3. Current=MLC 7 = Future=MLF 4 acc:(0.47441) 4. Future=ML
14、F 10 = Current=LC 5 acc:(0.45524) 5. Current=LC 10 = Future=MLF 5 acc:(0.45524) 6. Current=MC 3 = Future=MF 2 acc:(0.45055) 7. Current=HMC 8 = Future=HMF 4 acc:(0.44328) 8. Future=HF 4 = Current=HC 2 acc:(0.40743) 9. Future=HF 4 = Current=HMC 2 acc:(0.40743) 10. Current=HC 4 = Future=HMF 2 acc:(0.40
15、743) 11. Current=HC 4 = Future=HF 2 acc:(0.40743) 12. Future=MLF 10 = Current=MLC 4 acc:(0.3811) 13. Current=LC 10 = Future=LF 3 acc:(0.30799) 14. Future=HMF 7 = Current=HC 2 acc:(0.30513) 15. Current=MLC 7 = Future=MF 2 acc:(0.30513) 16. Future=MF 8 = Current=LC 2 acc:(0.28063) 17. Future=MF 8 = Cu
16、rrent=MLC 2 acc:(0.28063) 18. Current=HMC 8 = Future=MF 2 acc:(0.28063) 19. Current=HMC 8 = Future=HF 2 acc:(0.28063) 20. Current=LC 10 = Future=MF 2 acc:(0.24374),共20条规则。其中前3条与Apriori的所挖出来的3条规则类似。可以看出,PredictiveApriori按acc数值的大小几乎将所有规则都挖出来。规则虽然很多,但并没有指出期货市场与现货市场的关联关系。,使用Terius进行挖掘,使用Terius进行挖掘 得出的规则 1. /* 0.340260 0.000000 */ Future = LF = Current = LC 2. /* 0.291773 0.093750 */ Future = HMF = Current = HMC 3. /* 0.2850