关联规则数据挖掘
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
关联规则数据挖掘
学习报告
目录
引言 2 案例 2 关联规则 3 (一)关联规则定义
(二)相关概念
(三)关联规则分类
数据 6 (一)小型数据
(二)大型数据
应用软件 7 (一)WEKA
(二)IBM SPSS Modeler
数据挖掘 12 总结 27
一、引言
数据库与互联网技术在日益发展壮大,人们每天可以获得的信息量呈指数级增长。
如何从这浩如瀚海的数据中找出我们需要的数据显得尤为重要。
数据挖掘又为资料探勘、数据采矿。
它是数据库知识发现中的一个步骤。
数据挖掘一般是指从大量的数据过算法搜索隐藏于其息的过程。
数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学习、专家系统(依靠过去的经验法则)和模式识别等诸多方法来实现上述目标。
数据挖掘大致分为以下几类:分类(Classification)、估计(Estimation)、预测(Prediction)、相关性分组或关联规则(Affinity grouping or association rules)、聚类(Clustering)、复杂数据类型挖掘(Text, Web ,图形图像,视频,音频等)。
二、案例
"尿布与啤酒"的故事。
在一家超市里,有一个有趣的现象:尿布和啤酒赫然摆在一起出售。
但是这个奇怪的举措却使尿布和啤酒的销量双双增加了。
这不是一个笑话,而是发生在美国沃尔玛连锁店超市的真实案例,并一直为商家所津津乐道。
沃尔玛拥有世界上最大的数据仓库系统,为了能够准确了解顾客在其门店的购买习惯,沃尔玛对
其顾客的购物行为进行购物篮分析,想知道顾客经常一起购买的商品有哪些。
沃尔玛数据仓库里集中了其各门店的详细原始交易数据。
在这些原始交易数据的基础上,沃尔玛利用数据挖掘方法对这些数据进行分析和挖掘。
一个意外的发现是:"跟尿布一起购买最多的商品竟是啤酒!经过大量实际调查和分析,揭示了一个隐藏在"尿布与啤酒"背后的美国人的一种行为模式:在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,而他们中有30%~40%的人同时也为自己买一些啤酒。
产生这一现象的原因是:美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。
按常规思维,尿布与啤酒风马牛不相及,若不是借助数据挖掘技术对大量交易数据进行挖掘分析,沃尔玛是不可能发现数据在这一有价值的规律的。
在这个案例中使用了数据挖掘中的关联规则分析。
关联分析是发现交易数据库中不同项之间的联系。
毫无疑问,关联分析中发现的规则为超市带来了更多的收益。
如果我们能在生活中对关联分析进行应用,一定可以解决更多的问题。
数据关联是数据库中存在的一类重要的可被发现的知识。
若两个或多个变量的取值之间存在某种规律性,就称为关联。
关联可分为简单关联、时序关联、因果关联。
关联分析的目的是找出数据库中隐藏的关联网。
有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有可信度。
关联规则挖掘发现大量数据中项集之间有趣的关联或相关联系。
Agrawal等于1993年首先提出了挖掘顾客交易数据库中项集间的关联规则问题,以后诸多的研究人员对关联规则的挖掘问题进行了大量的研究。
他们的工作包括对原有的算法进行优化,如引入随机采样、并行的思想等,以提高算法挖掘规则的效率;对
关联规则的应用进行推广。
关联规则挖掘在数据挖掘中是一个重要的课题,最近几年已被业界所广泛研究。
三、关联规则
(一)关联规则定义
关联分析是一种简单、实用的分析技术,就是发现存在于大量数据集中的关联性或相关性,从而描述了一个事物中某些属性同时出现的规律和模式。
关联分析是从大量数据中发现项集之间有趣的关联和相关联系。
关联分析的一个典型例子是购物篮分析。
该过程通过发现顾客放人其购物篮中的不同商品之间的联系,分析顾客的购买习惯。
通过了解哪些商品频繁地被顾客同时购买,这种关联的发现可以帮助零售商制定营销策略。
其他的应用还包括价目表设计、商品促销、商品的排放和基于购买模式的顾客划分。
(二)相关概念
1.关联规则
关联规则是指数据之间的简单的使用规则,是指数据之间的相互依赖关系。
关联规则形如:XY;其中XI,YI,并且X∩Y=。
X为先决条件,Y为结果;关联规则反映了项目集X出现的同时项目集Y也会跟着出现。
2.支持度(Support)
设X属于数据项目集,为事务数据库中包含X的记录条数,为事务数据库中记录的总个数,那么项目集X的支持度=/支持度表示项目集在事物集中出现的频率的是多少。
3.置信度(Confidence)
有关联规则XY,其中XI,YI,并且X∩Y=,那么XY的置信度为: Conf(XY)=*100%=P(Y|X)。
置信度是反映在事物X中出现事物Y的条件概率。
4.强关联规则
如果某条规则同时满足最小支持度和最小置信度则称为强关联规则。
5.最小支持度、大项集和最小置信度
从关联规则的定义可以看出任意两个数据项集都存在关联规则只是其支持度和置信度不同而已。
为了找出有意义的规则就需要规定最小支持度和最小置信度前者描述了关联规则中数据项集的最低重要程度,记为minsup后者规定了关联规则必须满足的最低可靠性记为,minconf。
支持度大于最小支持度的数据项集称作大项集(Large Itemset)反之则称为弱项集(Small Iterns)。
同时满足最小支持度、最小置信度的关联规则称为强关联规则。
(三)关联规则分类
1.基于规则中处理的变量的类别,关联规则可以分为布尔型和数值型。
布尔型关联规则处理的值都是离散的、种类化的,它显示了这些变量之间的关系;而数值型关联规则可以和多维关联或多层关联规则结合起来,对数值型字段进行处理,将其进行动态的分割,或者直接对原始的数据进行处理,当然数值型关联规则中也可以包含种类变量。
2.基于规则中数据的抽象层次,可以分为单层关联规则和多层关联规则。
在单层的关联规则中,所有的变量都没有考虑到现实的数据是具有多个不同的层次的;而在多层的关联规则中,对数据的多层性已经进行了充分的考虑。
3.基于规则中涉及到的数据的维数,关联规则可以分为单维的和多维的。
单维关联规则是处理单个属性中的一些关系;多维关联规则是处理各个属性之间的某些关系。
(四)算法
1.Apriori算法
1)Apriori算法是一种使用频繁项集的先验知识从而生成关联规则的一种
算法也是最有影响的关联规则挖掘算法。
2)定义:设C(k)表示候选k-项集L(k)表示C(k)中出现频率大于或等于最小支持度阈值与事务总数的乘积的k-项集,即k-频繁项集或者是k-大项集。
3)Apriori算法具有以下性质:任何非频繁的(k-1)-项集都不可能是频繁k-项集的子集。
这是因为如果含有(k-1)-项集的事务占事务总数的百分比不大于最小支持度阈值。
那么含有该(k-1)-项集与另外一项构成的k项集的事务占事务总数的百分比就更不可能大于或等于最小支持度阈值了。
如果用概念来解释的话,含有k-项集的事务构成的概念的涵比含有(k-1)-项集事务所构成的概念的涵增加了那么它的外延必然会减小所包含的事务数也必然减小。
因此,根据这个性质可以在生成k-项集之前先将(k-1)-项集中的非频繁项集删除通过删除候(k-1)-项集中的非频繁项集得到(k-1)-频繁项集。
4)Apriori算法的步骤步骤如下
①设定最小支持度s和最小置信度c。
②Apriori算法使用候选项集。
首先产生出候选的项的集合,即候选项集若候选项集的支持度大于或等于最小支持度则该候选项集为频繁项集。
③在Apriori算法的过程中,首先从数据库读入所有的事务,每个项都被看作候选1-项集得出各项的支持度再使用频繁1-项集集合来产生候选2-项集集合。
因为先验原理保证所有非频繁的1-项集的超集都是非频繁的。
④再扫描数据库。
得出候选2-项集集合。
再找出频繁2-项集。
并利用这些频繁2-项集集合来产生候选3-项集。
⑤重复扫描数据库,与最小支持度比较;产生更高层次的频繁项集再从该集合里产生下一级候选项集直到不再产生新的候选项集为止。
2.FP-树频集算法
1)定义:针对Apriori算法的固有缺陷,J. Han等提出了不产生候选挖掘频繁项集的方法:FP-树频集算法。
采用分而治之的策略,在经过第一遍扫描之后,把数据库中的频集压缩进一棵频繁模式树(FP-tree),同时依然保留其中的关联信息,随后再将FP-tree分化成一些条件库,每个库和一个长度为1的频集相关,然后再对这些条件库分别进行挖掘。
当原始数据量很大的时候,也可以结合划分的方法,使得一个FP-tree可以放入主存中。
实验表明,FP-growth对不同长度的规则都有很好的适应性,同时在效率上较之Apriori算法有巨大的提高。
2)FP-树频集算法的步骤步骤如下
①遍历一次数据库,到处频繁项集(1项集)的集合和支持度计数(频率),并且以降序排序,结果集或表记为L。
②构造FP-tree。
③根据第二步得到的FP-tree,为1项频繁项集中的每一项构造条件
FP-tree。
④得到频繁模式(频繁项集)。
四、数据
(一)小型数据
这是我们得到的最原始的数据,是国外某超市的购物篮数据,共有约一千条。
文件格式为txt格式,每一行代表一个顾客购物篮中的商品。
(二)大型数据
第二个大型数据也是国外某公司的超市购物篮数据,共有88162条数据。
数据为txt格式。
第一行是对每列数据的一个编号,从第二列开始是每个顾客超
市购物篮中的东西。
每个数字代表一个商品。
因为数据过大,所以整个数据是数据集的形式。
五.应用软件
(一)WEKA
1. WEKA简介
WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化的,基于JAVA环境下开源的机器学习以及数据挖掘软件。
它和它的源代码可在其官方下载。
WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。
2.WEKA存储数据的格式是ARFF(Attribute-Relation File Format)文件,这是一种ASCII文本文件。
二维表格存储在如下的ARFF文件中。
识别ARFF文件的重要依据是分行,因此不能在这种文件里随意的断行。
空行(或全是空格的行)将被忽略。
WEKA的关联规则分析功能仅能用来作示,不适合用来挖掘大型数据集。
3.数据处理
由于我们的源数据为TXT格式,无法应用于WEKA软件,所以我们需要将它转换为ARFF格式。
我们查阅有关资料以及有关,找到了一个用Python转换格式的方法。
TXT转为ARFF格式
def txt2arff(filename, value):
with open('./generatedarff.arff', 'w') as fp:
fp.write('''relation ExceptionRelation
attribute ID string
attribute Thrown numeric
attribute SetLogicFlag numeric
attribute Return numeric
attribute LOC numeric
attribute NumMethod numeric
attribute EmptyBlock numeric
attribute RecoverFlag numeric
attribute OtherOperation numeric
attribute class-att {True,False}
data
''')
with open(filename) as f:
contents = f.readlines()
for content in contents:
lines = content.split('\t')
lines = [line.strip() for line in lines] if lines[9] == '1':
lines[9] = "True"
lines.append('{' + str(value) + '}') else:
lines[9] = "False"
lines.append('{1}')
array = ','.join(lines)
fp.write("%s\n" % array)
处理结果:小型数据
大型数据
(二)IBM SPSS Modeler
1.Clementine
为了解决各种商务问题,企业需要以不同的方式来处理各种类型迥异的数据,相异的任务类型和数据类型就要求有不同的分析技术。
Clementine为您提供最出色、最广泛的数据挖掘技术,确保您可用最恰当的分析技术来处理相应的问题,从而得到最优的结果以应对随时出现的商业问题。
即便改进业务的机会被庞杂的数据表格所掩盖, Clementine也能最大限度地执行标准的数据挖掘流程,为您找到解决商业问题的最佳答案。
2.Modeler
其中看到其实Modeler也是SPSS公司收购回的,前身即是Clementine,09年整个SPSS被IBM收购后,就改名为IBM SPSS Modeler了,今年Modeler已经发布18版本,更新要比以前多了不少,多了非常多的扩展功能(例如天气数据获取等等)
Modeler是一款数据挖掘软件,建模的原理主要偏向于数学算法,比如各种聚类算法,各种决策树算法,神经网络算法,贝叶斯算法等等。
目的是通过对数据的整理,建模,挖掘出相关的结果,知道管理实际。
主要应用于数据量大的分析,或者连接至数据库分析。
Modeler界面除了任何软件都有的菜单栏、工具栏、状态栏之外,主要由①数据流构建区②数据流、结果和模型管理区③数据挖掘项目管理区④节点区四个部分构成。
IBM SPSS Modeler是客户端/服务器端架构的产品。
客户既可以在单机版
上运行IBM SPSS Modeler,也可以连接到IBM SPSS Modeler Server运行数据流,从而充分利用服务器的高性能。
IBM SPSS Modeler是一个数据挖掘软件,其功能涵盖了整个数据挖掘流程,它主要提供三类重要功能来支持整个数据挖掘过程:数据整理、探索性数据分析、建立模型模型检验模型应用。
3.数据处理SPSS Modeler需要数据格式为csv。
在刚刚介绍的WEKA软件中可以将txt格式的数据另存为csv格式的数据。
六.数据挖掘
(一)WEKA
1.Apriori算法——小数据
1)默认数值
car 如果设为真,则会挖掘类关联规则而不是全局关联规则。
classindex 类属性索引。
如果设置为-1,最后的属性被当做类属性。
delta 以0.05为迭代递减单位。
不断减小支持度直至达到最小支持度或产生了满足数量要求的规则。
lowerBoundMinSupport 最小支持度下界为0.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越关联。
minMtric 度量的最小值0.9。
numRules 要发现的规则数为10。
outputItemSets 如果设置为真,会在结果中输出项集。
removeAllMissingCols 移除全部为缺省值的列。
significanceLevel 重要程度-0.1。
重要性测试(仅用于置信度)。
upperBoundMinSupport 最小支持度上界。
从1.0开始迭代减小最小支持度。
verbose 如果设置为真,则算法会以冗余模式运行。
2)结果解释
scheme -所选的关联规则挖掘方案: Apriori算法
算法的参数设置:-I -N 10 -T 0 -C 0.9 -D 0.05 -U 1.0 -M 0.5 -S -1.0 -c -1 ; 各参数依次表示:
I - 输出项集,若设为false则该值缺省;
N 10 - 规则数为10;
T 0 –度量单位选为置信度,(T1-提升度,T2杠杆率,T3确信度);
C 0.9 –度量的最小值为0.9;
D 0.05 - 递减迭代值为0.05;
U 1.0 - 最小支持度上界为1.0;
M 0.5 - 最小支持度下届设为0.5;
S -1.0 - 重要程度为-1.0;
c -1 - 类索引为-1输出项集设为真
(由于car, removeAllMissingCols, verbose都保持为默认值False,因此在结果的参数设置为缺省,若设为True,则会在结果的参数设置信息中分别表示为A, R,V)
Minimum support: 0.5 (470 instances) //最小支持度0.5,即最少需要470个实例
Minimum metric <confidence>: 0.9 //最小度量<置信度>: 0.9
Number of cycles performed: 10 //进行了10轮搜索
Generated sets of large itemsets: //生成的频繁项集
Size of set of large itemsets L(1): 11 //频繁1项集:11个
剩余结果
3)修改数值
delta 以0.1为迭代递减单位。
不断减小支持度直至达到最小支持度或产生了满足数量要求的规则。
结果如下:
4)结果解释
scheme -所选的关联规则挖掘方案: Apriori算法
算法的参数设置:-I -N 10 -T 0 -C 0.9 -D 0.1 -U 1.0 -M 0.5 -S -1.0 -c -1 ; 各参数依次表示:
I - 输出项集,若设为false则该值缺省;
N 10 - 规则数为10;
T 0 –度量单位选为置信度,(T1-提升度,T2杠杆率,T3确信度);
C 0.9 –度量的最小值为0.9;
D 0.1 - 递减迭代值为0.1;
U 1.0 - 最小支持度上界为1.0;
M 0.5 - 最小支持度下届设为0.5;
S -1.0 - 重要程度为-1.0;
c -1 - 类索引为-1输出项集设为真
(由于car, removeAllMissingCols, verbose都保持为默认值False,因此在结果的参数设置为缺省,若设为True,则会在结果的参数设置信息中分别表示为A, R,V)
Minimum support: 0.5 (470 instances) //最小支持度0.5,即最少需要470个实例
Minimum metric <confidence>: 1.1 //最小度量<置信度>: 1.1
Number of cycles performed: 3 //进行了3轮搜索
Generated sets of large itemsets: //生成的频繁项集
Size of set of large itemsets L(1): 11 //频繁1项集:11个Size of set of large itemsets L(2): 39 //频繁1项集:39个Size of set of large itemsets L(3):4 //频繁1项集:4个
2.FP-Growth算法——大数据
1)默认数值
delta 以0.05为迭代递减单位。
不断减小支持度直至达到最小支持度或产生了满足数量要求的规则。
lowerBoundMinSupport 最小支持度下界为0.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越关联。
minMtric 度量的最小值0.9。
numRules 要发现的规则数为10。
outputItemSets 如果设置为真,会在结果中输出项集。
removeAllMissingCols 移除全部为缺省值的列。
upperBoundMinSupport 最小支持度上界。
从1.0开始迭代减小最小支持度。
2)结果解释
使用默认设置数值没有发现规则。
3)修改数值
修改lowerBoundMinSupport 最小支持度下界为0.2。
4)结果解释
仅发现两条规则。
I48与I39 有关联规则 conf:(0.69) <life:(1.2)> lev:(0.06) cosv:(1.38) 5)修改数值
修改lowerBoundMinSupport 最小支持度下界为0.1。
6)结果解释
发现8条规则
7)修改数值
修改lowerBoundMinSupport 最小支持度下界为0.25。
8)结果解释
发现如下
(二)IBM SPSS Modeler——大数据1.操作步骤
Apriori算法
读取值然后将测量全部修改为标记,角色全部改为任意。
最小置信度为50%
结果分析:
I48与I39 有关联规则 I41与I39 有关联规则I39与I38有关联规则 I48与I41 有关联规则I42与I39 有关联规则 I48与I32 有关联规则I48与I38 有关联规则
最小置信度为60%
I48与I39 有关联规则 I41与I39 有关联规则
I39与I38有关联规则 I48与I41 有关联规则
七.总结
数据挖掘可以通过不同的工具来进行分析。
通过使用WEKA和IBM SPSS Modeler发现两个软件适用的情况有所不同。
WEKA的关联规则Apriori分析仅能用来作示,不适合用来挖掘大型数据集。
但是FP—Growth算法可以有效地处理大数据,修改不同的数值得出不同的结果。
而且在显示的结果中看到置信度等数值结果。
IBM SPSS Modeler需要修改数据的TYPE,如读取值和输入输出,选择各种不同的模型,使输出的结果更加有效的解决实际问题。
但是在操作的过程中,我们发现IBM SPSS Modeler建模运行的时候很慢,需要等待很长时间才能完成,而且需要修改的数值是分为不同的选项卡,一旦选定生成无法更改,过程不可逆,所以在修改数值查看不同结果时十分不方便。
而WEKA可以反复查看不同的结果。