背景:
        频繁项集挖掘算法用于挖掘经常一起出现的item集合(称为频繁项集),通过挖掘出这些频繁项集,当在一个事务中出现频繁项集的其中一个item,则可以把该频繁项集的其他item作为推荐。比如经典的购物篮分析中啤酒、尿布故事,啤酒和尿布经常在用户的购物篮中一起出现,通过挖掘出啤酒、尿布这个啤酒项集,则当一个用户买了啤酒的时候可以为他推荐尿布,这样用户购买的可能性会比较大,从而达到组合营销的目的。
        常见的频繁项集挖掘算法有两类,一类是Apriori算法,另一类是FPGrowth。Apriori通过不断的构造候选集、筛选候选集挖掘出频繁项集,需要多次扫描原始数据,当原始数据较大时,磁盘I/O次数太多,效率比较低下。FPGrowth算法则只需扫描原始数据两遍,通过FP-tree数据结构对原始数据进行压缩,效率较高。
        FPGrowth算法主要分为两个步骤:FP-tree构建、递归挖掘FP-tree。FP-tree构建通过两次数据扫描,将原始数据中的事务压缩到一个FP-tree树,该FP-tree类似于前缀树,相同前缀的路径可以共用,从而达到压缩数据的目的。接着通过FP-tree找出每个item的条件模式基、条件FP-tree,递归的挖掘条件FP-tree得到所有的频繁项集。算法的主要计算瓶颈在FP-tree的递归挖掘上,下面详细介绍FPGrowth算法的主要步骤。

FPGrowth的算法步骤:
  • FP-tree构建
    1. 第一遍扫描数据,找出频繁1项集L,按降序排序
    2. 第二遍扫描数据:
      • 对每个transaction,过滤不频繁集合,剩下的频繁项集按L顺序排序
      • 把每个transaction的频繁1项集插入到FP-tree中,相同前缀的路径可以共用
      • 同时增加一个header table,把FP-tree中相同item连接起来,也是降序排序
      •  ==> 
  • 频繁项挖掘
    1. 从header table的最下面的item开始,构造每个item的条件模式基(conditional pattern base)

      • 顺着header table中item的链表,找出所有包含该item的前缀路径,这些前缀路径就是该item的条件模式基(CPB)
      • 所有这些CPB的频繁度(计数)为该路径上item的频繁度(计数)
      • 如包含p的其中一条路径是fcamp,该路径中p的频繁度为2,则该CPB fcam的频繁度为2
    2. 构造条件FP-tree(conditional FP-tree)
      • 累加每个CPB上的item的频繁度(计数),过滤低于阈值的item,构建FP-tree
      • 如m的CPB{<fca:2>, <fcab:1>},f:3, c:3, a:3, b:1, 阈值假设为3,过滤掉b
    3. FP-Growh:递归的挖掘每个条件FP-tree,累加后缀频繁项集,直到找到FP-tree为空或者FP-tree只有一条路径(只有一条路径情况下,所有路径上item的组合都是频繁项集)
注意点:
  • FP-Tree中header table按item降序排序原因

    1. 共用前缀:不排序会造成不能共用前缀

    2. 更多的共用前缀:频繁的item会在树的上层,可以被更多的共享;升序排序会造成那些频繁出现的item出现在树的分支中,不能更多的共用前缀
参考文献:
  • Mining Frequent Patterns without Candidate Generation: A Frequent-Pattern Tree Approach∗、PPT
  • mahout并行化FPGrowth实现
7

FPGrowth算法理论相关推荐

  1. 【白话机器学习】算法理论+实战之关联规则

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  2. 关联分析Apriori算法和FP-growth算法初探

    1. 关联分析是什么? Apriori和FP-growth算法是一种关联算法,属于无监督算法的一种,它们可以自动从数据中挖掘出潜在的关联关系.例如经典的啤酒与尿布的故事.下面我们用一个例子来切入本文对 ...

  3. Spark机器学习(9):FPGrowth算法

    关联规则挖掘最典型的例子是购物篮分析,通过分析可以知道哪些商品经常被一起购买,从而可以改进商品货架的布局. 1. 基本概念 首先,介绍一些基本概念. (1) 关联规则:用于表示数据内隐含的关联性,一般 ...

  4. Apriori算法、FP-Growth算法、顺序分析、PrefixSpan算法

    Apriori算法.FP-Growth算法.顺序分析.PrefixSpan算法 目录 Apriori算法.FP-Growth算法.顺序分析.PrefixSpan算法 Apriori算法 FP-Grow ...

  5. 【机器学习实战】第12章 使用 FP-growth 算法来高效发现频繁项集

    第12章 使用FP-growth算法来高效发现频繁项集 前言 在 第11章 时我们已经介绍了用 Apriori 算法发现 频繁项集 与 关联规则. 本章将继续关注发现 频繁项集 这一任务,并使用 FP ...

  6. 一步步教你轻松学朴素贝叶斯模型算法理论篇1

    一步步教你轻松学朴素贝叶斯模型理论篇1 (白宁超2018年9月3日17:51:32) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对 ...

  7. 【机器学习】Apriori 算法进行关联分析和FP-growth算法

    [机器学习]Apriori 算法进行关联分析和FP-growth算法 文章目录 1 关联分析 2 FP-growth算法理解和实现 3 FP增长算法的频繁项集产生 4 FP-Growth关联分析算法在 ...

  8. 模拟退火算法理论+Python解决函数极值+C++实现解决TSP问题

    简述 算法设计课这周的作业: 赶紧写了先,不然搞不完了. 文章目录 简述 算法理论部分 变量简单分析 从状态转移概率到状态概率 推导 理解当温度收敛到接近0的时候,收敛到结果 理论部分的后记 pyth ...

  9. 使用FP-growth算法发现频繁项集

    源码如下: #coding=utf-8''' Created on Jun 14, 2011 FP-Growth FP means frequent pattern the FP-Growth alg ...

  10. 频繁项集挖掘之Aprior和FPGrowth算法

    频繁项集挖掘的应用多出现于购物篮分析,现介绍两种频繁项集的挖掘算法Aprior和FPGrowth,用以发现购物篮中出现频率较高的购物组合. 基础知识 项:"属性-值"对.比如啤酒2 ...

最新文章

  1. 秦川团队《科学》刊发研究:新冠感染恒河猴康复后不会再感染
  2. Android Gradle 学习笔记(四):Gradle 构建脚本
  3. 若依(基于SpringBoot的权限管理系统)的快速搭建
  4. 腾讯推出百万现金漏洞悬赏计划!
  5. oracle cpu 100%原因,oracle 12.1 cpu 100%
  6. 【kruskal重构树】【主席树】werewolf 狼人(P4899)
  7. 回溯算法之电话号码的字母组合
  8. Angularjs进阶笔记(2)—自定义指令中的数据绑定
  9. 虚拟主机 webdav php,ubuntu 搭建 webdav 文件服务器 及客户端配置 详解
  10. 2.架构设计的敏捷视图
  11. 黑金全部开发板资料(FPGA+ZYNQ)分享
  12. 13 费氏数列或叫斐波那契数列fibonacci
  13. AFX_VIRTUAL
  14. android打开蓝牙设置界面,Android 点击跳转到蓝牙设置界面
  15. 计算机表格数字整体加,excel表格整体数据加1怎么处理-怎样才可以在EXCEL表格的数字中全部加1??...
  16. OpenCV-Python实战(22)——使用Keras和Flask在Web端部署图像识别应用
  17. FFMPEG监控拉流,向流媒体服务器推流
  18. SSL/TLS 与 IPSec 对比
  19. php机器代出价,直通车转化出价工具将升级为:智能出价!
  20. 用localStorage实现微信公众号自动登录

热门文章

  1. c# 对象 与 Json串 转换
  2. 基于SSM实现酒店入住预定管理系统
  3. e480 黑苹果_记一次黑苹果PC装机全过程
  4. DatagramPacket.getData()与DatagramPacket.getLength()的误区
  5. 打印机质量测试软件,打印质量测试
  6. POJ - 2718 Smallest Difference
  7. TomCat7安装与配置
  8. hp1015驱动64位_HP LaserJet 1015 驱动下载
  9. 电脑硬件故障维护小全
  10. 行政区划简称(包括别称)