首页 > 代码库 > Apriori原理与实践

Apriori原理与实践

Apriori: 其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。经典的关联规则数据挖掘算法Apriori 算法广泛应用于各种领域,通过对数据的关联性进行了分析和挖掘,挖掘出的这些信息在决策制定过程中具有重要的参考价值。

Apriori算法广泛应用于商业中,应用于消费市场价格分析中,它能够很快的求出各种产品之间的价格关系和它们之间的影响。通过数据挖掘,市场商人可以瞄准目标客户,采用个人股票行市、最新信息、特殊的市场推广活动或其他一些特殊的信息手段,从而极大地减少广告预算和增加收入。

Apriori算法应用于网络安全领域,比如时候入侵检测技术中。早期中大型的电脑系统中都收集审计信息来建立跟踪档,这些审计跟踪的目的多是为了性能测试或计费,因此对攻击检测提供的有用信息比较少。它通过模式的学习和训练可以发现网络用户的异常行为模式。采用作用度的Apriori算法削弱了Apriori算法的挖掘结果规则,是网络入侵检测系统可以快速的发现用户的行为模式,能够快速的锁定攻击者,提高了基于关联规则的入侵检测系统的检测性。

Apriori算法应用于高校管理中。随着高校贫困生人数的不断增加,学校管理部门资助工作难度也越加增大。针对这一现象,提出一种基于数据挖掘算法的解决方法。将关联规则的Apriori算法应用到贫困助学体系中,并且针对经典Apriori挖掘算法存在的不足进行改进,先将事务数据库映射为一个布尔矩阵,用一种逐层递增的思想来动态的分配内存进行存储,再利用向量求"与"运算,寻找频繁项集。实验结果表明,改进后的Apriori算法在运行效率上有了很大的提升,挖掘出的规则也可以有效地辅助学校管理部门有针对性的开展贫困助学工作。

Apriori算法被广泛应用于移动通信领域。移动增值业务逐渐成为移动通信市场上最有活力、最具潜力、最受瞩目的业务。随着产业的复苏,越来越多的增值业务表现出强劲的发展势头,呈现出应用多元化、营销品牌化、管理集中化、合作纵深化的特点。针对这种趋势,在关联规则数据挖掘中广泛应用的Apriori算法被很多公司应用。依托某电信运营商正在建设的增值业务Web数据仓库平台,对来自移动增值业务方面的调查数据进行了相关的挖掘处理,从而获得了关于用户行为特征和需求的间接反映市场动态的有用信息,这些信息在指导运营商的业务运营和辅助业务提供商的决策制定等方面具有十分重要的参考价值。

 

基本概念:

对于A->B

支持度:P(A ∩ B),既有A又有B的概率

置信度:P(B|A),在A发生的事件中同时发生B的概率 p(AB)/P(A)     

k项集事件:如果事件A中包含k个元素

频繁k项集:若A包含k个元素同时满足最小支持度阈值的事件

强规则:同时满足最小支持度阈值和最小置信度阈值的规则

 

 算法原理:

 技术分享

 

例子:

Apriori算法的基本过程是:

1、扫描一遍数据库,得到一阶频繁项;

2、用一阶频繁项构造二阶候选项;

3、扫描数据库对二阶候选项进行计数,删除其中的非频繁项,得到二阶频繁项;

4、然后构造三阶候选项,以此类推,直到无法构造更高阶的候选项,或到达频繁项集的最大长度限制。

Apriori算法的示意流程如下图所示:

 技术分享

 

 

 

算法优缺点:

优点:简单、易理解、数据要求低

缺点:需要多次扫描数据库;生成大量备选项集;计数工作量太大

 

###########################R语言###########################

library(arules)  #加载arules程序包

data(Groceries)  #调用数据文件

frequentsets=eclat(Groceries,parameter=list(support=0.05,maxlen=10))  #求频繁项集#maxlen:频繁项集最大数(候选群组最大成员数)

inspect(frequentsets[1:10])    #察看求得的频繁项集

inspect(sort(frequentsets,by="support")[1:10])    #根据支持度对求得的频繁项集排序并察看(等价于inspect(sort(frequentsets)[1:10])

rules=apriori(Groceries,parameter=list(support=0.01,confidence=0.01))    #求关联规则

summary(rules)    #察看求得的关联规则之摘要

x=subset(rules,subset=rhs%in%"whole milk"&lift>=1.2)    #求所需要的关联规则子集

inspect(sort(x,by="support")[1:5])    #根据支持度对求得的关联规则子集排序并察看

 

###########################Weka###############################

 技术分享

 

Apriori原理与实践