关联规则基本算法

合集下载

数据挖掘中的关联规则算法使用方法教程

数据挖掘中的关联规则算法使用方法教程

数据挖掘中的关联规则算法使用方法教程数据挖掘是一门通过从大量数据中发现隐藏模式、关系和信息的技术。

关联规则算法是数据挖掘中的重要工具,用于发现数据集中的关联关系和规律。

本教程将介绍关联规则算法的基本概念、使用方法和常见问题。

一、关联规则算法概述关联规则算法主要用于发现数据集中的关联关系和规律,它可以帮助我们了解事物之间的相互关系,并通过这些关系进行预测和推断。

常见的应用场景包括购物篮分析、市场篮子分析、推荐系统等。

关联规则算法通过分析频繁项集和支持度,找到频繁项集之间的关联规则。

频繁项集是指在数据集中频繁出现的组合项集,支持度是指某个项集在数据集中出现的频率。

通过计算支持度和置信度,可以找到具有较高置信度的关联规则。

常用的关联规则算法包括Apriori算法、FP-Growth算法和Eclat算法。

接下来将逐一介绍这些算法的使用方法。

二、Apriori算法1. Apriori算法基本原理Apriori算法是关联规则算法中最常用的一种算法。

它通过迭代的方式逐步生成频繁项集,然后根据频繁项集生成关联规则。

Apriori算法的基本原理如下:- 生成频繁1项集;- 循环生成候选k项集,并计算支持度;- 剪枝:删除支持度低于阈值的项集,得到k频繁项集;- 生成关联规则,并计算置信度。

2. Apriori算法使用步骤使用Apriori算法进行关联规则挖掘的步骤如下:- 输入数据集:准备一份包含项集的数据集;- 设置支持度和置信度的阈值;- 生成频繁1项集;- 根据频繁1项集生成2频繁项集;- 通过剪枝操作得到k频繁项集;- 根据频繁项集生成关联规则,并计算置信度;- 输出频繁项集和关联规则。

三、FP-Growth算法1. FP-Growth算法基本原理FP-Growth算法是一种高效的关联规则挖掘算法,它通过构建频繁模式树来快速发现频繁项集和关联规则。

FP-Growth算法的基本原理如下:- 构建FP树:将数据集构造成FP树,每个节点表示一个项,每个路径表示一条事务;- 构建条件模式基:从FP树中抽取频繁1项集,并构建条件模式基;- 通过条件模式基递归构建FP树;- 根据FP树生成关联规则。

关联规则算法jaccard相似度

关联规则算法jaccard相似度

关联规则算法jaccard相似度关联规则算法Jaccard相似度关联规则算法是数据挖掘领域中一种常用的方法,用于发现数据集中不同属性之间的关联关系。

其中,Jaccard相似度是一种常用的关联规则算法之一。

本文将介绍Jaccard相似度的基本原理和应用场景,以及如何计算Jaccard相似度。

一、Jaccard相似度的基本原理Jaccard相似度是一种用于衡量两个集合相似程度的指标,它是通过计算两个集合的交集与并集的比值来确定的。

具体而言,Jaccard 相似度的计算公式如下所示:J(A,B) = |A ∩ B| / |A ∪ B|其中,A和B分别代表两个集合,|A|表示集合A的元素个数,|B|表示集合B的元素个数,|A ∩ B|表示A和B的交集的元素个数,|A ∪ B|表示A和B的并集的元素个数。

二、Jaccard相似度的应用场景Jaccard相似度广泛应用于数据挖掘、信息检索、社交网络分析等领域。

以下是几个常见的应用场景:1. 电商推荐系统:通过计算用户的购买记录与其他用户的购买记录之间的Jaccard相似度,可以找到与该用户购买行为相似的其他用户,从而向该用户推荐相关商品。

2. 新闻推荐系统:通过计算用户阅读的新闻文章与其他用户阅读的新闻文章之间的Jaccard相似度,可以找到与该用户阅读兴趣相似的其他用户,从而向该用户推荐相关新闻。

3. 社交网络分析:通过计算用户在社交网络中的好友列表与其他用户的好友列表之间的Jaccard相似度,可以找到与该用户社交关系相似的其他用户,从而进行社交网络分析。

