关联规则基本算法.docx

上传人:b****3 文档编号:3888475 上传时间:2022-11-26 格式:DOCX 页数:11 大小:423.02KB
下载 相关 举报
关联规则基本算法.docx_第1页
第1页 / 共11页
关联规则基本算法.docx_第2页
第2页 / 共11页
关联规则基本算法.docx_第3页
第3页 / 共11页
关联规则基本算法.docx_第4页
第4页 / 共11页
关联规则基本算法.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

关联规则基本算法.docx

《关联规则基本算法.docx》由会员分享,可在线阅读,更多相关《关联规则基本算法.docx(11页珍藏版)》请在冰豆网上搜索。

关联规则基本算法.docx

关联规则基本算法

关联规则基本算法及其应用

1.关联规则挖掘

1.1关联规则提出背景

1993年,Agrawal等人在首先提出关联规则概念,同时给出了相应的挖掘算法AIS,但是性能较差。

1994年,他们建立了项目集格空间理论,并依据上述两个定理,提出了著名的Apriori算法,至今Apriori仍然作为关联规则挖掘的经典算法被广泛讨论,以后诸多的研究人员对关联规则的挖掘问题进行了大量的研究。

关联规则挖掘在数据挖掘中是一个重要的课题,最近几年已被业界所广泛研究。

关联规则最初提出的动机是针对购物篮分析(MarketBasketAnalysis)问题提出的。

假设分店经理想更多的了解顾客的购物习惯(如下图)。

特别是,想知道哪些商品顾客可能会在一次购物时同时购买?

为回答该问题,可以对商店的顾客事物零售数量进行购物篮分析。

该过程通过发现顾客放入“购物篮”中的不同商品之间的关联,分析顾客的购物习惯。

这种关联的发现可以帮助零售商了解哪些商品频繁的被顾客同时购买,从而帮助他们开发更好的营销策略。

1.2关联规则的基本概念

关联规则定义为:

假设

是项的集合,给定一个交易数据库

,其中每个事务(Transaction)t是I的非空子集,即

,每一个交易都与一个唯一的标识符TID(TransactionID)对应。

关联规则是形如

的蕴涵式,其中

分别称为关联规则的先导(antecedent或left-hand-side,LHS)和后继(consequent或right-hand-side,RHS)。

关联规则

在D中的支持度(support)是D中事务包含

的百分比,即概率

;置信度(confidence)是包含X的事务中同时包含Y的百分比,即条件概率

如果满足最小支持度阈值和最小置信度阈值,则称关联规则是有趣的。

这些阈值由用户或者专家设定。

用一个简单的例子说明。

上表是顾客购买记录的数据库D,包含6个事务。

项集I={网球拍,网球,运动鞋,羽毛球}。

考虑关联规则:

网球拍

网球,事务1,2,3,4,6包含网球拍,事务1,2,5,6同时包含网球拍和网球,支持度

,置信度

若给定最小支持度α=0.5,最小置信度β=0.8,关联规则网球拍

网球是有趣的,认为购买网球拍和购买网球之间存在关联。

1.3关联规则的分类 

按照不同标准,关联规则可以进行分类如下:

(1)基于规则中处理的变量的类别,关联规则可以分为布尔型和数值型。

  布尔型关联规则处理的值都是离散的、种类化的,它显示了这些变量之间的关系;而数值型关联规则可以和多维关联或多层关联规则结合起来,对数值型字段进行处理,将其进行动态的分割,或者直接对原始的数据进行处理,当然数值型关联规则中也可以包含种类变量。

例如:

性别=“女”=>职业=“秘书”,是布尔型关联规则;性别=“女”=>avg(收入)=2300,涉及的收入是数值类型,所以是一个数值型关联规则。

(2)基于规则中数据的抽象层次,可以分为单层关联规则和多层关联规则。

  在单层的关联规则中,所有的变量都没有考虑到现实的数据是具有多个不同的层次的;而在多层的关联规则中,对数据的多层性已经进行了充分的考虑。

例如:

IBM台式机=>Sony打印机,是一个细节数据上的单层关联规则;台式机=>Sony打印机,是一个较高层次和细节层次之间的多层关联规则。

(3)基于规则中涉及到的数据的维数,关联规则可以分为单维的和多维的。

