首页 理论教育Apriori算法在医药领域的应用

Apriori算法在医药领域的应用

【摘要】:从频繁项目集中生成所有可信关联规则,置信度大于minconf的规则为可信关联规则。C3:{柴胡,黄芩,清半夏}:2F3:{柴胡,黄芩,清半夏}:23.Apriori算法流程4.候选项集生成算法候选项集生成算法根据长度为k-1的频繁项目集Fk-1,经过两个步骤生成长度为k的候选项集Ck。

1.频繁项目集生成

关联规则挖掘算法有很多,比如Apriori、Apriori改进算法、Close算法等。同样的关联规则定义(同样的事务数据集、最小支持度、最小置信度)下,它们输出的结果是一样的。我们仅学习关联规则挖掘的经典算法:Apriori。

Apriori算法步骤:(1)生成所有频繁项目集,支持度高于minsup的项集为频繁项目集(Frequent Itemset)。(2)从频繁项目集中生成所有可信关联规则,置信度大于minconf的规则为可信关联规则(Confident Association Rule)。

生成所有频繁项目集:一个项集的项目个数为该项集的基数,称一个基数为k的项集为k-项集。如果项目集X是频繁项目集,则它的所有非空子集都是频繁项目集(向下封闭属性);如果项目集X是非频繁项目集,则它的所有非空子集都是非频繁项目集。

生成所有频繁项目集算法思路。基本思想:逐级搜索(Level-wise Search),先找出长度为1的频繁项目集,接着找出长度为2的频繁项目集,以此类推。

F1⇒C2⇒F2⇒C3⇒F3⇒C4⇒F4⇒......

生成的每一个k项目集是由k-1频繁项目集生成的。

2.查找频繁项目集

(1)scan T。

C1:{菊花}:2,{柴胡}:3,{黄芩}:3,{茯苓}:1,{清半夏}:3

F1:{菊花}:2,{柴胡}:3,{黄芩}:3,{清半夏}:3

C2:{菊花,柴胡},{菊花,黄芩},{菊花,清半夏},{柴胡,黄芩},{柴胡,清半夏},{黄芩,清半夏}

(2)scan T。

C2:{菊花,柴胡}:1,{菊花,黄芩}:2,{菊花,清半夏}:1,{柴胡,黄芩}:2,{柴胡,清半夏}:3,{黄芩,清半夏}:2

F2:{菊花,黄芩}:2,{柴胡,黄芩}:2,{柴胡,清半夏}:3,{黄芩,清半夏}:2

C3:{柴胡,黄芩,清半夏}

(3)scan T。

C3:{柴胡,黄芩,清半夏}:2

F3:{柴胡,黄芩,清半夏}:2

3.Apriori算法流程

4.候选项集生成算法(www.chuimin.cn)

候选项集生成算法根据长度为k-1的频繁项目集Fk-1,经过两个步骤生成长度为k的候选项集Ck

合并:根据生成所有可能的长度为k的Ck。合并方法:两个k-1频繁项目集的前k-2个项目都是相同的,只有最后一个项目不同,就将生成的k-项集加入Ck中。

剪枝:合并后的Ck并不是最终的候选项集,需要判断每个项集的所有k-1子集是否在Fk-1中,不在则删除(向下封闭原理)。

5.关联规则生成

一旦由数据库D中的事务找出频繁项集,由它们产生强关联规则是直截了当的(强关联规则满足最小支持度和最小置信度)。对于置信度可以用下式,其中条件概率用项集支持度计数表示。

其中,support_count(A∪B)是包含A∪B的事务数,support_count(A)是包含项集A的事务数。

关联规则产生如下:

对于每个频繁项集I,产生I的所有非空子集;

对于I的每个非空子集s,如果

则输出规则“S=>(I-s)”,其中min_conf是最小置信度阈值

频繁项目集不等于关联规则,根据频繁项目集生成关联规则。每一个频繁项目集生成关联规则都需要用到其非空子集。设A是频繁项目集X的非空子集,则有:

设B=X-A

A→B是一条关联规则,如果满足:

confidence(A→B)≥minconf,

support(A→B)=support(A∪B)=support(X)

confidence(A→B)=support(A∪B)/support(A)

因此,给定一个频繁项目集X,如果有一条关联规则的后件为B,那么所有以B的任一非空子集为后件的候选规则都是关联规则。

强关联规则的产生:第一个子问题的求解,需要多次扫描数据库D,这意味着关联规则挖掘算法的效率将主要取决于数据库扫描、I/O操作和频繁项目集的计算。因此,如何迅速、高效地找出所有的频繁项目集是关联规则挖掘的中心问题。第二个子问题的求解比较容易,R.Agrawal等人已提出了有效的解决办法,具体过程如下:对每个频繁项目集I,产生所有的非空真子集,对I的任意非空真子集m,若support(I)/Support(m)≥minconfidence,则产生强关联规则m->(1-m)。

生成关联规则总结。为了找出规则A→B,必须保存sup(A∪B)和sup(A)。支持度的计算可以根据上一步频繁项目集中的结果得到,而不必再次扫描数据集T。关联规则生成步骤比频繁项目集生成步骤所花费的时间要少。注意:如果(f-a)→a是一条关联规则,那么所有(f-asub)→asub必然是关联规则。如果规则“Y→X”是强规则,那么“Y→X1”一定是强规则(其中,X1是X的一个子集)。