资源描述
实验三:基于 Weka 进行关联规则挖掘
实验步骤
1. 利用Weka对数据集contact-lenses.arff进行Apriori关联规则挖掘。要求:
描述数据集;解释 Apriori 算法及流程;解释 Weka 中有关 Apriori 的参数;
解释输出结果
Apriori 算法:
1、 发现频繁项集,过程为
(1) 扫描
(2) 计数
(3) 比较
(4) 产生频繁项集
(5) 连接、剪枝,产生候选项集
(6) 重复步骤(1)~(5)直到不能发现更大的频集
2、 产生关联规则
(1)对于每个频繁项集L,产生L的所有非空子集;
(2)对于L的每个非空子集S,如果
P(L)/P(S)≧min_conf(最小置信度阈值)
则输出规则“S=>L-S”
Weka 中有关 Apriori 的参数:
1. car 如果设为真,则会挖掘类关联规则而不是全局关联规则。
2. classindex 类属性索引。如果设置为-1,最后的属性被当做类属性。
3.delta 以此数值为迭代递减单位。不断减小支持度直至达到最小支持度或产生了满足数量要求的规则。
4. lowerBoundMinSupport 最小支持度下界。
5. metricType 度量类型。设置对规则进行排序的度量依据。可以是:置信度(类关联规则只能用置信度挖掘),提升度(lift),杠杆率(leverage),确信度(conviction)。
在 Weka中设置了几个类似置信度(confidence)的度量来衡量规则的关联程度,它们分别是:
a)Lift : P(A,B)/(P(A)P(B)) Lift=1时表示A和B独立。这个数越大(>1),越表明A和B存在于一个购物篮中不是偶然现象,有较强的关联度.
b)Leverage :P(A,B)-P(A)P(B)
Leverage=0时A和B独立,Leverage越大A和B的关系越密切
c)Conviction:P(A)P(!B)/P(A,!B) (!B表示B没有发生) Conviction也是用来衡量A和B的独立性。从它和lift的关系(对B取反,代入Lift公式后求倒数)可以看出,这个值越大, A、B越关联。
6.minMtric 度量的最小值。
7.numRules 要发现的规则数。
8.outputItemSets 如果设置为真,会在结果中输出项集。
9. removeAllMissingCols 移除全部为缺省值的列。
10. significanceLevel 重要程度。重要性测试(仅用于置信度)。
11.upperBoundMinSupport 最小支持度上界。 从这个值开始迭代减小最小支持度。
12.verbose 如果设置为真,则算法会以冗余模式运行。
对数据集contact-lenses.arff进行Apriori关联规则挖掘的结果:
由输出:共进行16轮搜索,生成11个频繁1项集,21个频繁2项集,6个频繁3项集;产生10条(设置的)关联规则;
如第一条规则,tear-prod-rate=reduced ==>contact-lenses=none 的置信度为1,即在tear-prod-rate=reduced 的条件下,contact-lenses=none的概率为1;
2. 根据 CarInfo.txt 和 CarInfo Description.txt 两个文件将 CarInfo.txt 转换成 CarInfo.arff 文件,并进行 Apriori 关联规则挖掘。要求同 1
将txt文件数据复制到excel中并保存为CSV格式,在weka中打开CSV文件,并保存为arff文件即可。其他同1;
3. 解释 FPGrowth 算法;解释 Weka 中关于 FPGrowth 算法的参数;比较 FPGrowth 和 Apriori 算法的区别
FPGrowth 算法:
1、 构造项头表:扫描数据库一遍,得到频繁项的集合F和每个频繁项的支持度。把F按支持度递降排序,记为L。
2、 构造原始FPTree:把数据库中每个事物的频繁项按照L中的顺序进行重排。并按照重排之后的顺序把每个事物的每个频繁项插入以null为根的FPTree中。如果插入时频繁项节点已经存在了,则把该频繁项节点支持度加1;如果该节点不存在,则创建支持度为1的节点,并把该节点链接到项头表中。
3、对FP树挖掘:
由长度为1的叶子节点开始,构造它的条件模式基,然后构造它的条件FP树,并递归的在该树上进行挖掘,模式增长通过后缀模式与条件FP树昌盛的频繁模式连接实现。
FPGrowth 算法的参数:
1. delta:以此数值为迭代递减单位。不断减小支持度直至达到最小支持度或产生了满足数量要求的规则。
2. findAllRulesForSupportLevel:查找满足最小支持下限和最小度量约束的所有规则。 打开此模式将禁用迭代支持减少过程,以查找指定数量的规则。
3. lowerBoundMinSupport:最小支持度下界
4. maxNumberOfItems:频繁项集中最多项的个数
5. metricType:度量类型。设置对规则进行排序的度量依据。可以是:置信度(类关联规则只能用置信度挖掘),提升度(lift),杠杆率(leverage),确信度(conviction)。
6. 在 Weka中设置了几个类似置信度(confidence)的度量来衡量规则的关联程度,它们分别是:
a)Lift : P(A,B)/(P(A)P(B)) Lift=1时表示A和B独立。这个数越大(>1),越表明A和B存在于一个购物篮中不是偶然现象,有较强的关联度.
b)Leverage :P(A,B)-P(A)P(B)
Leverage=0时A和B独立,Leverage越大A和B的关系越密切
c)Conviction:P(A)P(!B)/P(A,!B) (!B表示B没有发生) Conviction也是用来衡量A和B的独立性。从它和lift的关系(对B取反,代入Lift公式后求倒数)可以看出,这个值越大, A、B越关联。
7. minMetric:最小度量
8. numRulesToFind:要发现的规则数
9. positiveIndex:设置要被视为正索引的二进制值属性的索引。 对稀疏数据没有影响(在这种情况下,第一个索引(即非零值)总是被视为正值。对一元值属性没有影响(即当使用Weka Apriori样式格式用于市场篮子数据时, 使用缺少值“?”表示项目不存在。
10. rulesMustContain:打印出只包含这些项的规则
11. transactionsMustContain:将FPGrowth的输入限制为包含这些项的事务(实例)。 提供一个逗号分隔的属性名称列表。
12. upperBoundMinSupport:最小支持度上界
13. useORForMustContainList:对规则使用OR而不是AND必须包含列表。
FPGrowth 和 Apriori 算法的区别:
FP-growth算法比Apriori算法快一个数量级,在空间复杂度方面也比Apriori也有数量级级别的优化。但是对于海量数据,FP-growth的时空复杂度仍然很高,可以采用的改进方法包括数据库划分,数据采样等等。
展开阅读全文