关联规则数据挖掘Word格式.docx
《关联规则数据挖掘Word格式.docx》由会员分享,可在线阅读,更多相关《关联规则数据挖掘Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
1、引言
数据库与互联网技术在日益发展壮大,人们每天可以获得的信息量呈指数级增长。
如何从这浩如瀚海的数据中找出我们需要的数据显得尤为重要。
数据挖掘又为资料探勘、数据采矿。
它是数据库知识发现中的一个步骤。
数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程。
数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学习、专家系统(依靠过去的经验法则)和模式识别等诸多方法来实现上述目标。
数据挖掘大致分为以下几类:
分类(Classification)、估计(Estimation)、预测(Prediction)、相关性分组或关联规则(Affinitygroupingorassociationrules)、聚类(Clustering)、复杂数据类型挖掘(Text,Web,图形图像,视频,音频等)。
2、案例
"
尿布与啤酒"
的故事。
在一家超市里,有一个有趣的现象:
尿布和啤酒赫然摆在一起出售。
但是这个奇怪的举措却使尿布和啤酒的销量双双增加了。
这不是一个笑话,而是发生在美国沃尔玛连锁店超市的真实案例,并一直为商家所津津乐道。
沃尔玛拥有世界上最大的数据仓库系统,为了能够准确了解顾客在其门店的购买习惯,沃尔玛对其顾客的购物行为进行购物篮分析,想知道顾客经常一起购买的商品有哪些。
沃尔玛数据仓库里集中了其各门店的详细原始交易数据。
在这些原始交易数据的基础上,沃尔玛利用数据挖掘方法对这些数据进行分析和挖掘。
一个意外的发现是:
跟尿布一起购买最多的商品竟是啤酒!
经过大量实际调查和分析,揭示了一个隐藏在"
背后的美国人的一种行为模式:
在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,而他们中有30%~40%的人同时也为自己买一些啤酒。
产生这一现象的原因是:
美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。
按常规思维,尿布与啤酒风马牛不相及,若不是借助数据挖掘技术对大量交易数据进行挖掘分析,沃尔玛是不可能发现数据内在这一有价值的规律的。
在这个案例中使用了数据挖掘中的关联规则分析。
关联分析是发现交易数据库中不同项之间的联系。
毫无疑问,关联分析中发现的规则为超市带来了更多的收益。
如果我们能在生活中对关联分析进行应用,一定可以解决更多的问题。
数据关联是数据库中存在的一类重要的可被发现的知识。
若两个或多个变量的取值之间存在某种规律性,就称为关联。
关联可分为简单关联、时序关联、因果关联。
关联分析的目的是找出数据库中隐藏的关联网。
有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有可信度。
关联规则挖掘发现大量数据中项集之间有趣的关联或相关联系。
Agrawal等于1993年首先提出了挖掘顾客交易数据库中项集间的关联规则问题,以后诸多的研究人员对关联规则的挖掘问题进行了大量的研究。
他们的工作包括对原有的算法进行优化,如引入随机采样、并行的思想等,以提高算法挖掘规则的效率;
对关联规则的应用进行推广。
关联规则挖掘在数据挖掘中是一个重要的课题,最近几年已被业界所广泛研究。
3、关联规则
关联分析是一种简单、实用的分析技术,就是发现存在于大量数据集中的关联性或相关性,从而描述了一个事物中某些属性同时出现的规律和模式。
关联分析是从大量数据中发现项集之间有趣的关联和相关联系。
关联分析的一个典型例子是购物篮分析。
该过程通过发现顾客放人其购物篮中的不同商品之间的联系,分析顾客的购买习惯。
通过了解哪些商品频繁地被顾客同时购买,这种关联的发现可以帮助零售商制定营销策略。
其他的应用还包括价目表设计、商品促销、商品的排放和基于购买模式的顾客划分。
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。
支持度大于最小支持度的数据项集称作大项集(LargeItemset)反之则称为弱项集(SmallIterns)。
同时满足最小支持度、最小置信度的关联规则称为强关联规则。
1.基于规则中处理的变量的类别,关联规则可以分为布尔型和数值型。
布尔型关联规则处理的值都是离散的、种类化的,它显示了这些变量之间的关系;
而数值型关联规则可以和多维关联或多层关联规则结合起来,对数值型字段进行处理,将其进行动态的分割,或者直接对原始的数据进行处理,当然数值型关联规则中也可以包含种类变量。
2.基于规则中数据的抽象层次,可以分为单层关联规则和多层关联规则。
在单层的关联规则中,所有的变量都没有考虑到现实的数据是具有多个不同的层次的;
而在多层的关联规则中,对数据的多层性已经进行了充分的考虑。
3.基于规则中涉及到的数据的维数,关联规则可以分为单维的和多维的。
单维关联规则是处理单个属性中的一些关系;
多维关联规则是处理各个属性之间的某些关系。
(4)算法
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算法的步骤步骤如下
1 设定最小支持度s和最小置信度c。
2 Apriori算法使用候选项集。
首先产生出候选的项的集合,即候选项集若候选项集的支持度大于或等于最小支持度则该候选项集为频繁项集。
3 在Apriori算法的过程中,首先从数据库读入所有的事务,每个项都被看作候选1-项集得出各项的支持度再使用频繁1-项集集合来产生候选2-项集集合。
因为先验原理保证所有非频繁的1-项集的超集都是非频繁的。
4 再扫描数据库。
得出候选2-项集集合。
再找出频繁2-项集。
并利用这些频繁2-项集集合来产生候选3-项集。
5 重复扫描数据库,与最小支持度比较;
产生更高层次的频繁项集再从该集合里产生下一级候选项集直到不再产生新的候选项集为止。
2.FP-树频集算法
1)定义:
针对Apriori算法的固有缺陷,J.Han等提出了不产生候选挖掘频繁项集的方法:
FP-树频集算法。
采用分而治之的策略,在经过第一遍扫描之后,把数据库中的频集压缩进一棵频繁模式树(FP-tree),同时依然保留其中的关联信息,随后再将FP-tree分化成一些条件库,每个库和一个长度为1的频集相关,然后再对这些条件库分别进行挖掘。
当原始数据量很大的时候,也可以结合划分的方法,使得一个FP-tree可以放入主存中。
实验表明,FP-growth对不同长度的规则都有很好的适应性,同时在效率上较之Apriori算法有巨大的提高。
2)FP-树频集算法的步骤步骤如下
1 遍历一次数据库,到处频繁项集(1项集)的集合和支持度计数(频率),并且以降序排序,结果集或表记为L。
2 构造FP-tree。
3 根据第二步得到的FP-tree,为1项频繁项集中的每一项构造条件FP-tree。
4 得到频繁模式(频繁项集)。
4、数据
(1)小型数据
这是我们得到的最原始的数据,是国外某超市的购物篮数据,共有约一千条。
文件格式为txt格式,每一行代表一个顾客购物篮中的商品。
(2)大型数据
第二个大型数据也是国外某公司的超市购物篮数据,共有88162条数据。
数据为txt格式。
第一行是对每列数据的一个编号,从第二列开始是每个顾客超市购物篮中的东西。
每个数字代表一个商品。
因为数据过大,所以整个数据是数据集的形式。
5.应用软件
(1)WEKA
1.WEKA简介
WEKA的全名是怀卡托智能分析环境(WaikatoEnvironmentforKnowledgeAnalysis),是一款免费的,非商业化的,基于JAVA环境下开源的机器学习以及数据挖掘软件。
它和它的源代码可在其官方网站下载。
WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。
2.WEKA存储数据的格式是ARFF(Attribute-Relation)文件,这是一种ASCII文本文件。
二维表格存储在如下的ARFF文件中。
识别ARFF文件的重要依据是分行,因此不能在这种文件里随意的断行。
空行(或全是空格的行)将被忽略。
WEKA的关联规则分析功能仅能用来作示范,不适合用来挖掘大型数据集。
3.数据处理
由于我们的源数据为TXT格式,无法应用于WEKA软件,所以我们需要将它转换为ARFF格式。
我们查阅有关资料以及有关网站,找到了一个用Python转换格式的方法。
TXT转为ARFF格式
deftxt2arff(,value):
withopen('
./generatedarff.arff'
'
w'
)asfp:
fp.write('
'
@relationExceptionRelation
@attributeIDstring
@attributeThrownnumeric
@attributeSetLogicFlagnumeric
@attributeReturnnumeric
@attributeLOCnumeric
@attributeNumMethodnumeric
@attributeEmptyBlocknumeric
@attributeRecoverFlagnumeric
@attributeOtherOperationnumeric
@attributeclass