Apriori(挖掘关联规则的频繁项集算法)

Apriori算法使用频繁项集先验知识,使用一种称作逐层搜索的迭代方法k项集用于探索(k+1)项集。首先,通过扫描事务(交易)记录,找出所有的频繁1项集,该集合记做L1,然后利用L1找频繁2项集的集合L2L2L3,如此下去,直到不能再找到任何频繁k项集。最后再在所有的频繁集中找出强规则,即产生用户感兴趣的关联规则。

 

Apriori算法的特点:只能处理分类变量,无法处理数值型变量;

 

Apriori算法的两大缺点:

  • 由频繁k-1项集进行自连接生成的候选频繁k项集数量巨大(可能产生大量的候选集)

  • 在验证候选频繁k项集的时候需要对整个数据库进行扫描,可能需要重复扫描数据库,非常耗时。

 几种优化方法:(详解请看数据挖掘概念与技术P166

1. 基于划分的方法。

2. 基于hash的方法。

3. 基于采样的方法。

4. 减少交易的个数。

 

Tip:为什么要压缩CK呢?因为实际情况下事务记录往往是保存在外存储上,比如数据库或者其他格式的文件上,在每次计算候选计数时都需要将候选与所有事务进行比对,众所周知,访问外存的效率往往都比较低,因此Apriori加入了所谓的剪枝步,事先对候选集进行过滤,以减少访问外存的次数。)

 

Apriori寻找频繁项集的过程是一个不断迭代的过程,每次都是两个步骤,产生候选集Ck(可能成为频繁项集的项目组合);基于候选集Ck计算支持度,确定Lk

Apriori的寻找策略就是从包含少量的项目开始逐渐向多个项目的项目集搜索。Apriori算法采用连接步剪枝步两种方式来找出所有的频繁项集。

 

数据分析步骤(例子请看数据挖掘概念与技术P160)

wKiom1Q9CHHDtmcaAACam9B5KLg859.jpg

我们看到,数据库存储的数据格式,会员100购买了 1 3 4三种商品,那么对应的集合形式如右边的图所示。那么基于候选集C1,我们得到频繁项集L1,如下图所示,在此表格中{4}的支持度为1,而我们设定的支持度为2。支持度大于或者等于指定的支持度的最小阈值就成为L1了,这里{4}没有成为L1的一员。因此,我们认定包含4的其他项集都不可能是频繁项集,后续就不再对其进行判断了。

wKiom1Q9CKWw9NK6AAB2ZGMW6lo411.jpg

此时我们看到L1是符合最低支持度的标准的,那么下一次迭代我们依据L1产生C24就不再被考虑了),此时的候选集如右图所示C2(依据L1*L1的组合方式)确立。C2的每个集合得到的支持度对应在我们原始数据组合的计数,如下图左所示。

wKioL1Q9CPqgW2yUAAClwpg7SZo254.jpg

此时,第二次迭代发现了{1 2} {1 5}的支持度只有1,低于阈值,故而舍弃,那么在随后的迭代中,如果出现{1 2} {1 5}的组合形式将不被考虑。

 

wKioL1Q9CRyA-lrFAAB4TWjMEoI372.jpg

如上图,由L2得到候选集C3,那么这次迭代中的{1 2 3} { 1 3 5}哪去了?如刚才所言,{1 2} {1 5}的组合形式将不被考虑,因为这两个项集不可能成为频繁项集L3,此时L4不能构成候选集L4,即停止。

如果用一句化解释上述的过程,就是不断通过Lk的自身连接,形成候选集,然后在进行剪枝,除掉无用的部分。

 

根据频繁项集产生简单关联规则Apriori的关联规则是在频繁项集基础上产生的,进而这可以保证这些规则的支持度达到指定的水平,具有普遍性和令人信服的水平。

 

支持度与置信度

1.依据支持度找出所有频繁项集(频度)

2.依据置信度产生关联规则(强度)

基本概念

对于A->B

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

②置信度:

P(B|A),在A发生的事件中同时发生B的概率 p(AB)/P(A)     例如购物篮分析:牛奶  面包

例子:[支持度:3%,置信度:40%]

支持度3%:意味着3%顾客同时购买牛奶和面包

置信度40%:意味着购买牛奶的顾客40%也购买面包

③如果事件A中包含k个元素,那么称这个事件Ak项集事件A满足最小支持度阈值的事件称为频繁k项集。

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

 

Apriori算法的应用

Apriori关联分析中核心的算法。Apriori(先验的,推测的)算法应用广泛,可用于消费市场价格分析,猜测顾客的消费习惯;网络安全领域中的***检测技术;可用在用于高校管理中,根据挖掘规则可以有效地辅助学校管理部门有针对性的开展贫困助学工作;也可用在移动通信领域中,指导运营商的业务运营和辅助业务提供商的决策制定。

关联规则挖掘首先是用来发现购物篮数据事务中各项之间的有趣联系,关联规则的属性可以用以下三个参数描述: 一是支持度(support)二是置信度(confidence,三是频繁项集( 支持度不小于最小支持度的事务集)。支持度反映关联规则在数据库中的重要性,置信度衡量关联规则的可信程度(具体的含义可以通过下面的例子来理解)

关联规则的商业应用十分广泛,其中一个典型例子是购物篮分析。关联规则研究有助于发现交易数据库中不同商品(项)之间的联系,找出顾客购买行为模式,如购买了某一商品对购买其他商品的影响。分析结果可以应用于商品货架布局、货存安排以及根据购买模式对用户进行分类。