Weka_关联规则实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WEKA数据挖掘平台上的关联规则挖掘算法 有三种,分别是Apriori、PredictiveApriori和 Terius,这三个算法均不支持数值型数据。 事实上,绝大部分的关联规则算法均不支持 数值型。所以必须将数据进行处理,将数据 按区段进行划分,进行离散化分箱处理。
小麦期货市场和现货市场的价格 数据
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)
离散化分箱后数据文件
Weka打开数据文件
删除不需要的属性
使用Apriori进行分析
使用Apriori进行分析
Apriori =======
Minimum support: 0.1 (3 instances) Minimum metric <confidence>: 0.9 Number of cycles performed: 18
使用其它关联规则算法进行分析
· 使用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=MLF 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.40743) 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 ==> Current=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)
PredictiveApriori算法
将置信度和支持度合并为预测精度而成为单 一度测量法 找出经过预测精度排序的关联规则
Terius算法
根据确认度来寻找规则,它与Apriori一样寻 找其结论中含有多重条件的规则,但不同的 是这些条件相互间是‘或’,而不是‘与’ 的关系。
实例:期货市场与现货市场之间的关联性研 究
得到一条规则,其意思是如果期货市场上小麦价格低,那么现货 市场的价格也是低,这条规则是对的。
使用Apriori的调整设置
使用Apriori的调整设置
调整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%。 如果期货市场上小麦价格中高,那么现货市场的价格也是中高,可信度57%。 这几条规则后也许可以判断出这两个价格之间存在着某种的正关联关系。 但其关联程度如何,是否真正有正关联便不得而知。
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)。即是 Support (A=>B)=P(AUB) Confidence (A=>B)=P(B|A)。 同时满足最小支持度阈值(min_sup)和最小置信度阈值 (min_conf)的规则称作强关联规则。
Apriori算法综述
经典的频集算法 Agrawal等于1994年提出了一个挖掘顾客交易数据 库中项集间的关联规则的重要方法,其核心是基于 两个阶段频繁集思想的递推算法。所有支持度大于 最小支持度的项集称为频繁项集,简称频集。 算法的基本思想 首先找出所有的频繁集,这些项集出现的频繁性至 少和预定义的最小支持度一样。然后由频繁集产生 强关联规则,这些规则必须满足最小支持度和最小 可信度。
Procedure apriori_gen(Lk-1,min_sup) (1) for each l1∈Lk-1 (2) for each l2∈Lk-1 (3) if(l1[1]= l2[1])∧…∧(l1[k-2]= l2[k-2])∧(l1[k-1]!= l2[k-1]) { (4) c= l1 join l2; //将两个项集连接到一起 (5) if has _ infrequent _ itemset (c, Lk-1) (6) delete c; //除去不可能产生频繁项集的候选 (7) else Ck=Ck {c}; (8) } (9) Return Ck;
现货市场的最高价是2004年3月,价格为1642元/吨, 最低价是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, 代表现货市场。
Apriori核心算法分析
为生成所有频繁集,使用了递推的方法。其核心思想简要描述如 下:
输入:交易数据库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) } (8) L k={ c∈ Ct | c. count > min _sup}; (9) Return L=U k L k;
源数据介绍 数据是2004年1月到2006年8月的小麦期货市 场和现货市场的价格,其中期货市场价格来 自郑州商品交易所,选硬冬白小麦 (WT609),价格为每月的收盘价,现货市场 的价格来自国家粮油信息中心,为中等普通 小麦市场批发价格,价格数值为每个月的下 旬平均价。单位均转换为元/吨。
数据预处理
wenku.baidu.com
期货市场的最高价是2004年9月,价格为1700元/吨,最低 价是2006年6月,价格为1266元/吨。根据实际情况和业务 需求,将价格按高低分为5个部分,分别为高、中高、中、 中低和低。其划分方法是:
将最高价减去最低价再除以5,得价差。即(1700-
1266)/5=86.8。 将最高价减去价差,得第一区间最低值,即170086.8=1613.2。 将第一区间最低值减去价差,得第二区间最低值,即1613.286.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,代表期货市场。
共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.285094 0.125000 */ Current = HMC ==> Future = HMF 4. /* 0.258884 0.218750 */ Current = LC ==> Future = LF 5. /* 0.238576 0.093750 */ Current = MLC ==> Future = MLF 6. /* 0.235630 0.156250 */ Current = LC ==> Future = MLF 7. /* 0.235630 0.156250 */ Future = MLF ==> Current = LC 8. /* 0.226594 0.187500 */ Future = MLF ==> Current = MLC 共得出12条规则。第二条规则的 9. /* 0.211775 0.062500 */ Current = HC ==> Future = HF 意思期货市场价格中高那么现货 10. /* 0.211775 0.062500 */ Future = HF ==> Current = HC 11. /* 0.200472 0.031250 */ Current = MC ==> Future = MF 市场价格也是中高。第三条规则 反过来了,就是现货市场价格中 12. /* 0.163636 0.062500 */ Current = HC ==> Future = HMF 高那么期货市场价格也是中高。 Number of hypotheses considered: 70 规则很多,但并不是什么重要的 Number of hypotheses explored: 70 Time: 00 min 00 s 032 ms 信息。
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)步),对于数据库 中的每个交易利用subset函数来帮助发现该交易记录的所 有(已成为候选项集)的子集(第(5)步),由此累计 每个候选项集的支持频度(第(6)步)。最终满足最小 支持频度的候选项集组成了频繁项集L。这样可以利用一 个过程来帮助从所获得频繁项集中生成所有的关联规则。 Apriori过程完成两种操作,那就是连接和消减操作。在连 接过程中, Lk-1与Lk-1相连接以产生潜在候选项集 (Apriori算法中的第(1)步至第(4)步);消减过程中 (Apriori算法中的第(5)步至第(6)步)利用Apriori性 质消除候选项集中那些子集为非频繁项集的项集。 可能产生大量的候选集,以及可能需要重复扫描数据库, 是Apriori算法的两大缺点。