引言
- Fpgrowth算法又叫fp tree,通俗来讲是计算特征之间关联程度的,Fp树是其核心
- FP树(Frequent Pattern Tree)是一种用于高效挖掘频繁项集的数据结构。它通过将事务数据集转换为一棵树形结构来实现,其中每个节点表示一个项,每个路径表示一个事务。
- 如下图,事物就是列,项就是行数据,更通俗的理解就是事物大概对应的就是序号,编号,项就是序号对应的每行数据(如果感觉抽象可以往下看详解时候的例子)

算法详解
基本步骤:
- 1 扫描一次事物集,找出频繁1项集,并按频度降序排列得到列表L。
- 2 基于L,再扫描一次事务集,对每个原事务进行处理:删去不在L中的项,并按照L中的顺序排列,得到修改后的事务集T’。
- 3 构造FP树
- 4 在FP树上递归地找出所有频繁项集
- 注1:左边就是数据,其中a b c d都是表示特征,项就是这些特征的组合; 然后需要找出频繁 1 项集,啥意思呢,通俗解释就是,比如下图中{A:8}集合离只有一个键值对就是 1 项集,几个键值对就是几项集,这个 1 项集其实就是特征在事物中总共出现的次数
- 注2: 得到每个特征的出现次数进行降序排列,并根据支持度(就是特征出现次数/总特证数)筛选不符合支持度的特征得到项头表,也就是 L(可以看到O,I 不满足所以不在 L 中)
- 注3: 根据 L 得到修改后的事物集T‘,其实就是去掉了项特征不在 L 表中的特征
建立 FP Tree
- 此处是理解的一个难点之一,看下图
- 首先我们根据 T’还有项头表来建立节点,可以理解成画树的分叉,比如第一条数据 ACEBF(因为 ACEBF 目前都只出现了一次,所以第一条分叉只有一条,此为根节点):

- 然后插入第二条数据 ACG,因为第一条数据中已经有AC项了,所以第一条分支上的 AC都+1,而 G 是没有的,所以建立一个新节点

- 同理插入剩余数据(此处详细每条数据插入后的图片可以点击参考资料 1)


…
- 最终建立的 Fp 树如下图

FP tree 的挖掘
- 建立好 fp tree 后就该挖掘频繁项集了,此处也是一个难点,或者说是比较容易一头雾水的地方
- 例如我们先找特征 F 相关的节点,如下图所示,左边就是所有 F 相关的分叉和节点了,中间这个 F 的条件模式基听起来过于拗口难以理解,可以这么来理解
- 首先左侧的分叉只有一条,那就是 ACEGBF

本文详细介绍了FPGrowth算法,包括如何构建FP树、频繁项集的挖掘过程,以及如何通过mlxtend库实现代码实例。重点讲解了频繁项集的计算、关联规则的生成及其参数设置。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