三、Jaccard相似度的计算方法计算Jaccard相似度的方法较为简单,可以按照以下步骤进行:1. 将两个集合A和B分别转化为二进制向量表示,其中向量的每一维对应集合中的一个元素。

2. 分别计算两个向量的交集和并集,即分别统计两个向量中对应维度上同时为1的个数和至少一个为1的个数。

3. 根据Jaccard相似度的计算公式,将交集的个数除以并集的个数,得到Jaccard相似度的值。

数据挖掘(第2版)-课件 第5章关联规则

数据挖掘(第2版)-课件 第5章关联规则
• 如:规则{尿布}—>{啤酒}表示尿布和啤酒的销售之间存在关联—— “啤酒与尿布”的故事。
• 关联分析用以发现事物间存在的关联性,除了购物篮分析外,有广泛应用, 如:辅助决策——挖掘商场销售数据、发现商品间的联系;医疗诊断—— 用于发现某些症状与某种疾病之间的关联;网页挖掘——用于发现文档集 合中某些词之间的关联,发现主题词演化模式、学科发展趋势;电子商 务——进行产品的关联推荐等。
频繁项集
支持度不小于最小支持度阈值的项集
强关联规则
根据用户预先定义的支持度和置信度阈值,支持度不小于最小支持度阈值 并且置信度不小于最小置信度阈值的规则
5.2.1 基本概念(4)
关联分析挖掘的关联规则分类 根据处理值分类
布尔关联规则 量化关联规则
根据涉及维度分类
单维关联规则 多维关联规则
支持度 (support)
事务数据库D中包含项A和B的事务占所有 事务的百分比
可表示为:support(A,B ) P(A B ) (A B )/ N
5.2.1 基本概念(3)
置信度
事务数据库D中同时包含项A和B的事务占包含项A的事务的百分比
条件概率表示为: confindence(A,B ) P(B | A) (A B )/ (A)
根据数据抽象层次分类
单层关联规则 多层关联规则
【例5-1】 设有事务集合如表5-1,计算规则{bread,milk tea} 的支持度、置信度。
交易号TID
顾客购买的商品
ห้องสมุดไป่ตู้
交易号TID
T1
bread, cream, milk, tea
T6
T2
bread, cream, milk
T7

数据挖掘方法——关联规则(自己整理)

数据挖掘方法——关联规则(自己整理)

小结:Apriori算法可以分为频繁项集的生成和关联规则的生成两 大步骤;FP-Growth算法可以分成FP-Tree的生成,频繁项集的生成和 关联规则的生成3大步骤。
Copyright © 2009, MANAGEMENT SCIENCE ASSOCIATES, INC.
9
五、关联规则挖掘的相关算法
Copyright © 2009, MANAGEMENT SCIENCE ASSOCIATES, INC.
Copyright © 2009, MANAGEMENT SCIENCE ASSOCIATES, INC.
7
五、关联规则挖掘的相关算法
1.Apriori算法:使用候选项集找频繁项集 Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。其核心是 基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关 联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。 该算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和 预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小 支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集 合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定 义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被 留下来。为了生成所有频集,使用了递推的方法。 Apriori算法可以产生相对较小的候选项目集,扫描数据库的次数由最大频繁 项目集的项目数决定。因此,该算法适合于最大频繁项目集相对较小的数据集中 的关联规则挖掘问题。 Apriori算法的两大缺点:1.可能产生大量的候选集;2.可能需要重复扫描数据库。
关联分析的目的:找出数据库中隐藏的关联网。一般用Support(支 持度)和Confidence(可信度)两个阀值来度量关联规则的相关性,引入 lift(提高度或兴趣度)、相关性等参数,使得所挖掘的规则更符合需求。

关联规则(Apriori算法)

关联规则(Apriori算法)

关联规则(Apriori算法)关联分析直观理解 关联分析中最有名的例⼦是“尿布与啤酒”。

据报道,美国中西部的⼀家连锁店发现,男⼈们会在周四购买尿布和啤酒。

