[数据挖掘课程笔记]关联规则挖掘 - Apriori算法

时间:2023-03-10 01:08:12
[数据挖掘课程笔记]关联规则挖掘 - Apriori算法

两种度量:

支持度(support)  support(A→B) = count(AUB)/N (N是数据库中记录的条数)

自信度(confidence)confidence(A→B) = count(AUB)/count(A)

关联规则挖掘的基本两个步骤:

1.找出所有的频繁项集

2.由频繁项集产生强关联规则

由于整个数据库十分庞大,所以对第一步来说,若使用穷举法,搜索空间将是2d,d是项的个数。所以优化算法主要需要优化第一步。而频繁项集里的项的数目远小于数据库数据的数目,所以,在第二步中,我们可以采用穷举法。

Apriori Algorithm

频繁:support(A,B)>=min_sp

几个原理:

1.如果X在数据集D中是闭的,那么不存在X的超集Y的支持度与X的支持度相同。

2.X是D中的极大频繁项集(闭的且频繁),那么不存在X的超集Y是频繁的。

3.如果X不是一个频繁项集,那么它的超项集Y也一定不是频繁的。

4.频繁项集的子集必是频繁的。

算法思想:通过频繁n项集生成候选n+1项集,然后再扫描数据库,选出频繁n+1项集,直到不能产生新的频繁项集。

[数据挖掘课程笔记]关联规则挖掘 - Apriori算法

在L2到C3的过程中,可以组成{A,B,C},{B,C,E},{A,C,E},由于{A,B,C}和{A,C,E}都包含不频繁子项集,所以可以直接删除,在扫描数据库过程中,只需要扫描{B,C,E}

DIC: Reduce Number of Scans

基本思想:把数据库分成若干块,每一块都有一个开始点(start point),在每一个开始点处都可以加入新的候选项集。

[数据挖掘课程笔记]关联规则挖掘 - Apriori算法

如上图所示,初始时,加入所有的一项集,然后扫描B1,得到一项集在B1中的支持度,选出频繁一项集组成的候选二项集,在B2的start point位置加入,然后扫描B2,给候选项集里的项集计数,然后再生成新的频繁项集,在B1的start point上加入。重复这个过程,直到没有新的频繁项集生成。

[数据挖掘课程笔记]关联规则挖掘 - Apriori算法