FP

您所在的位置:网站首页 fp编程 FP

FP

#FP| 来源: 网络整理| 查看: 265

本博客的目的是为了让一些对FP-tree的原理 不理解的同胞而创作的,希望可以帮助一些同胞们通过本博客能理解该算法。 好了,话不多说,下面开始进入正题。 这是我们的原始数据集,最小支持度=2:

FP-tree如何构建:(项头表,排序后的项目集,FP-tree,节点链表) 所谓FP-tree核心就是要构建我们的树结构,我自己整理归纳为4个步骤: 1.计算每个事物的支持度,也就是上面每个字母出现的次数,并按照从大到小排序,删除最小支持度后得到如下项头表:

  

2.回过头来看原始数据集,在原始数据的每一行删除掉非频繁一项集(即在每一行对比上述项头表删除掉次数小于最小支持度的字母,如在原始数据集的第一行:A B C E F O,O的支持度(便于理解,下面统称为出现的次数)因为小于最小支持度,所以删掉这个O),每一行都要进行删除非频繁一项集,得到下面的排序后的数据集:

3.按照排序后的频繁项集开始构建FP-tree,如何构建?

①:导入2的排序后的频繁项集的第一行,ACEBF,根节点为空(因为这个是为了把这个算法的妙处,把数据放入数结构中,利用树的数据结构去生产关联规则,所以不用去研究最上面的节点为什么是null),然后按照A-C-E-B-F的顺序一节一节的构建树,然后在每个字母标记次数(即出现一次标记一次),效果如下:

②.第二行A C G也是跟上面一样,注意从(ACG)的第一个字母A开始插入树中,即从C开始分叉出一个G,此时,A,C节点的次数增加1,变为2,具体效果如下:

③.该行只有一个节点E,那么就是直接从根节点null下面开始插入,次数为1,如下:

④.然后就是按照上面的做法继续往下插入项头表的剩下几行数据,凡是出现一次就要加1,直到最后每个字母出现的总次数要跟项头表的数据相同即可,读者可以去尝试画一画,最终的FP-tree如下,假如你能跟下面一样那么就是画正确了.

4.最后就是画节点链表了,根据项头表的每个字母的次数,在FP-tree中找到对应的字母,用线将他们连接起来,方便关联。如下:

FP-tree挖掘(挖掘频繁项集)

首先先了解什么是条件模式基,很多博主是说:要挖掘的节点作为叶子节点所对应的FP子树。有兴趣的可以去找找官方资料去阅读深入理解。这里我给大家说说我是怎么理解的,希望大家可以从下面的例子中去深入理解条件模式基。

条件模式基怎么找:

首先我们以挖掘的顺序不是从上往下,而是从最底下开始,向上去一节一节的找节点,这里我们从项头表最底下的F节点开始。这里我项说明一下节点链表的作用:假如没有多余的其他地方,只有最下面一个点(F的次数为2,只有一个节点次数为2组成),那么从这个节点开始向上找它的的条件模式基,即为:BECA,该情况如下:

假如,还有其他多余的地方(E次数为8,是由一个节点次数为6跟一个节点次数为2组成的),那么从这两个个节点开始向上找它的的条件模式基,节点次数为6的E的条件模式基为:CA,另一个节点次数为2的条件模式基为:null,合并之后就是:CA。

产生频繁项集

既然我们已经知道如何求条件模式基了,那么开始求频繁项集,下面我会详细求出:A C E G B D F每个产生的频繁项集。

根据项头表从底下开始挖掘:

F:我们开始从F节点开始挖掘,那么根据上面条件模式基的求法可以得出F的条件模式基为:(B E C A),然后我们在根据排序好的项目集,在有F存在的数据里,依次找出B E C A的支持度,即出现了一共出现了多少次,判断每个字母出现的次数是否大于最小支持度,大于则保留,否则则删除掉这个字母,具体如下:

跟F进行结合,故产生的频繁2项集为:{A:2,F:2}, {C:2,F:2}, {E:2,F:2}, {B:2,F:2},递归合并得到频繁3项集:{BCF:2,BEF:2,BAF:2......}还有一些频繁三项集就不写了,一直递归下去,就会有一个最大的频繁项集,这点跟Apriori做法一样,最后找出最大的频繁项集为5项集,即为{A:2,C:2,E:2,B:2,F:2}

D:D的总次数为2,是有两个次数为1的节点,故条件模式基为:(G E C A) 与  ( C A),故在有D的数据里,有:

计算 G E C A一共出现了多少次,计算出G:1,E:1,C:2,A:2,因为G,E都为1,小于最小支持度,故删掉,只留下CA,最后跟D结后,产生的频繁2项集为:{C:2,D:2},{A:2,D:2}递归后最后得到一个最大的频繁3项集为:{A:2,C:2,D:2}

B:条件模式基为:(E C A),各个字母出现次数为:E:2,C:2,A:2

B递归后最后得到一个最大的频繁4项集为:{A:2, C:2, E:2,B:2}。

G:条件模式基为:(E C A)与(C A),合并后为(E C A ),每个字母的次数为:E:4,A:5,C:5

G递归后最后得到一个最大的频繁4项集为:{A:5, C:5, E:4,G:4}。

E:条件模式基为:( C A),各个字母出现次数为:C:6,A:6

E递归后最后得到一个最大的频繁3项集为:{A:6, C:6, E:6}。

C:A上面是null,是没有条件模式基的,故接下来是最后一个C,C的条件模式基为:A,出现的次数为:A:8

C最后得到一个最大的频繁2项集为{A:8,C:8}。

到这里我们已经得到了所有的频繁项集,假如我们只需要得到最大的频繁K项集,从上面的分析可以得出最大的频繁项集为5项集,即{A:2, C:2, E:2,B:2,F:2}。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3