在单维的关联规则中,我们只涉及到数据的一个维,如用户购买的物品;而在多维的关联规则中,要处理的数据将会涉及多个维。

换成另一句话,单维关联规则是处理单个属性中的一些关系;多维关联规则是处理各个属性之间的某些关系。

例如:

啤酒=>尿布,这条规则只涉及到用户的购买的物品;性别=“女”=>职业=“秘书”,这条规则就涉及到两个字段的信息,是两个维上的一条关联规则。

 

2.关联规则挖掘的相关算法

关联规则最为经典的算法是Apriori算法。

由于它本身有许多固有缺陷,后来的研究者又纷纷提出了各种改进算法或者不同的算法,频繁树(FP-Tree)算法应用也十分广泛。

本文将就这两种典型算法进行研究。

2.1Apriori算法

2.1.1预备知识

关联规则的挖掘分为两步:

(1)找出所有频繁项集;

(2)由频繁项集产生强关联规则。

而其总体性能由第一步决定。

在搜索频繁项集的时候,最简单、基本的算法就是Apriori算法。

它是R.Agrawal和R.Srikant于1994年提出的为布尔关联规则挖掘频繁项集的原创性算法。

算法的名字基于这样一个事实:

算法使用频繁项集性质的先验知识。

Apriori使用一种称作逐层搜索的迭代方法,k项集用于探索(k+1)项集。

首先,通过扫描数据库,累积每个项的计数,并收集满足最小支持度的项,找出频繁1项集的集合。

该集合记作L1。

然后,L1用于找频繁2项集的集合L2,L2用于找L3,如此下去,直到不能再找到频繁k项集。

找每个Lk需要一次数据库全扫描。

为提高频繁项集逐层产生的效率,一种称作Apriori性质的重要性质用于压缩搜索空间。

Apriori性质:

频繁项集的所有非空子集也必须是频繁的。

Apriori性质基于如下观察。

根据定义,如果项集I不满足最小支持度阈值min_sup,则I不是频繁的,即P(I)

如果项A添加到项集I,则结果项集(即I

A)不可能比I更频繁出现。

因此,I

A也不是频繁的,即P(I

A)

2.1.2Apriori算法的核心思想

文献1中对Apriori核心算法思想简要描述如下:

该算法中有两个关键步骤连接步和剪枝步。

   

(1)连接步:

为找出Lk(频繁k项集),通过Lk-1与自身连接,产生候选k项集,该候选项集记作Ck;其中Lk-1的元素是可连接的。

(2)剪枝步:

Ck是Lk的超集,即它的成员可以是也可以不是频繁的,但所有的频繁项集都包含在Ck中。

扫描数据库,确定Ck中每一个候选的计数,从而确定Lk(计数值不小于最小支持度计数的所有候选是频繁的,从而属于Lk)。

然而,Ck可能很大,这样所涉及的计算量就很大。

为压缩Ck,使用Apriori性质:

任何非频繁的(k-1)项集都不可能是频繁k项集的子集。

因此,如果一个候选k项集的(k-1)项集不在Lk中,则该候选项也不可能是频繁的,从而可以由Ck中删除。

这种子集测试可以使用所有频繁项集的散列树快速完成。

2.1.3Apriori算法描述

Apriori算法,使用逐层迭代找出频繁项集。

   输入:

事务数据库D;最小支持度阈值min_sup。

   输出:

D中的频繁项集L。

   1)L1=find_frequent_1_itemsets(D);

   2)for(k=2;Lk-1 ≠

;k++){

   3)Ck =aproiri_gen(Lk-1,min_sup);

   4)foreachtransactiontD{//扫描D用于计数

   5)Ct =subset(Ck,t);//得到t的子集,它们是候选

   6)foreachcandidatec

Ct

   7)c.count++;

   8)}

   9)Lk={c

Ck |c.count≥min_sup}

   10)}

11)returnL=

kLk;

Procedureapriori_gen(Lk-1:

frequent(k-1)-itemsets)

1)foreachitemsetsl1

Lk-1

2)foreachitemsetsl2

Lk-1

3)if(l1[1]=l2[1])^(l1[2]=l2[2])^…^(l1[k-2]=l2[k-2])^(l1[k-1]

4)c=l1

