机器学习实战(十一)FP-growth(频繁项集)

本文介绍了机器学习中的FP-growth算法,用于关联分析中的频繁项集挖掘。FP-growth只需扫描数据集两次,通过构建FP树和条件FP树,有效地找出频繁项集,速度优于Apriori算法。文章详细解释了FP树的构建过程和从FP树中挖掘频繁项集的递归方法,并提供了实战案例。
摘要由CSDN通过智能技术生成

目录

0. 前言

1. 构建FP树

2. 从FP树中挖掘频繁项集

3. 实战案例

3.1. FP-growth寻找频繁项集


学习完机器学习实战的FP-growth,简单的做个笔记。文中部分描述属于个人消化后的理解,仅供参考。

本篇综合了先前的文章,如有不理解,可参考:

机器学习实战(十)Apriori算法

所有代码和数据可以访问 我的 github

如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

0. 前言

从大规模的数据集中,寻找不同特征或者物品之间的隐含关系,称为关联分析(association analysis),或者关联规则学习(association rule learning)。

Apriori 算法中,寻找频繁项集,需要对每一个可能的频繁项扫描一遍数据集计算支持度,计算量庞大。

FP-growth 算法中,寻找频繁项集,只需要扫描两遍数据集,将数据存储在FP树的结构上,然后在FP树上挖掘频繁项集。

  • 优点:速度一般要快于 Apriori。
  • 缺点:实现比较困难,在某些数据集上性能会下降。
  • 适用数据类型:标称型数据。

例如在下述例子中(图源:机器学习实战),右侧是一颗FP树:

事务ID 事务中的元素项
001 r, z, h, j, p
002 z, y, x, w, v, u, t, s
003 z
004 r, x, n, o, s
005

y, r, x, z, q, t, p

006 y, z, x, e, q, s, t, m

 

FP代表频繁模式(Frequent Pattern),一个元素项可以在一颗FP树上出现多次。

树节点上给出了当前节点的路径在数据集中的出现次数,例如{z:5}表示元素{z}在数据集中出现了5次;{y:3}表示路径{y, x, z}在数据集中出现了3次;{s:2}表示路径{s, y, x, z}在数据集中出现了2次。

左侧为头指针表,给出了每个元素在数据集中出现的次数,并由链表通过节点链接(node link)依次链接每个元素。部分元素因为不满足最小支持度的要求,所以不储存在FP树中。

在 FP-growth 算法中,同样采用了 Apriori 算法的思想,如果某个项是非频繁的,那么这个项的所有超集也是非频繁的。

1. 构建FP树

构建FP树的过程只需要扫描两遍数据集。

第一遍扫描,计算每个单个元素的频率,并根据最小支持度,滤除不满足的元素。

第二遍扫描,首先对数据集进行处理,每一条数据按照元素的绝对出现频率排序,并滤除不满足最小支持度的元素

例如根据上述的头指针表,元素排序为{z:5, x:4, y:3, s:3, r:3, t:3},所以处理后的数据为:

事务ID 事务中的元素项 过滤及排序后的元素
001 r, z, h, j, p z, r
002 z, y,
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值