这样商店实际上可以将尿布与啤酒放在⼀块,并确保在周四全价销售从⽽获利。

当然,这家商店并没有这么做。

频繁项集是指那些经常出现在⼀起的物品集合,⽐如{葡萄酒,尿布, ⾖奶}就是频繁项集的⼀个例⼦⽀持度(support) ⼀个项集的⽀持度(support)被定义为数据集中包含该项集的记录所占的⽐例 {⾖奶}的⽀持度为4/5。

{⾖奶,尿布}的⽀持度为3/5可信度(confidence ) 可信度或置信度(confidence)是针对⼀条诸如{尿布} ➞ {葡萄酒}的关联规则来定义的。

这条规则的可信度被定义为“⽀持度({尿布, 葡萄酒})/⽀持度({尿布})”。

由于{尿布, 葡萄酒}的⽀持度为3/5,尿布的⽀持度为4/5,所以“尿布➞葡萄酒”的可信度为3/4=0.75。

这意味着对于包含“尿布”的所有记录,我们的规则对其中75%的记录都适⽤。

Apriori算法的⽬标是找到最⼤的K项频繁集⽀持度和可信度是⽤来量化关联分析是否成功的⽅法。

假设想找到⽀持度⼤于0.8的所有项集,应该如何去做?⼀个办法是⽣成⼀个物品所有可能组合的清单,然后对每⼀种组合统计它出现的频繁程度,但当物品成千上万时,⾮常慢,这时就能⽤Apriori算法关联分析中最有名的例⼦是“尿布与啤酒”。

据报道,美国中西部的⼀家连锁店发现,男⼈们会在周四购买尿布和啤酒。

这样商店实际上可以将尿布与啤酒放在⼀块,并确保在周四全价销售从⽽获利。

当然,这家商店并没有这么做。

⼀般我们使⽤三个指标来度量⼀个关联规则,这三个指标分别是:⽀持度、置信度和提升度。

Support(⽀持度):表⽰同时包含A和B的事务占所有事务的⽐例。

如果⽤P(A)表⽰使⽤A事务的⽐例,那么Support=P(A&B)Confidence(可信度):表⽰使⽤包含A的事务中同时包含B事务的⽐例,即同时包含A和B的事务占包含A事务的⽐例。

时序关联规则算法公式

时序关联规则算法公式

时序关联规则算法公式
时序关联规则算法(Sequential Pattern Mining)是一种用于
发现时间序列数据中的模式和规律的算法。

其中比较常见的算法包
括PrefixSpan、GSP(Generalized Sequential Pattern)、SPAM (Sequential PAttern Mining using a Bitmap representation)、CloSpan等。

这些算法的公式会有所不同,我会以PrefixSpan算法
为例来解释其公式。

PrefixSpan算法的公式如下:
PrefixSpan(T, minsup, Σ)。

其中:
T表示输入的时间序列数据集;
minsup表示最小支持度阈值,用于过滤掉支持度低于该阈值的
模式;
Σ表示时间序列数据集中的符号集合。

具体算法流程如下:
1. 找出时间序列数据集T中的所有频繁1项集;
2. 根据频繁1项集生成所有频繁2项集;
3. 以此类推,直到无法生成更多的频繁k项集为止;
4. 对于每个频繁k项集,计算其支持度,若支持度大于等于minsup,则将其作为频繁模式输出。

以上是PrefixSpan算法的简单公式和流程,其他时序关联规则算法的公式和流程也会有所不同,但都是基于类似的原理进行模式挖掘和规律发现。

希望这些信息能够帮助你理解时序关联规则算法的公式和原理。

关联规则基本算法

关联规则基本算法