l2;//连接步:

产生候选

5)ifhas_infrequent_subset(c,Lk-1)then

6)deletec;//剪枝步:

删除非频繁的候选

7)elseaddctoCk;

8)}

9)returnCk;

Procedurehas_infrequent_subset(c:

candidatek-itemset;Lk-1:

frequent(k-1)-itemsets)//使用先验知识

1)foreach(k-1)-subsetsofc

2)Ifs

Lk-1then

3)returnTRUE;

4)returnFALSE;

2.1.4Apriori算法评价

基于频繁项集的Apriori算法采用了逐层搜索的迭代的方法,算法简单明了,没有复杂的理论推导,也易于实现。

但其有一些难以克服的缺点:

(1)对数据库的扫描次数过多。

在Apriori算法的描述中,我们知道,每生成一个候选项集,都要对数据库进行一次全面的搜索。

如果要生成最大长度为N的频繁项集,那么就要对数据库进行N次扫描。

当数据库中存放大量的事务数据时,在有限的内存容量下,系统I/O负载相当大,每次扫描数据库的时间就会很长,这样其效率就非常低。

(2)Apriori算法会产生大量的中间项集。

Apriori_gen函数是用Lk-1产生候选Ck,所产生Ck由

个k项集组成。

显然,k越大所产生的候选k项集的数量呈几何级数增加。

如频繁1项集的数量为104个,长度为2的候选项集的数量将达到5*107个,如果要生成一个更长规则,其需要产生的候选项集的数量将是难以想象的,如同天文数字。

(3)采用唯一支持度,没有将各个属性重要程度的不同考虑进去。

在现实生活中,一些事务的发生非常频繁,而有些事务则很稀疏,这样对挖掘来说就存在一个问题:

如果最小支持度阈值定得较高,虽然加快了速度,但是覆盖的数据较少,有意义的规则可能不被发现;如果最小支持度阈定得过低,那么大量的无实际意义的规则将充斥在整个挖掘过程中,大大降低了挖掘效率和规则的可用性。

这都将影响甚至误导决策的制定。

(4)算法的适应面窄。

该算法只考虑了单维布尔关联规则的挖掘,但在实际应用中,可能出现多维的、数量的、多层的关联规则。

这时,该算法就不再适用,需要改进,甚至需要重新设计算法。

2.1.5Apriori算法改进

鉴于Apriori算法本身存在一些缺陷,在实际应用中往往不能令人感到满意。

为了提高Apriori算法的性能,已经有许多变种对Apriori进一步改进和扩展。

可以通过以下几个方面对Apriori算法进行改进:

①通过减少扫描数据库的次数改进I/O的性能。

②改进产生频繁项集的计算性能。

③寻找有效的并行关联规则算法。

④引入抽样技术改进生成频繁项集的I/O和计算性能。

⑤扩展应用领域。

如:

定量关联规则、泛化关联规则及周期性的关联规则的研究。

目前许多专家学者通过大量的研究工作,提出了一些改进的算法以提高Apriori的效率,简要介绍如下:

(1)基于抽样(Sampling)技术

该方法的基本思想2是:

选取给定数据库D的随机样本S,然后,在S中搜索频繁项目集。

样本S的大小这样选取,使得可以在内存搜索S中的频繁项目集,它只需要扫描一次S中的事务。

由于该算法搜索S中而不是D中的频繁项目集,可能会丢失一些全局频繁项目集。

为了减少这种可能性,该算法使用比最小支持度低的支持度阈值来找出样本S中的频繁项目集(记作LS)。

然后,计算LS中每个项目集的支持度。

有一种机制可以用来确定是否所有的频繁项目集都包含在LS中。

如果LS包含了D中的所有频繁项目集,则只需要扫描一次D,否则,需要第二次扫描D,以找出在第一次扫描时遗漏的频繁项目集。

(2)基于动态的项目集计数

该算法3把数据库分成几块,对开始点进行标记,重复扫描数据库。

与Apriori算法不同,该算法能在任何开始点增加新的候选项目集,而不是正好在新数据库的开始,在每个开始点,该算法估计所有项目集的支持度,如果它的所有子集被估计为是频繁的,增加该项目集到候选项目集中。

