「关联分析」18关联分析之Aprior算法与FP-growth算法

1.关联分析

    关联分析是从大量数据中发现项集之间的相关联系。关联分析的一个典型例子是购物篮分析。该过程通过发现顾客放人其购物篮中的不同商品之间的联系,分析顾客的购买习惯。通过了解哪些商品频繁地被顾客同时购买,这种关联的发现可以帮助零售商制定营销策略。其他的应用还包括价目表设计、商品促销、商品的排放和基于购买模式的顾客划分。

2.相关概念

支持度:A、B同时发生的概率Support(A==>B)=P(A and B)

置信度:如果A发生,B发生的概率Confidence(A==>B)=P(B|A)

3.Aprior算法

(1)原理

    Aprior算法是一种找频繁项目集的基本算法。其基本原理是逐层搜索的迭代:频繁K项Lk集用于搜索频繁(K+1)项集Lk+1,如此下去,直到不能找到维度更高的频繁项集为止。

    这种方法依赖连接和剪枝这两步来实现。算法的第一次遍历仅仅计算每个项目的具体值的数量,以确定大型1项集。随后的遍历,第k次遍历,包括两个阶段。

    首先,使用在第(k-1)次遍历中找到的项集Lk-1和产生候选项集Ck。

    接着扫描数据库,计算Ck中候选的支持度。用Hash树可以有效地确定Ck中包含在一个给定的事务t中的候选。如果某项集满足最小支持度,则称它为频繁项集。

(2)步骤:

①设定最小支持度s和最小置信度c;

②Apriori算法使用候选项集。首先产生出候选的项的集合,即候选项集,若候选项集的支持度大于或等于最小支持度,则该候选项集为频繁项集;

③在Apriori算法的过程中,首先从数据库读入所有的事务,每个项都被看作候选1-项集,得出各项的支持度,再使用频繁1-项集集合来产生候选2-项集,因为先验原理保证所有非频繁的1-项集的超集都是非频繁的;

④再扫描数据库,得出候选2-项集集合,再找出频繁2-项集,并利用这些频繁2-项集集合来产生候选3-项集;

⑤重复扫描数据库,与最小支持度比较,产生更高层次的频繁项集,再从该集合里产生下一级候选项集,直到不再产生新的候选项集为止。

(3)程序实现:

    python自带库里没有Aprior模块,可以去网上自己下载,然后封装成自定义模块,放在~/python/Lib/目录下;也可以在程序里增加导入数据的模块,每次只要加入数据源即可。

4.FP-growth算法

(1)原理

    FP-growth算法是基于Apriori原理的,通过将数据集存储在FP(Frequent Pattern)树上发现频繁项集,但不能发现数据之间的关联规则。FP-growth算法只需要对数据库进行两次扫描,而Apriori算法在求每个潜在的频繁项集时都需要扫描一次数据集,所以说Apriori算法是高效的。

(2)步骤

①扫描第一遍数据库,找出频繁项;

②将记录按照频繁项集的支持度由大到小顺序重新排列;

③扫描第二遍数据库,产生FP-tree;

④得到频繁项集。

(3)实例

数据如下:

数据源

其FP-tree为:

FP-tree

你可能感兴趣的:(「关联分析」18关联分析之Aprior算法与FP-growth算法)