美文网首页
「关联分析」18关联分析之Aprior算法与FP-growth算

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

作者: 林拂晓 | 来源:发表于2020-02-08 18:56 被阅读0次

    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算

          本文链接:https://www.haomeiwen.com/subject/kpaixhtx.html