算法背景:找出关联规则的一种方法是,先找出所有频繁项集,即满足support>=minsup的项集,然后再从频繁项集中选出置信度满足要求的,最后得到强关联规则。问题是,找出所有频繁项集的过程,计算量是极大的。解决这一问题的思路之一是减少候选集。从这一思路出发,有两种较为成熟的解决方案。其中之一是Apriori算法,另一个则是FP-Growth算法,也叫做FP-Tree算法。也就是说,FP Growth算法是一个挖掘频繁项集的算法。

FP-Growth和Apriori很大的区别在于,它不产生候选项集,且只对事务集进行2次扫描。

FP-Growth的基本步骤是:

  1. 扫描一次事物集,找出频繁1项集,并按频度降序排列得到列表L。
  2. 基于L,再扫描一次事务集,对每个原事务进行处理:删去不在L中的项,并按照L中的顺序排列,得到修改后的事务集T’。
  3. 构造FP树
  4. 在FP树上递归地找出所有频繁项集

对于基本思想的描述是抽象的,下面我们通过一个实例来认识FP-Growth算法。
e.g.有这样一个事务集合T,找出频繁项集。

Step 1 第一次扫描,得到L

频数
i2 7
i1 6
i3 5
i4 2
i5 2

Step 2 第二次扫描,得到T’

事务
t1 i2,i1,i5
t2 i2,i4
t3 i2,i3
t4 i2,i1,i4
t5 i1,i3
t6 i2,i3
t7 i1,i3
t8 i2,i1,i5
t9 i2,i1,i3

Step 3 构造FP树
即T’中的数据是一条条树枝






Step4 根据FP树,找出频繁项集
这中间要经历条件模式基和条件FP树

条件模式基 条件FP树 频繁项集
i5:2 {null,i2,i1}:2 <null,i2:2,i1:2> {i2,i5}:2,{i1,i5}:2,{i2,i1,i5}:2
i4:2 {null,i2,i1}:1,{null,i2}:1 <null,i2:2,i1:1> {i2,i4}:2
i3:5 {null,i2,i1}:1,{null,i2}:2,{null,i1}:2 <null,i2:3,i1:1>,<null,i1:2> {i2,i3}:3,{i1,i3}:3
i1:6 {null,i2:4},{null} <null,i2:4> {i2,i1}:4
i2:7 {null} < null >

最后得到了6个频繁2项集,1个频繁3项集。代入原数据集中验证一下是否正确。

参考文档:FP Tree算法原理总结

FP Growth算法简介+实例相关推荐

  1. Frequent Pattern 挖掘之二(FP Growth算法)(转)

    FP树构造 FP Growth算法利用了巧妙的数据结构,大大降低了Aproir挖掘算法的代价,他不需要不断得生成候选项目队列和不断得扫描整个数据库进行比对.为了达到这样的效果,它采用了一种简洁的数据结 ...

  2. MapReduce框架下的FP Growth算法概述

    转载自:http://blog.sina.com.cn/s/blog_68ffc7a40100uebi.html 前面的博客分析了关联分析中非常重要的一个算法-FP Growth.该算法根据数据库在内 ...

  3. FP Growth算法

    转载自:http://blog.sina.com.cn/s/blog_68ffc7a40100uebg.html FP树构造 FP Growth算法利用了巧妙的数据结构,大大降低了Aproir挖掘算法 ...

  4. MapReduce框架下的FP Growth算法详解

    转载自:http://blog.sina.com.cn/s/blog_68ffc7a40100uebk.html Sharding 这一步没什么好讲的,将数据库分成连续的大小相等的几个块,放置在不同的 ...

  5. FP Growth算法详解

    看了n多资料,就这篇说的比较详细,适合初学者 FP树构造 FP Growth算法利用了巧妙的数据结构,大大降低了Aproir挖掘算法的代价,他不需要不断得生成候选项目队列和不断得扫描整个数据库进行比对 ...

  6. FP Tree算法原理总结(转)

    FP Tree算法原理总结 转自: https://www.cnblogs.com/zhengxingpeng/p/6679280.html 总结得太好了. FP Tree算法原理总结 在Aprior ...

  7. FP Tree算法原理

    作为一个挖掘频繁项集的算法,Apriori算法需要多次扫描数据,I/O是很大的瓶颈.为了解决这个问题,FP Tree算法(也称FP Growth算法)采用了一些技巧,无论多少数据,只需要扫描两次数据集 ...

  8. k-means聚类算法简介及正态分布实例演示

    一.k-means聚类算法简介 1.什么是聚类 聚类是一个将数据集中在某些方面相似的数据成员进行分类组织的过程,聚类就是一种发现这种内在结构的技术,聚类技术经常 被称为无监督学习. 2.什么是k-me ...

  9. DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类神经网络的工作原理

    DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类神经网络的工作原理 目录 BP类神经网络理解 1.信号正向传播FP 2.误差反向传播BP+GD B ...

  10. DL之DNN优化技术:神经网络算法简介之GD/SGD算法的简介、代码实现、代码调参之详细攻略

    DL之DNN优化技术:神经网络算法简介之GD/SGD算法的简介.代码实现.代码调参之详细攻略 目录 GD算法的简介 GD/SGD算法的代码实现 1.Matlab编程实现 GD算法的改进算法 GD算法中 ...

最新文章

  1. Collection 和 Collections区别
  2. 身份管理软件公司Okta计划IPO,目标融资1亿美元
  3. 苹果4s有java系统版本_iphone4s用ios8卡吗?iPhone4s升级iOS8正式版手机体验
  4. java.net.SocketException: 权限不够
  5. 手工代付系统/api代付系统/代付系统源码
  6. 美国政府发布关键海事行业的网络安全规划
  7. mapreduce task与spark task对比
  8. C# 判断文件/文件夹是否存在;
  9. 黑马程序员之《String Buffer,包装类》
  10. cad2017单段线_CAD制图规定-2017最新版.doc
  11. 软件项目开发流程以及人员职责,软件工程中五种常用的软件开发模型整理
  12. day048:LocalDateTime中增加、减少、直接修改时间的方法、计算时间间隔的方法
  13. windows7无声音,提示未插入扬声器或耳机的解决
  14. 下采样downsample和decimate
  15. 瀚高DB兼容MySQL if函数
  16. 安装fastdfs http访问文件
  17. [IOI2018]组合动作——构造
  18. java实现HTTPS单向认证TLS指定加密套件(文章很详细,好文章!)
  19. setoolkit的钓鱼攻击
  20. python turtle库输出文字_Python 海龟 turtle 画图讲解 (五):输入/输出文字及鼠标与键盘交互设计...

热门文章

  1. 后端日志【22】:时间过的很快,坚持的第7.3个月过去了,我有什么变化?
  2. JSP九大内置对象以及作用
  3. php版本与vc运行库
  4. 超星pdg格式转换为pdf格式原理方法
  5. AliSQL编译安装
  6. ncbi查找目的基因序列_献给初学者:如何使用 NCBI 查找基因序列、mRNA、Promoter...
  7. Smart 3D 切块合并 使用S3C索引 excel表格法
  8. Windows Embedded 7 最简便EWF系统制作方案
  9. PDF中批量数据的提取与处理
  10. Sql Server数据库查询去重数据,并保留最新的数据,以及删除重复数据