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)

TID Items
0 a,b
1 c,d
2 a,c,d
3 a,d
4 a,b,c
5 a,b,c,d

开始构造FP-tree,对0项集{a,b}进行处理,元素首次出现,需要将头结点赋予它。
关联规则FP-Growth算法
再对1项集{c,d}处理,c为新元素出现,创建新的分支。并将头结点赋予新节点。
关联规则FP-Growth算法
再对2项集{a,c,d}处理,a已经出现,则a的次数加一,再对a进行分支。
关联规则FP-Growth算法
再对3项集{a,d}处理
关联规则FP-Growth算法
再对4项集{a,b,c}处理关联规则FP-Growth算法
再对5项集{a,b,c,d}处理关联规则FP-Growth算法
最后,从d、c、b、a元素找相同元素出现在哪?连接同一元素

连接d
关联规则FP-Growth算法
连接c
关联规则FP-Growth算法
连接b:b只有一个,不需要添加连线

连接a:a只有一个,不需要添加连线

最终连线:关联规则FP-Growth算法
频繁项集:

(先找二元项集)

**第一步:**从底往上看关联规则FP-Growth算法
d出现一次,c出现两次,都不满足最小支持度,则不构成频繁项集。关联规则FP-Growth算法
c出现两次,b出现三次,但c不满足最小支持度,也不构成最小项集。关联规则FP-Growth算法
b出现三次,a出现5次,都满足最小支持度,则{a,b}为频繁项集。

其他分支依次类推。

**第二步:**从整棵树找{a,b,c,d}的组合方式:{a,b}、{a,c}、{a,d}、{b,c}、{b,d}、{c,d}

其中{a,b}在第一步就证明了他是频繁项集,这里就不用考虑。

{a,c}:
关联规则FP-Growth算法
{a,c}从整棵树中找,发现只出现两次,不满足最小支持度,则不属于频繁项集。

{a,d}:
关联规则FP-Growth算法
{a,d}从整棵树找,发现出现的次数为3,满足最小支持度。

{b,c}:
关联规则FP-Growth算法
{b,c}从整棵树找只出现一次,这不是频繁项集。

{b,d}:
关联规则FP-Growth算法
{b,d}从整棵树找只出现一次,这不是频繁项集。

{c,d}:
关联规则FP-Growth算法
{c,d}从整棵树找,我们发现其中三个分支都含有{c,d},满足最小支持度3,则{c,d}为频繁项集。

依次类推找三元项集

从底往上找{b,c,d}
关联规则FP-Growth算法
从分支中找{b,c,d},发现不满足最小支持度…(依次类推)

从整棵树找:找{a,b,c,d}的组合方式:{a,b,c}、{a,b,d}、{a,c,d}、{b,c,d}。发现并没有满足条件的项集

则这棵树不存在三元频繁项集

依次类推找四元频繁项集(三元都不存在,更何况四元,无意义)

综上所述

频繁项集为

频繁项集
{a,b}、{a,d}、{c,d}

相关文章: