关联规则FP-Growth算法

    科技2025-05-06  58

    FP-Growth

    本文详细介绍FP-Growth构造FP-tree和找频繁项集(笔者研究方向确认为关联规则,作为初学者,若本笔记有错误,还望大家留言指出)

    已知强关联规则如下表所示

    TIDItems0a,b1c,d2a,c,d,e3a,d,e4a,b,c5a,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排序

    TIDItems0a,b1c,d2a,c,d3a,d4a,c,b5a,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}
    Processed: 0.014, SQL: 8