视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
关联规则基本算法
2025-09-27 23:16:20 责编:小OO
文档
关联规则基本算法及其应用

1.关联规则挖掘

1.1 关联规则提出背景

1993年,Agrawal等人在首先提出关联规则概念,同时给出了相应的挖掘算法AIS,但是性能较差。1994年,他们建立了项目集格空间理论,并依据上述两个定理,提出了著名的Apriori算法,至今Apriori仍然作为关联规则挖掘的经典算法被广泛讨论,以后诸多的研究人员对关联规则的挖掘问题进行了大量的研究。关联规则挖掘在数据挖掘中是一个重要的课题,最近几年已被业界所广泛研究。

关联规则最初提出的动机是针对购物篮分析(Market Basket Analysis)问题提出的。假设分店经理想更多的了解顾客的购物习惯(如下图)。特别是,想知道哪些商品顾客可能会在一次购物时同时购买?为回答该问题,可以对商店的顾客事物零售数量进行购物篮分析。该过程通过发现顾客放入“购物篮”中的不同商品之间的关联,分析顾客的购物习惯。这种关联的发现可以帮助零售商了解哪些商品频繁的被顾客同时购买,从而帮助他们开发更好的营销策略。

1.2 关联规则的基本概念

关联规则定义为:假设是项的集合,给定一个交易数据库, 其中每个事务(Transaction)t是I的非空子集,即,每一个交易都与一个唯一的标识符TID(Transaction ID)对应。关联规则是形如的蕴涵式, 其中且, 和分别称为关联规则的先导(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.1 Apriori算法

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)2.1.2 Apriori算法的核心思想

文献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.3 Apriori算法描述

 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) for each transaction t D{ //扫描 D 用于计数

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

    6) for each candidate c Ct

    7) c.count++;

    8) }

    9) Lk={c Ck | c.count ≥ min_sup}

    10) }

11) return L = kLk;

  Procedure apriori_gen (Lk-1:frequent(k-1)-itemsets)

   1)  for each itemsets l1Lk-1

   2)    for each itemsets l2Lk-1

   3)       if (l1[1]=l2[1])^ (l1[2]=l2[2])^…^(l1[k-2]=l2[k-2])^ (l1[k-1]   4)           c=l1l2;  // 连接步:产生候选

   5)           if has_infrequent_subset(c,Lk-1) then

   6)                delete c;  // 剪枝步:删除非频繁的候选

   7)           else add c to Ck;

   8)         }

   9)  return Ck;

  Procedure has_infrequent_subset (c:candidate k-itemset;Lk-1:frequent(k-1)-itemsets)  //使用先验知识

1) for each(k-1)-subset s of c

2)   If sLk-1 then 

3)       return TRUE;

4) return FALSE;

2.1.4 Apriori算法评价

基于频繁项集的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.5 Apriori算法改进

鉴于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-Hush and Prune)5可以在生成候选集时过滤掉更多的项集。所以每一次生成的候选集都更加逼近频繁集。这种技术对于2项候选集的剪枝尤其有效。另一方面DHP技术还可以有效地削减每一次扫描数据库的规模。

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

这是算法Apriori-Tid的基本思想:减少用于未来扫描的事务集的大小。如果在数据库遍历中将一些不包含k-频繁相集的事务删除,那么在下一次循环中就可以减少扫描的事务量,而不会影响候选集的支持度阙值。

2.2 频繁树(FP-Tree)算法

在上面介绍的Apriori算法中,由于Apriori方法的固有的缺陷还是无法克服,即使进行了优化,其效率也仍然不能令人满意。在文献6中Han Jiawei等人提出了基于频繁模式树(Frequent Pattern Tree,简称为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]123456……
code201001250001201001250002201001250003201001250004201001250005201001250006……
表2:存放顾客CusCode的数组

item[70]123456……
name鱼类熟食类蔬菜水果盆菜家畜类……
表3:存放物品itemname的数组

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

a[670][70]123456……
1111000……
2000100……
3000010……
4000001……
5000001……
6010000……
…………………………………………
表4:0-1表

3.2.2计算结果及分析

根据超市各种商品销售量、顾客购买情况等信息,不同的超市可以根据各自的实际情况设定不同的最小支持度和最小置信度。这里我们设定最小支持度为0.2,最小置信度为0.7。我们采用JAVA语言编程,计算机运行结果如图1。

图1 计算机运行结果

得出频繁项集有{厨房配件}、{蜜饯糖果零食类}、{蔬菜}、{水果}、{办公设备、厨房配件}、{贝壳类、蔬菜}、{贝壳类、水果}、{成品、厨房配件}、{急救用品、蜜饯糖果零食类}、{啤酒、水果}。关联规则有: 办公设备=>厨房配件、贝壳类=>蔬菜、贝壳类=>水果、成品=>厨房配件、急救用品=>蜜饯糖果零食类、啤酒=>水果。由此可以看出,当顾客购买办公设备或者成品时,很有可能会同时购买厨房配件;当顾客购买贝壳类时,很有可能会同时购买蔬菜、水果;当顾客购买啤酒时,很有可能会同时购买水果。从总体上看,贝壳类、蔬菜、水果及啤酒很有可能被同时购买。

以上分析结果对于世纪联华超市的物品摆放、顾客的购买模式研究、商品的进货管理等方面都有一定指导意义。世纪联华超市可以在商品摆放上将办公设备和厨房配件就近摆放,将贝壳类、蔬菜、水果和啤酒就近摆放,而办公设备和厨房配件则应该与贝壳类、蔬菜、水果和啤酒相对分开。超市在进货及库存管理上也应该注意以上几种商品数量的协调,从而更好地满足顾客。

参考文献

1Jiawei Han Micheline Kamber, Data Mining Concepts and Techniques, Second Edition[M]:151-155

21. Toivonen H. Sampling large databases for association rules[C].In: Proceedings of the 22th International Conference on Very Large Databases,Bombay,India,1996:1-12

32. Brin S, Motwani R, Ullman J D et al. Dynamic itemset counting and implication rules for market basket analysis. In: Proceedings of 1997 ACM-SIGMOD International Conference on Management of Data.Tucson,AZ,1997:255-2

43. Savasere A, Omiecinski E,Navathe S. An efficient algorithm for mining association rules[C]. In: Proceedings of the 21st International Conference on VLDB.Zurich,1995:432-444

54. Park J S, Chen M S, Yu P S. An Effective Hash-Based Algorithm for Mining Association Rules. In: Proceedings of ACM SIGMOD International Conference Management of Data, San Jose,CA,1995:175-186

65. Han J, Jian P, Yiwen Y. Mining frequent patterns without candidate generation. In: Proceedings of the 2000 ACM SIGMOD International Conference Management of Data.Dallas,2000:1-12下载本文

显示全文
专题