Apriori算法 (先验算法)

来源:互联网 发布:nodejs 写入json文件 编辑:程序博客网 时间:2024/05/29 05:10
关联分析,即从一个数据集中发现项之间的隐藏关系。 Apriori算法要是基于频繁集的关联分析。

令项集I={i1,i2,...in}

且有一个数据集合D,它其中的每一条记录T,都是I的子集

那么关联规则都是形如A->B的表达式,A、B均为I的子集,且A与B的交集为空

这条关联规则的支持度:support = P(A并B)


这条关联规则的置信度:confidence = support(A并B)/suport(A)= P(B|A)


如果存在一条关联规则,它的支持度置信度都大于预先定义好的最小支持度与最小置信度,我们就称它为强关联规则
强关联规则就可以用来了解项之间的隐藏关系。所以关联分析的主要目的就是为了寻找强关联规则,而Apriori算法则主要用来帮助寻找强关联规则

所有支持度大于最小支持度的项集称为频繁项集,简称频集

如何得到数据集合D中的所有频繁集?
逐层搜索的方法:

1.自连接获取候选集。第一轮的候选集就是数据集D中的项,而其他轮次的候选集则是由前一轮次频繁集自连接得到(频繁集由候选集剪枝得到)。

2.对于候选集进行剪枝。如何剪枝呢?候选集的每一条记录T,如果它的支持度小于最小支持度,那么就会被剪掉;此外,如果一条记录T,它的子集有不是频繁集的,也会被剪掉。


算法的终止条件是,如果自连接得到的已经不再是频繁集,那么取最后一次得到的频繁集作为结果。

Apriori算法是一种挖掘关联规则的频繁项集算法

挖掘步骤:

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


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


简单的讲,
1、发现频繁项集逐层搜索 ,过程为(1)数据库扫描(2)计数支持度(3)比较最小支持度(4)产生频繁项集(5)连接、剪枝,产生候选项集   重复步骤(1)~(5)直到不能发现更大的频集

2、产生关联规则,过程为:根据前面提到的置信度的定义,关联规则的产生如下:

(1)对于每个频繁项集L,产生L的所有非空子集;

(2)对于L的每个非空子集S,如果

                P(L)/P(S)≧min_conf


则输出规则“SàL-S”

该算法的基本思想是:
1 首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。
2 然后由频集产生强关联规则,这些规则必须满足最小支持度最小置信度


可能产生大量的候选集以及可能需要重复扫描数据库,非常耗时,是Apriori算法的两大缺点

原创粉丝点击