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为: