FP-Growth
本文详细介绍FP-Growth构造FP-tree和找频繁项集(笔者研究方向确认为关联规则,作为初学者,若本笔记有错误,还望大家留言指出)
已知强关联规则如下表所示
TID | Items |
---|---|
0 | a,b |
1 | c,d |
2 | a,c,d,e |
3 | a,d,e |
4 | a,b,c |
5 | a,b,c,d |
假设置信度为70%,支持度为50%
则最小支持度为:50%*6(6为集数个数)=3(表示Items中的元素满足≥3才为频繁项集)
FP-growth构造FP-tree时需要进行两次处理:
首先进行分类,求出F-list
我们先看表格,遍历一次数据集,统计每个元素出现的次数
a:5(出现5次)
b:3
c:4
d:4
e:2
然后把出现次数较小的滤掉(最小支持度3,将出现次数小于3的元素滤除)
再进行排序,将频率高的放于首位
F-list | (a:5),(c:4),(d:4),(b:3) |
则新的关联规则为(去除e)并根据F-list排序
TID | Items |
---|---|
0 | a,b |
1 | c,d |
2 | a,c,d |
3 | a,d |
4 | a,c,b |
5 | a,c,d,b |
开始构造FP-tree,对0项集{a,b}进行处理,元素首次出现,需要将头结点赋予它。
再对1项集{c,d}处理,c为新元素出现,创建新的分支。并将头结点赋予新节点。
再对2项集{a,c,d}处理,a已经出现,则a的次数加一,再对a进行分支。
再对3项集{a,d}处理
再对4项集{a,c,b}处理
再对5项集{a,c,d,b}处理
最后,从b、d、c、a元素的顺序找相同元素出现在哪?连接同一元素
连接b
连接d
连接c:
连接a:a只有一个,不需要添加连线
最终连线:
频繁项集:
(先找二元项集)
第一步:从底往上看
b出现一次,a出现5次,b不满足最小支持度,则不构成频繁项集。
第二个分支:
b出现1次,d出现2次,都不满足最小支持度,也不构成频繁项集。
d出现2次,c出现3次,d不满足最小支持度,不为频繁项集。
。
。
。
c出现3次,a出现5次,都满足最小支持度,则{a,c}为频繁项集。
其他分支依次类推。
第二步:从整棵树从下望上找
{a,b}:
{a,b}从整棵树中找,发现有三条路径,满足最小支持度,则{a,b}属于频繁项集。
{b,d}:
{b,d}从整棵树找,发现出现的次数为1,不满足最小支持度。
{b,c}:
{b,c}从整棵树找在红色分支出现1次,在橙色分支出现一次,不满足最小支持度,则{b,c}不是频繁项集。
{c,d}:
{c,d}从整棵树找在红色分支出现2次,在橙色分支出现1次,满足最小支持度,则{c,d}是频繁项集。
{a,d}:
{a,d}从整棵树找,我们发现其中红色分支出现2次,橙色分支出现一次,满足最小支持度3,则{a,d}为频繁项集。
{a,c}已经在第一步证明为频繁项集。
依次类推找三元项集
从底往上找{b,c,d}:
从分支中找{b,c,d},发现不满足最小支持度…(依次类推)
从整棵树找:找{a,b,c,d}的组合方式:{a,b,c}、{a,b,d}、{a,c,d}、{b,c,d}。发现并没有满足条件的项集
则这棵树不存在三元频繁项集
依次类推找四元频繁项集(三元都不存在,更何况四元,无意义)
综上所述
频繁项集为
频繁项集 |
---|
{a,b}、{a,c} 、{a,d}、{c,d} |