博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【机器学习实战】FP-growth算法详解
阅读量:2225 次
发布时间:2019-05-09

本文共 727 字,大约阅读时间需要 2 分钟。

背景

支持度:出现的频率

置信度:“如果A那么B”的可信度

apriori算法 需要多次扫描数据,I/O 大大降低了时间效率

1. fp-tree数据结构

1> 项头表

记录所有的1项频繁集出现的次数,并降序排列

2> fp tree

根据项头表,构建fp树

3> 节点链表

所有项头表的1项频繁集都是一个节点链表的头,依次指向fp树中的位置,而且方便查找和更新

2. 项头表的建立

这里写图片描述

排序后的数据集进行了两步操作:
1> 删除每行关键字中支持度小于minSup的
2> 对关键字中剩下的元素按照支持度排序

3. fp tree和节点链表一起构建

开始节点为空

首先插入第一行关键字
这里写图片描述
接着插入第二行关键字,如果有重复的前缀路径,则路径上的节点+1
这里写图片描述
.
.
.
,
,
.
.
类似的我们插入所有的数据之后,fptree和链表也都建好了,下图即为最后的tree和节点链表
这里写图片描述

4.FP Tree的挖掘

对项头表从底部依次向上挖掘频繁集,对于项头表对应于fp树的每一项,我们要找到它的条件模式基(所有的路径前缀),更新该路径的节点数目。

F:
这里写图片描述
D:
这里写图片描述
这里写图片描述
最后是A,因为条件模式基为空,所以可不用挖掘
由此,我们得到了所有的频繁集(> 0.2),如果只要最大的频繁k项集,从上面分析可以看出,最大的是5项集,A----C----E----B----F

5.FP Tree步骤总结

1> 扫描数据,得到所有频繁一项集的计数,按照支持度保留满足的项,将频繁一项集放入项头表,并按降序排列

2> 扫描数据,重置原始数据(删除非频繁一项集,并按支持度排序)
3> 读入排序后的数据集,插入FP树,并构建节点链表
4> 挖掘频繁信息,按照项头表,从底向上依次寻找频繁集。

参考

你可能感兴趣的文章
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
决策树的python实现
查看>>
了解 Sklearn 的数据集
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>
seq2seq 的 keras 实现
查看>>
seq2seq 入门
查看>>
什么是 Dropout
查看>>
用 LSTM 做时间序列预测的一个小例子
查看>>
用 LSTM 来做一个分类小问题
查看>>
详解 LSTM
查看>>
按时间轴简述九大卷积神经网络
查看>>
详解循环神经网络(Recurrent Neural Network)
查看>>
为什么要用交叉验证
查看>>
用学习曲线 learning curve 来判别过拟合问题
查看>>
用验证曲线 validation curve 选择超参数
查看>>