数据挖掘关联规则挖掘FPtree的思想

FPtree是针对Apriori关联规则挖掘算法的改进,他的优点在于只需要扫描一遍数据库,建好了FPtree之后,基于树做关联规则挖掘就可以了,显然大大减少了数据库的扫描次数。

建FPtree前的工作

在扫描左边一条一条数据的时候,我们完成项头表,即记录了频繁1项集,不但如此,还记录这些频繁1项集谁最频繁,也就是次数,比如A出现了8次。

接下来我们将左边每一条数据进行一定的处理,这个处理包括两部分:

  1. 把非频繁1项集删去,因为频繁K项集中一定不会出现这个项,留着对我们关联规则挖掘也没有用。比如A,B,C,E,F,O变成A,B,C,E,F。
  2. 完成了1之后,我们把那个交易记录排一下序,由于C出现8次比B多,所以A,B,C,E,F变成A,C,E,B,F。这一步非常非常关键,后面即可知道

在这里插入图片描述

FPtree的建立

根据排序后的交易记录建树。

A,C,E,B,F

在这里插入图片描述

A,C,G,这里大家观察一下,节点被经历了多少次是要计数的,下图可以发现,A,C都变成了被经历了2次。

![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/09b580e2ba90a91b72a7a97edded0a67.png)

在这里插入图片描述

在这里插入图片描述

FPtree的挖掘

前面一直都是合情合理,却不知道为什么要这样的数据结构,这全都是因为这里的需要。下面我们基于上面生成的FPtree进行关联规则挖掘。

我们先从上面的F节点看起,对应唯一一条路径{A:8,C:8,E:6,B:2, F:2}。这其实给我们的直观理解就是:A,C,E,B,F在所有交易记录中出现了2次。由于我们的最小支持度是2,所以这就是频繁5项集了。不过,具体做法是,我们定义F的条件模式基为:{A:2,C:2,E:2,B:2},不写自身节点F,所以才叫基。

我们知道{A,C,E,B,F}是频繁5项集,根据Apriori算法,所有子集都是频繁项集,比如频繁2项集有:{A,F},{C,F},{E,F},{B,F}。其实显然我们知道还有{C,E},但是我们在此处不写,因为这里如果挖掘了{C,E},等到我们下次处理节点E的时候,会重复,到时候又要去重。总之,这里的频繁k项集都要带着F,再比如频繁3项集有:{A,C,F}。但是不可以{A,C,E}。

F挖掘完了,我们开始挖掘D节点。D节点比F节点复杂一些,因为它有两个叶子节点,因此首先得到的FP子树如下图左。仿照前面,直观理解,我们可以得到:{A:1, C:1,E:1 G:1,D:1},{A:1,C:1,D:1}。合并一下{A:2, C:2,D:2}。这里为什么去除E,G,想必你很容易理解。通过{A:2, C:2,D:2},我们很容易得到D的频繁2项集为{A:2,D:2},{C:2,D:2}。递归合并二项集,得到频繁三项集为{A:2,C:2,D:2}。D对应的最大的频繁项集为频繁3项集。

同样的方法可以得到B的条件模式基如下图右边,递归挖掘到B的最大频繁项集为频繁4项集{A:2, C:2, E:2,B:2}。

挖掘G的频繁项集。这里稍微注意一下,可以好好理解一下。挖掘到的G的条件模式基如下图右边,递归挖掘到G的最大频繁项集为频繁4项集{A, C, E,G}。并且这个出现4次。

E的条件模式基如下图右边,递归挖掘到E的最大频繁项集为频繁3项集{A:6, C:6, E:6}。

C的条件模式基如下图右边,递归挖掘到C的最大频繁项集为频繁2项集{A:8, C:8}。

至于A,由于它的条件模式基为空,因此可以不用去挖掘了。其实前面的很多频繁项集都包括了A,所以不用向下挖掘,是重复的

至此我们得到了所有的频繁项集。一个问题,我们注意到:我们是按项头表逆序来依次挖掘的,因为这些一般在叶子节点。比如F,D。。。的顺序依次挖掘。可否反着来的,或者乱序来呢?大家可以试一试,反着来应该是可以的,但是处理步骤更复杂。

FPtree算法归纳

    这里我们对FP Tree算法流程做一个归纳。FP Tree算法包括三步:

    1)扫描数据,得到所有频繁一项集的的计数。然后删除支持度低于阈值的项,将1项频繁集放入项头表,并按照支持度降序排列。

    2)扫描数据,将读到的原始数据剔除非频繁1项集,并按照支持度降序排列。

    3)读入排序后的数据集,插入FP树,插入时按照排序后的顺序,插入FP树中,排序靠前的节点是祖先节点,而靠后的是子孙节点。如果有共用的祖先,则对应的公用祖先节点计数加1。插入后,如果有新节点出现,则项头表对应的节点会通过节点链表链接上新节点。直到所有的数据都插入到FP树后,FP树的建立完成。

    4)从项头表的底部项依次向上找到项头表项对应的条件模式基。从条件模式基递归挖掘得到项头表项项的频繁项集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值