X,Y I 且 X Y , X 和 Y 分别称为关联规则的先导(antecedent 或 left-hand-side, LHS)
和后继(consequent 或 right-hand-side, RHS)。 关联规则 X Y 在 D 中的支持度(support)是 D 中事务包含 X Y 的百分比,即概率 P ( X Y ) ;置信度(confidence)是包含 X 的事务中同 时包含 Y 的百分比,即条件概率 P (Y | X ) 。如果满足最小支持度阈值和最小置信度阈值, 则称关联规则是有趣的。这些阈值由用户或者专家设定。
频繁 1 项集的数量为 104 个,长度为 2 的候选项集的数量将达到 5*107 个,如果要生成一个 更长规则,其需要产生的候选项集的数量将是难以想象的,如同天文数字。 (3)采用唯一支持度,没有将各个属性重要程度的不同考虑进去。在现实生活中,一 些事务的发生非常频繁,而有些事务则很稀疏,这样对挖掘来说就存在一个问题:如果最小 支持度阈值定得较高, 虽然加快了速度, 但是覆盖的数据较少, 有意义的规则可能不被发现; 如果最小支持度阈定得过低, 那么大量的无实际意义的规则将充斥在整个挖掘过程中, 大大 降低了挖掘效率和规则的可用性。这都将影响甚至误导决策的制定。 (4)算法的适应面窄。该算法只考虑了单维布尔关联规则的挖掘,但在实际应用中, 可能出现多维的、数量的、多层的关联规则。这时,该算法就不再适用,需要改进,甚至需 要重新设计算法。 2.1.5 Apriori 算法改进 鉴于 Apriori 算法本身存在一些缺陷,在实际应用中往往不能令人感到满意。为了提高 Apriori 算法的性能,已经有许多变种对 Apriori 进一步改进和扩展。可以通过以下几个方面 对 Apriori 算法进行改进:①通过减少扫描数据库的次数改进 I/O 的性能。②改进产生频繁 项集的计算性能。③寻找有效的并行关联规则算法。④引入抽样技术改进生成频繁项集的 I/O 和计算性能。⑤扩展应用领域。如:定量关联规则、泛化关联规则及周期性的关联规则 的研究。 目前许多专家学者通过大量的研究工作, 提出了一些改进的算法以提高 Apriori 的效率, 简要介绍如下: (1)基于抽样(Sampling)技术

第6章 数据挖掘技术2(关联规则挖掘)

第6章 数据挖掘技术2(关联规则挖掘)

求L3。比较候选支持度计数与最小支持度计数得: 项集 I1,I2,I3 I1,I2,I5 支持度计数 2 2


所以 L3=C3 求C4= L3 ∞ L3={I1,I2,I3,I5} 子集{I2,I3,I5} L3,故剪去; 故C4=,算法终止。 结果为L=L1 U L2 U L3
24
19:40
定义5:强关联规则。同时满足最小支持度(min_sup) 和最小可信度(min_conf)的规则称之为强关联规 则 定义6:如果项集满足最小支持度,则它称之为频繁项 集(Frequent Itemset)。
19:40 9
2. 关联规则挖掘过程

关联规则的挖掘一般分为两个过程: (1)找出所有的频繁项集:找出支持度大于 最小支持度的项集,即频繁项集。
由L1 产生C2
项集 支持度 计数 {I1} {I2} {I3} {I4} {I5} 6 7 6 2 2
19:40
19
C2
C2
比较候 支持度 选支持 度计数 4 与最小 4 支持度 1 计数 2
4 2 2 0 1 0
L2
项集 支持度
{I1,I4} {I1,I5} {I2,I3} {I2,I4} {I2,I5} {I3,I4} {I3,I5} {I4,I5}
Apriori是挖掘关联规则的一个重要方法。 算法分为两个子问题: 找到所有支持度大于最小支持度的项集 (Itemset),这些项集称为频繁集 (Frequent Itemset)。 使用第1步找到的频繁集产生规则。
19:40
14



Apriori 使用一种称作逐层搜索的迭代方法, “K-项集”用于探索“K+1-项集”。 1.首先,找出频繁“1-项集”的集合。该集合 记作L1。L1用于找频繁“2-项集”的集合L2, 而L2用于找L3, 如此下去,直到不能找到“K-项集”。找每个 LK需要一次数据库扫描。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关联规则基本算法及其应用1.关联规则挖掘1.1 关联规则提出背景1993年,Agrawal 等人在首先提出关联规则概念,同时给出了相应的挖掘算法AIS ,但是性能较差。

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

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

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

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