如果该算法在第一次扫描期间增加了所有的频繁项目集和负边界到候选项目集中,它会在第二次扫描期间精确计算每个项目集的支持度,因此,该算法在第二次扫描后完成所有操作。

(3)基于划分的方法

PARTITION算法4首先将事务数据库分割成若干个互不重叠的子数据库,分别进行频繁项集挖掘:

最后将所有的局部频繁项集合并作为整个交易库的候选项集。

扫描一遍原始数据库计算候选集的支持度。

算法生成整个交易数据库的频繁项集只需要扫描数据库两次。

(4)基于hash技术

通过使用hash技术,DHP(Direct-HushandPrune)5可以在生成候选集时过滤掉更多的项集。

所以每一次生成的候选集都更加逼近频繁集。

这种技术对于2项候选集的剪枝尤其有效。

另一方面DHP技术还可以有效地削减每一次扫描数据库的规模。

(5)事务压缩(压缩进一步迭代扫描的事务数)

这是算法Apriori-Tid的基本思想:

减少用于未来扫描的事务集的大小。

如果在数据库遍历中将一些不包含k-频繁相集的事务删除,那么在下一次循环中就可以减少扫描的事务量,而不会影响候选集的支持度阙值。

2.2频繁树(FP-Tree)算法

在上面介绍的Apriori算法中,由于Apriori方法的固有的缺陷还是无法克服,即使进行了优化,其效率也仍然不能令人满意。

在文献6中HanJiawei等人提出了基于频繁模式树(FrequentPatternTree,简称为FP-Tree)的发现频繁项目集的算法FP-growth。

这种方法在经过第一遍扫描之后,把数据库中的频繁项目集压缩成一棵频繁模式树,同时依然保留其中的管理信息。

随后再将FP-Tree分化成一些条件库,每个库和一个长度为L的频繁项目集相关,然后再对这些条件库分别进行挖掘。

当原始数据库很大时,也可以结合划分的方法使得一个FP-Tree可以放入主存中。

实验证明,FP-growth对不同长度的规则都有很好的适应性,同时在效率上较Apriori算法有巨大的提高。

这个算法只进行两次数据库扫描,它不使用候选项目集,直接压缩数据库成一个频繁模式树,最后通过这棵树生成关联规则。

3.关联规则的应用

3.1关联规则挖掘技术在国内外的应用现状

就目前而言,关联规则挖掘技术已经被广泛应用在西方金融行业企业中,它可以成功预测银行客户需求。

一旦获得了这些信息,银行就可以改善自身营销。

各银行在自己的ATM机上就捆绑了顾客可能感兴趣的本行产品信息,供使用本行ATM机的用户了解。

同时,一些知名的电子商务站点也从强大的关联规则挖掘中的受益。

这些电子购物网站使用关联规则对规则进行挖掘,然后设置用户有意要一起购买的捆绑包。

也有一些购物网站使用它们设置相应的交叉销售,也就是购买某种商品的顾客会看到相关的另外一种商品的广告。

但是目前在我国,“数据海量,信息缺乏”是商业银行在数据大集中之后普遍所面对的尴尬。

目前金融业实施的大多数数据库只能实现数据的录入、查询、统计等较低层次的功能,却无法发现数据中存在的各种有用的信息,譬如对这些数据进行分析,发现其数据模式及特征,然后可能发现某个客户、消费群体或组织的金融和商业兴趣,并可观察金融市场的变化趋势。

可以说,关联规则的挖掘技术在我国的研究与应用并不是很广泛深入。

3.2关联规则在大型超市中应用的步骤

接下来本文对关联规则在超级市场中的应用进行讨论,提出了关联规则在大型超市中应用的步骤,得出了基于关联规则的商品销售模式。

超级市场的数据不仅十分庞大、复杂,而且包含着许多有用信息。

随着数据挖掘技术的发展以及各种数据挖掘方法的应用,从大型超市数据库中可以发现一些潜在的、有用的、有价值的信息来,从而应用于超级市场的经营。

通过对所积累的销售数据的分析,可以得出各种商品的销售信息。

从而更合理地制定各种商品的定货情况,对各种商品的库存进行合理地控制。

另外根据各种商品销售的相关情况,可分析商品的销售关联性,从而可以进行商品的货篮分析和组合管理,以更加有利于商品销售。

这里我们以世纪联华超市2010年1月25日和26日的所有销售记录为例进行分析。

该数据来源于世纪联华超市的收银台。

3.2.1数据描述及预处理

首先,通过ODBC连接access数据库中的原始表格,原始数据如表1所示。

表1:

原始数据库

然后,通过编写Select语句,获得CusCode,itemname有序编号和物品名称,分别如表2和表3所示。

cus[670]

1

2

3

4

5

6

……

code

201001250001

201001250002

201001250003

201001250004

201001250005

201001250006

……

表2:

存放顾客CusCode的数组

item[70]

1

2

3

4

5

6

……

name

鱼类

熟食类

蔬菜

水果

盆菜

家畜类

……

表3:

存放物品itemname的数组

最后,将数据库中的客户购买信息转化为0-1表(其中1代表购买,0代表没有购买),结果如表4。

a[670][70]

1

2

3

4

5

6

……

1

1

1

1

0

0

0

……

2

0

0

0

1

0

0

……

3

0

0

0

0

1

0

……

4

0

0

0

0

0

1

……

5

0

0

0

0

0

1

……

6

0

1

0

0

0

0

……

……

……

……

……

……

……

……

……

表4:

0-1表

3.2.2计算结果及分析

根据超市各种商品销售量、顾客购买情况等信息,不同的超市可以根据各自的实际情况设定不同的最小支持度和最小置信度。

这里我们设定最小支持度为0.2,最小置信度为0.7。

我们采用JAVA语言编程,计算机运行结果如图1。

图1计算机运行结果

得出频繁项集有{厨房配件}、{蜜饯糖果零食类}、{蔬菜}、{水果}、{办公设备、厨房配件}、{贝壳类、蔬菜}、{贝壳类、水果}、{成品、厨房配件}、{急救用品、蜜饯糖果零食类}、{啤酒、水果}。

关联规则有:

办公设备=>厨房配件、贝壳类=>蔬菜、贝壳类=>水果、成品=>厨房配件、急救用品=>蜜饯糖果零食类、啤酒=>水果。

由此可以看出,当顾客购买办公设备或者成品时,很有可能会同时购买厨房配件;当顾客购买贝壳类时,很有可能会同时购买蔬菜、水果;当顾客购买啤酒时,很有可能会同时购买水果。

从总体上看,贝壳类、蔬菜、水果及啤酒很有可能被同时购买。

以上分析结果对于世纪联华超市的物品摆放、顾客的购买模式研究、商品的进货管理等方面都有一定指导意义。

世纪联华超市可以在商品摆放上将办公设备和厨房配件就近摆放,将贝壳类、蔬菜、水果和啤酒就近摆放,而办公设备和厨房配件则应该与贝壳类、蔬菜、水果和啤酒相对分开。

超市在进货及库存管理上也应该注意以上几种商品数量的协调,从而更好地满足顾客。

 

参考文献

1JiaweiHanMichelineKamber,DataMiningConceptsandTechniques,SecondEdition[M]:

151-155

21.ToivonenH.Samplinglargedatabasesforassociationrules[C].In:

Proceedingsofthe22thInternationalConferenceonVeryLargeDatabases,Bombay,India,1996:

1-12

32.BrinS,MotwaniR,UllmanJDetal.Dynamicitemsetcountingandimplicationrulesformarketbasketanalysis.In:

Proceedingsof1997ACM-SIGMODInternationalConferenceonManagementofData.Tucson,AZ,1997:

255-264

43.SavasereA,OmiecinskiE,NavatheS.Anefficientalgorithmforminingassociationrules[C].In:

Proceedingsofthe21stInternationalConferenceonVLDB.Zurich,1995:

432-444

54.ParkJS,ChenMS,YuPS.AnEffectiveHash-BasedAlgorithmforMiningAssociationRules.In:

ProceedingsofACMSIGMODInternationalConferenceManagementofData,SanJose,CA,1995:

175-186

65.HanJ,JianP,YiwenY.Miningfrequentpatternswithoutcandidategeneration.In:

Proceedingsofthe2000ACMSIGMODInternationalConferenceManagementofData.Dallas,2000:

1-12

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1