【算法篇】关联性分析 FP-Growth算法

一、FP-growth 概述

FP-Growth(Frequent Pattern Growth,频繁模式增长)算法是一种高效的数据挖掘算法,主要用于解决频繁项集挖掘和关联规则发现的问题。

与传统的Apriori算法相比,FP-Growth算法通过构建一种称为FP-Tree(频繁模式树)的数据结构,极大地减少了搜索空间,提高了挖掘效率。

FP-Growth算法不仅适用于处理大规模数据集,还能有效应对数据稀疏性问题,因此在电子商务、社交网络分析、金融风控等多个领域有着广泛的应用。

FP-Growth算法

Apriori算法

提出时间

2000年

1993年

基本思想

基于频繁模式树(FP-Tree)挖掘频繁项集

基于候选集生成和向下封闭检测挖掘频繁项集

数据结构

FP-Tree(频繁模式树)

无特定数据结构,使用集合和列表

扫描数据库次数

两次

多次(随频繁项集长度的增加而增加)

效率

较高,特别是对于大规模数据集

较低,特别是对于长频繁项集

内存使用

较低,因为FP-Tree是紧凑的数据结构

较高,因为需要存储大量候选集

算法复杂度

较低,构建FP-Tree和挖掘频繁项集过程相对简单

较高,尤其是候选集生成和剪枝过程

适应场景

适用于大规模数据集和稀疏数据集

适用于小规模数据集或特定场景

发现关联规则

需要额外步骤从频繁项集中生成关联规则

可以直接从频繁项集中生成关联规则

优点

1. 只需扫描数据库两次,效率高。2. 占用内存少。3. 适用于大规模数据集。

1. 算法简单明了,易于实现。2. 广泛应用于各个领域。

缺点

不能直接用于发现关联规则,需要额外步骤

1. 扫描数据库次数多,效率低。

2. 产生大量候选集,占用内存大。

3. 对于长频繁项集挖掘性能低下。

二、FP-Growth实现原理

假设你的超市有以下几笔交易记录(即顾客购买的商品列表):

  • 交易1: 牛奶, 面包, 尿布
  • 交易2: 面包, 尿布, 啤酒, 鸡蛋
  • 交易3: 牛奶, 尿布, 啤酒, 可乐
  • 交易4: 面包, 牛奶, 尿布, 可乐

步骤1:构建FP树

  1. 统计频率:数据库的第一次扫描与Apriori算法相同,它导出频繁项(1项集)的集合,并得到它们的支持度计数(频度)。

商品

支持度

尿布

4

面包

3

牛奶

3

啤酒

2

可乐

2

鸡蛋

1

  1. 排序和过滤:假设我们设定最小支持度为2,根据统计的支持度,对每笔交易中的商品进行排序(通常按支持度降序),并删除非频繁项。

商品

支持度

尿布

4

面包

3

牛奶

3

啤酒

2

可乐

2

  1. 构建FP树
    • 创建一个根节点(通常标记为“null”或“root”)
    • 对于每笔过滤后的交易,按照排序后的顺序插入到FP树中。如果树中已存在某个节点,则增加其计数;如果不存在,则创建新节点(构造FP树时,会排查非频繁项)。

步骤2:挖掘频繁项集

在FP树构建完成后,数据库频繁模式的挖掘问题就转换成挖掘 FP树的问题。算法会递归地从树中挖掘频繁项集。

  1. 从树底开始:从FP树的底部(即叶子节点)开始,对每个节点,找到其条件模式基(即包含该节点的所有前缀路径)。
  2. 构建条件FP树:基于条件模式基,为每个节点构建一个条件FP树。这个新树只包含与当前节点一起出现的项。
  3. 递归挖掘:对每个条件FP树,重复上述过程,直到找到所有频繁项集。

通过创建条件(子)模式基挖据 FP树

商品

条件模式基

条件FP树

产生的频繁模式

可乐

{{尿布,面包,牛奶:1},{尿布,牛奶,啤酒:1}

<尿布,牛奶:2>

{尿布,牛奶,可乐:2},{尿布,可乐:2},{牛奶,可乐:2}

牛奶

{{尿布,面包:2},{尿布:1}}

<尿布,面包:2>,<尿布:3>,<面包:2>

{尿布,面包,牛奶:2},{尿布,牛奶:3},{面包,牛奶:2}

啤酒

{{尿布,面包:1},{尿布,牛奶:1}}

<尿布:2>

{尿布,啤酒:2}

面包

{{尿布:3}}

<尿布:3>

{尿布,面包:3}

最后,产生的频繁模式为表中最后一列的数据加上1-频繁项集的集合。

附录:FP-Grawth算法原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值