特别是,想知道哪些商品顾客可能会在一次购物时同时购买?为回答该问题,可以对商店的顾客事物零售数量进行购物篮分析。

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

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

1.2 关联规则的基本概念关联规则定义为:假设12{,,...}m I i i i =是项的集合,给定一个交易数据库12D={t ,t ,...,t }m , 其中每个事务(Transaction)t 是I 的非空子集,即t I ∈,每一个交易都与一个唯一的标识符TID(Transaction ID)对应。

关联规则是形如X Y ⇒的蕴涵式, 其中X,Y I ∈且X Y φ⋂=,X 和Y 分别称为关联规则的先导(antecedent 或left-hand-side, LHS)和后继(consequent 或right-hand-side, RHS)。

关联规则X Y ⇒在D 中的支持度(support)是D 中事务包含X Y ⋃的百分比,即概率()P X Y ⋃;置信度(confidence)是包含X 的事务中同时包含Y 的百分比,即条件概率(|)P Y X 。

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

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

用一个简单的例子说明。

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

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

考虑关联规则:网球拍网球,事务1,2,3,4,6包含网球拍,事务1,2,5,6同时包含网球拍和网球,支持度3support0.56==,置信度3confident0.65==。

若给定最小支持度α = 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项集。

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

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

Apriori性质:频繁项集的所有非空子集也必须是频繁的。

Apriori性质基于如下观察。

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

如果项A添加到项集I,则结果项集(即I A)不可能比I 更频繁出现。

因此,I A也不是频繁的,即P(I A)<min_sup。

2.1.2 Apriori算法的核心思想文献1中对Apriori核心算法思想简要描述如下:该算法中有两个关键步骤连接步和剪枝步。

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

(2) 剪枝步:C k是L k的超集,即它的成员可以是也可以不是频繁的,但所有的频繁项集都包含在C k中。

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

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

为压缩C k,使用Apriori性质:任何非频繁的(k-1)项集都不可能是频繁k项集的子集。

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

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

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

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

输出:D 中的频繁项集L。

1)L1 = find_frequent_1_itemsets(D);2)for (k = 2;L k-1≠;k++){3)Ck = aproiri_gen(L k-1,min_sup);4)for each transaction t D{ //扫描D 用于计数5)C t = subset(C k,t);//得到t 的子集,它们是候选6)for each candidate c C t7)c.count++;8)}9)L k={c C k | c.count ≥ min_sup}10)}11)return L = k L k;Procedure apriori_gen (L k-1:frequent(k-1)-itemsets)1) for each itemsets l1L k-12) for each itemsets l2L k-13) if (l1[1]=l2[1])^ (l1[2]=l2[2])^…^(l1[k-2]=l2[k-2])^ (l1[k-1]<l2[k-1]) then{4) c=l1l2; // 连接步:产生候选5) if has_infrequent_subset(c,L k-1) then6) delete c; // 剪枝步:删除非频繁的候选7) else add c to C k;8) }9) return C k;Procedure has_infrequent_subset (c:candidate k-itemset;L k-1:frequent(k-1)-itemsets) //使用先验知识1)for each(k-1)-subset s of c2)If s L k-1 then3)return TRUE;4)return FALSE;2.1.4 Apriori算法评价基于频繁项集的Apriori算法采用了逐层搜索的迭代的方法,算法简单明了,没有复杂的理论推导,也易于实现。

但其有一些难以克服的缺点:(1)对数据库的扫描次数过多。

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

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

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

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

Apriori_gen函数是用L k-1产生候选C k,所产生C k由个k项集组成。

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

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

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

在现实生活中,一些事务的发生非常频繁,而有些事务则很稀疏,这样对挖掘来说就存在一个问题:如果最小支持度阈值定得较高,虽然加快了速度,但是覆盖的数据较少,有意义的规则可能不被发现;如果最小支持度阈定得过低,那么大量的无实际意义的规则将充斥在整个挖掘过程中,大大降低了挖掘效率和规则的可用性。

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

(4)算法的适应面窄。

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

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

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

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

可以通过以下几个方面对Apriori算法进行改进:①通过减少扫描数据库的次数改进I/O的性能。

相关文档
最新文档