Apriori['eɪprɪ'ɔ:rɪ]Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。而且算法已经被广泛的应用到商业、网络安全等各个领域。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。经典的关联规则数据挖掘算法Apriori算法广泛应用于各种领域,通过对数据的关联性进行了分析和挖掘,挖掘出的这些信息在决策制定过程中具有重要的参考价值。Apriori算法广泛应用于商业中,应用于消费市场价格分析中,它能够很快的求出各种产品之间的价格关系和它们之间的影响。通过数据挖掘,市场商人可以瞄准目标客户,采用个人股票行市、最新信息、特殊的市场推广活动或其他一些特殊的信息手段,从而极大地减少广告预算和增加收入。百货商场、超市和一些老字型大小的零售店也在进行数据挖掘,以便猜测这些年来顾客的消费习惯。Apriori算法应用于网络安全领域,比如网络入侵检测技术中。早期中大型的电脑系统中都收集审计信息来建立跟踪档,这些审计跟踪的目的多是为了性能测试或计费,因此对攻击检测提供的有用信息比较少。它通过模式的学习和训练可以发现网络用户的异常行为模式。采用作用度的Apriori算法削弱了Apriori算法的挖掘结果规则,是网络入侵检测系统可以快速的发现用户的行为模式,能够快速的锁定攻击者,提高了基于关联规则的入侵检测系统的检测性。Apriori算法应用于高校管理中。随着高校贫困生人数的不断增加,学校管理部门资助工作难度也越加增大。针对这一现象,提出一种基于数据挖掘算法的解决方法。将关联规则的Apriori算法应用到贫困助学体系中,并且针对经典Apriori挖掘算法存在的不足进行改进,先将事务数据库映射为一个布尔矩阵,用一种逐层递增的思想来动态的分配内存进行存储,再利用向量求与运算,寻找频繁项集。实验结果表明,改进后的Apriori算法在运行效率上有了很大的提升,挖掘出的规则也可以有效地辅助学校管理部门有针对性的开展贫困助学工作。Apriori算法被广泛应用于移动通信领域。移动增值业务逐渐成为移动通信市场上最有活力、最具潜力、最受瞩目的业务。随着产业的复苏,越来越多的增值业务表现出强劲的发展势头,呈现出应用多元化、营销品牌化、管理集中化、合作纵深化的特点。针对这种趋势,在关联规则数据挖掘中广泛应用的Apriori算法被很多公司应用。依托某电信运营商正在建设的增值业务Web数据仓库平台,对来自移动增值业务方面的调查数据进行了相关的挖掘处理,从而获得了关于用户行为特征和需求的间接反映市场动态的有用信息,这些信息在指导运营商的业务运营和辅助业务提供商的决策制定等方面具有十分重要的参考价值。一、关联规则1.关联规则:关联规则是形如X→Y的蕴含表达式,其中X和Y是不相交的项集,即X∩Y=∅。关联规则的强度可以用它的支持度(support)和置信度(confidence)来度量。支持度确定规则可以用于给定数据集的频繁程度,而置信度确定Y在包含X的事务中出现的频繁程度。支持度(s)和置信度(c)这两种度量的形式定义如下:s(X→Y)=σ(X∪Y)/Nc(X→Y)=σ(X∪Y)/σ(X)其中,σ(X∪Y)是(X∪Y)的支持度计数,N为事务总数,σ(X)是X的支持度计数。2.关联规则发现:给定事务的集合T,关联规则发现是指找出支持度大于等于minsup(最小支持度)并且置信度大于等于minconf(最小置信度)的所有规则,minsup和minconf是对应的支持度和置信度阈值。3.关联规则的挖掘是一个两步的过程:(1)频繁项集产生:其目标是发现满足最小支持度阈值的所有项集(至少和预定义的最小支持计数一样),这些项集称作频繁项集。(2)规则的产生:其目标是从上一步发现的频繁项集中提取所有高置信度的规则,这些规则称作强规则。(必须满足最小支持度和最小置信度)一般来说,要选择一个数据集合中的频繁数据集,则需要自定义评估标准。最常用的评估标准是用自定义的支持度,或者是自定义支持度和置信度的一个组合。二、Apriori算法介绍Apriori算法的实质使用候选项集找频繁项集。Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。算法的名字基于这样的事实:算法使用频繁项集性质的先验知识,正如我们将看到的。Apriori使用一种称作逐层搜索的迭代方法,k-项集用于探索(k+1)-项集。首先,找出频繁1-项集的集合。该集合记作L1。L1用于找频繁2-项集的集合L2,而L2用于找L3,如此下去,直到不能找到频繁k-项集。找每个Lk需要一次数据库扫描。此种方法的计算量非常巨大,显然是不可取的。因此,Apriori算法提出了逐层搜索的迭代方法:1.自连接获取候选集。第一轮的候选集就是数据集D中的项,而其他轮次的候选集则是由前一轮次频繁集自连接得到(频繁集由候选集剪枝得到)。2.对候选集进行剪枝。剪枝规则1:如果某条候选集的支持度小于最小支持度,那么就会被剪掉;剪枝规则2:如果某条候选集的子集中存在非频繁集,该候选集也会被剪掉。举例:假设集合{A}不是频繁项集,即A出现的次数小于min_support,则它的任何超集如{A,B}出现的次数必定小于min_support,因此其超集必定也不是频繁项集。值得注意的是,为了提高频繁项集逐层产生的效率,进一步减少计算量,一种称作Apriori性质的重要性质被用于压缩搜索空间,即:频繁项集的所有非空子集都必须也是频繁的(对应剪枝规则2)。2.优缺点(1)优点:简单、易理解、数据要求低(2)缺点:I/O负载大,产生过多的候选项目集3.Apriori性质Apriori性质:频繁项集的所有非空子集都必须也是频繁的。Apriori性质基于如下观察:根据定义,如果项集I不满足最小支持度阈值s,则I不是频繁的,即P(I)s。如果项A添加到I,则结果项集(即I∪A)不可能比I更频繁出现。因此,I∪A也不是频繁的,即P(I∪A)s。该性质属于一种特殊的分类,称作反单调,意指如果一个集合不能通过测试,则它的所有超集也都不能通过相同的测试。称它为反单调的,因为在通不过测试的意义下,该性质是单调的。算法使用L3L3产生候选4-项集的集合C4。尽管连接产生结果{{I1,I2,I3,I5}},这个项集被剪去,因为它的子集{I1,I3,I5}不是频繁的。这样,C4=∅,因此算法终止,找出了所有的频繁项集。12个参数的含义:1.car如果设为真,则会挖掘类关联规则而不是全局关联规则。2.classindex类属性索引。如果设置为-1,最后的属性被当做类属性。3.delta以此数值为迭代递减单位。不断减小支持度直至达到最小支持度或产生了满足数量要求的规则。4.lowerBoundMinSupport最小支持度下界。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越关联。6.minMtric度量的最小值。7.numRules要发现的规则数。8.outputItemSets如果设置为真,会在结果中输出项集。9.removeAllMissingCols移除全部为缺省值的列。10.significanceLevel重要程度。重要性测试(仅用于置信度)。11.upperBoundMinSupport最小支持度上界。从这个值开始迭代减小最小支持度。12.verbose如果设置为真,则算法会以冗余模式运行。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%所选的关联规则挖掘方案:Apriori算法%算法的参数设置:-I-N10-T0-C0.9-D0.05-U1.0-M0.5-S-1.0-c-1;%各参数依次表示:%I-输出项集,若设为false则该值缺省;%N10-规则数为10;%T0–度量单位选为置信度,(T1-提升度,T2杠杆率,T3确信度);%C0.9–度量的最小值为0.9;%D0.05-递减迭代值为0.05;%U1.0-最小支持度上界为1.0;%M0.5-最小支持度下届设为0.5;%S-1.0-重要程度为-1.0;%c-1-类索引为-1输出项集设为真%(由于car,removeAllMissingCols,verbose都保持为默认值False,因此在结果的参数设置为缺省,若设为True,则会在结果的参数设置信息中分别表示为A,R,V)