概要
FP的全称是Frequent Pattern,在算法中使用了一种称为频繁模式树(Frequent Pattern Tree)的数据结构。FP-tree是一种特殊的前缀树,由频繁项头表和项前缀树构成。FP-Growth算法基于以上的结构加快整个挖掘过程。
- Aprior
Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策。比如在常见的超市购物数据集,或者电商的网购数据集中,如果我们找到了频繁出现的数据集,那么对于超市,我们可以优化产品的位置摆放,对于电商,我们可以优化商品所在的仓库位置,达到节约成本,增加经济效益的目的。
- 和Apriori比较
- 通过构造FP树和项头表来存频繁项集
- 整个过程只遍历数据2次
关键概念
-
置信度
条件概率,置信度(A->B) 在A出现的条件下B发生的概率
-
支持度
某个组合出现的概率(出现的次数/总的次数)
-
提升度
提升度(A->B) = 置信度(A->B)/支持度(B) = P(B|A) /p(B) = P(AB)/(P(A)*P(B))
A的出现对B发生的概率有多大的提升 (B发生的所有条件里 A发生导致B发生 所占的比例)
提升度 (A→B)>1:代表有提升;
提升度 (A→B)=1:代表有没有提升,也没有下降;
提升度 (A→B)<1:代表有下降。
算法步骤
- 整理数据,获得事务数据集
- 计算每项的支持度,形成项头表
- 每个事务内按照 支持度对每项进行筛选、排序,更新项头表的链接和计算
- 构建fp树
5. 挖掘每项的频繁项集
6. 关联规则的评估
每个事务可以表示为 每个锚段一个月发生的缺陷种类
频繁项集计算步骤
- fp树的叶子点开始递归,找出该叶子节点项的条件模式基(包含该叶子节点的子树)
- 子树也要根据支持度进行筛选项
- 子树项的笛卡尔积组合,构成频繁项
频繁2项集为{A:2,F:2}, {C:2,F:2}, {E:2,F:2}, {B:2,F:2}。递归合并二项集,得到频繁三项集为{A:2,C:2,F:2},频繁四项…
祖先节点计数设置为叶子节点的计数,即变成{A:2, C:2,E:1 G:1,D:1, D:1}此时E节点和G节点由于在条件模式基里面的支持度低于阈值,被我们删除,最终在去除低支持度节点并不包括叶子节点后D的条件模式基为{A:2, C:2}
参考博客
https://www.cnblogs.com/zhengxingpeng/p/6679280.html
https://www.cnblogs.com/pinard/p/6293298.html