关联规则(三) FP-GROWTH

FP-GROWTH是一种高效发现频繁项集的算法,仅需遍历数据集两次,利用FP树数据结构避免生成候选集。尽管内存占用较大且构建过程较复杂,但其速度优势明显。本文介绍了FP-GROWTH的步骤、FP树节点结构,并提供了Python3代码实现。
摘要由CSDN通过智能技术生成

1. 简介:

作者:韩嘉炜。应该是中国人吧,鼓掌!
一种非常好的发现频繁项集算法。
基于Apriori算法构建,使用叫做 FP树 的数据结构结构来存储集合。在某种意义上来说,就是Aprori的优化算法。

2. 优缺点

优点:

  • 速度更快,FP-growth 算法只需要对数据集遍历两次。
  • 压缩数据,FP树将集合按照支持度降序排序。不同路径如果有相同前缀路径,则共用存储空间,这使得数据得到了压缩。
  • 不需要生成候选集。

缺点:

  • FP-Tree第二次遍历会存储很多中间过程的值,会占用很多内存。
  • 构建FP-Tree是比较昂贵的。
  • 只能用于找频繁项集,不能挖掘其中的规则。

3. 步骤

为了更好的解释原理,先用最最简单的方式,进行过程的说明。这里有一组数据:

Date = [['r', 'z', 'h', 'j', 'p'],
        ['z', 'y', 'x', 'w', 'v', 'u', 't', 's'],
        ['z'],
        ['r', 'x', 'n', 'o', 's'],
        ['y', 'r', 'x', 'z', 'q', 't', 'p'],
        ['y', 'z', 'x', 'e', 'q', 's', 't', 'm']]

第一步:支持度计数。就像这样{'z': 5, 'r': 3, 't': 3, 'x': 4, 'y': 3, 's': 3}然后进行首项降序排序。
第二步:构建FP-TREE。FP-TREE是一种树形数据结构,FP-GROWTH算法专用。按照降序,从z开始,构建如下类型的树。

     z   5
       r   1
       x   3
         t   3
           y   2
             s   2
           r   1
             y   1
     x   1
       r   1
         s   1

第三步:在树中挖掘频繁项集。

4. FP树的节点结构

这里是用python3定义的树的节点。

class treeNode:
    def __init__(self, nameValue, numOccur, parentNode):
        self.name = nameValue     # 节点名称
        self.count = numOccur     # 节点出现次数
        self.nodeLink = None      # 不同项集的相同项通过nodeLink连接在一起
        self.parent = parentNode  # 指向父节点
        self.children = {
   }        # 存储叶子节点

5. 具体的原理和步骤:

步骤1
1:遍历所有的数据集合,计算所有项的支持度。
2.丢弃非频繁的项。基于 支持度 降序排序所有的项。
3. 所有数据集合按照得到的顺序重新整理。重新整理完成后,丢弃每个集合末尾非频繁的项。

步骤2
读取每个集合插入FP树中,同时用一个头部链表数据结构维护不同集合的相同项。最终得到上面这样一棵FP树 。

步骤3
在频繁树中,挖掘出类似如下的频繁项集。
中间过程很细节,等找到合适的画图软件,再写个详细的版本。

[{
   'r'}, {
   't'}, {
   'z', 't'}, {
   'x', 't'}, {
   'z', 'x', 't'}, {
   'y'}, {
   'z', 'y'}, 
{
   'y', 'x'}, {
   'z', 'y', 'x'}, {
   'y', 't'}, {
   'z', 'y', 't'}, {
   's'}, {
   'x', 's'},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值