FP-growth算法

目录

1、回顾Apriori算法
2、FP-growth算法框架
3、举例解释
4、FP-growth算法与Apriori算法对比
5、FP-growth现有改进之一

1、回顾Apriori算法

   之前已经讨论了使用Apriori算法进行关联分析。简单回顾如下:
   关联分析是一种在大规模数据集中寻找有趣关系(葡萄酒,尿布)的任务。完成这个任务可以有两个步骤:
   1.发现频繁项集:发现经常出现在一块的物品的集合
   2.挖掘关联规则:挖掘两种物品之间可能存在的关系    

   对于步骤1,之前讨论的是利用Apriori算法来发现频繁项集,为了使大家对FP-growth算法的优点有更深刻的认识,下面先回顾一下Apriori算法,然后由Apriori算法引出FP-growth算法。
   对于步骤2,本次实验使用同一个挖掘关联规则算法,这里不做回顾。

对于步骤1,之前讨论的是利用Apriori算法来发现频繁项集,那么什么是频繁项集呢?
频繁项集:经常出现在一块的物品的集合。如下例子:
这里写图片描述
其中{葡萄酒,尿布}、{豆奶,莴苣}就是频繁项,由这些频繁项组成的集合就是频繁项集

知道了频繁项集之后,怎样发现频繁项集呢?
回顾Apriori算法发现频繁项集:
1、首先回顾一下Apriori算法的原理:

   如果某个项集是频繁的,那么它的所有子集也是频繁的,换句话说,如果一个项集是非频繁集,那么它的所有超集也是非频繁的。

这里写图片描述

回顾Apriori算法流程
这里写图片描述

Apriori算法分析

        对于候选项集中的所有频繁项,Apriori算法都会重新扫描整个数据集来统计频繁项对应的支持度,从而筛选出满足支持度要求的频繁项,形成频繁项集。
   当数据集很大时,Apriori算法的时间大部分消耗在扫描数据集上了。这将显著降低频繁项集发现的速度。
   接下来讲解的FP-growth算法,和Apriori算法相比,该算法只需要对数据集进行两次扫描,能够显著加快发现频繁项集的速度。

下面重点讲解FP-growth算法

2、FP-growth算法

FP-growth(FP:Frequent Pattern)算法只需扫描数据集两次,该算法发现频繁项集的基本过程如下:
1、构建FP树
    第一次扫描数据——统计每个频繁项的支持度
    第二次扫描数据——建树
2、从FP树中挖掘频繁项集
   (a):从FP树中获得条件模式基;
   (b):利用条件模式基,构建一个条件FP树;
   (c):迭代重复步骤(a)和(b),直到树包含一个元素项为止。

3、举例说明

对于如下商品数据集,求出该数据集的频繁项集。
这里写图片描述

第一步:构建FP树

   第一次遍历数据集:获得每个元素的出现频数。接下来,过滤掉不满足最小支持度(假设为:3)要求的元素项,得到频繁1项集。

这里写图片描述

   第二次遍历数据集:1.根据过滤后的有序元素集合(频繁1项集)对每张发票上的商品进行排序

这里写图片描述

得到过滤及重新排序后的发票商品清单如下:

这里写图片描述

第二次遍历数据集:2.根据过滤及重新排序后的商品构建FP树。从空集开始,将每张发票上的商品依次过滤及排序后添加到树中,如果树中已存在现有元素,则增加现有元素值;如果现有元素不存在,则向树添加一个分枝。

这里写图片描述

接下来用下图说明此过程:

从空集开始,依次添加{z , r }、{z , x , y , s , t}、{z}、{x , s , r }、{z , x , y , r , t}、{z , x , y , s , t}.如下图所示:

这里写图片描述

 完整的FP树如下图所示:

这里写图片描述

除了FP树之外,还需要一个头指针表来指向给定类型的第一个实例。利用头指针表,可以快速访问FP树中一个给定类型的所有元素。下图为带头指针表的FP树:

这里写图片描述

第二步:从FP树中挖掘频繁项集

1.从FP树中获取条件模式基:
   条件模式基:是以所查找元素项为结尾的路径集合。每一条路径其实都是一条前缀路径。简而言之,一条前缀路径就是介于所查找元素项与树根节点之间的所有内容
   首先从已经保存在头指针表中的单个频繁元素项开始。对于每个元素项,获得其对应的条件模式基。 

每个频繁项的前缀路径如下:

这里写图片描述

2.创建条件FP树:
   对于每一个频繁项,都要创建一颗条件树。为(z,x,..,t
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值