FP-Growth算法

  • 概述
  • 阶段1:FP树构建
    • 步骤1:清洁和分类
    • 步骤2:构造FP树,带有已清理项目集的头表
  • 阶段2:开采主要树和条件FP树
    • 步骤1:将主要FP树划分为条件FP树
    • 步骤2:递归地挖掘每个条件树
  • 使用SPARK实现算法

FP树是整个FP Growth算法的核心概念。简而言之,FP树是项集数据库的压缩表示形式。树结构不仅在数据库中保留了项目集,而且还跟踪项目集之间的关联
通过获取每个项目集并将其一次映射到树中的路径来构造树。这种结构背后的整个想法是发生频率更高的项集将有更好的机会共享项集
然后,我们递归地挖掘树以获得频繁模式。模式增长,即算法的名称,是通过连接从条件FP树生成的频繁模式来实现的。

概述

FP增长之所以如此高效,是因为它是一种分而治之的方法。而且我们知道,高效的算法必须利用某种数据结构和先进的编程技术。它实现了树,链接列表以及深度优先搜索的概念。该过程可以分为两个主要阶段,每个阶段可以进一步分为两个步骤。

阶段1:FP树构建

步骤1:清洁和分类

对于每笔交易,我们首先删除低于最低支持量的项目。然后,我们以频率支持降序对项目进行排序。

步骤2:构造FP树,带有已清理项目集的头表

循环浏览已清理的项目集,一次将其映射到树上。如果分支中已存在任何项目,则它们共享同一节点,并且计数增加。否则,该项目将位于创建的新分支上。
标头表也在此过程中构造。交易中每个唯一项目都有一个链接列表。通过链接列表,我们可以在短时间内找到该项目在树上的出现,而无需遍历树。

阶段2:开采主要树和条件FP树

步骤1:将主要FP树划分为条件FP树

从每个频繁出现的1个模式开始,我们在FP树中创建带有前缀集的条件模式基础 。然后,我们使用这些模式库以与阶段1中完全相同的方法来构造条件FP树。

步骤2:递归地挖掘每个条件树

频繁模式是从条件FP树生成的。为一种频繁模式创建了一个条件FP树。我们用来挖掘条件树的递归函数接近深度优先搜索。它可以确保在继续进行操作之前,不再可以使用剩余的项目构建树。

使用SPARK实现算法

Spark中已经提供FTProwth的算法实现,实现起来非常简单,主要有两个参数
支持度(MinSupport)和置信度(MinConfidence).

    public void fpgrowth(SparkSession sparkSession) {List<Row> data = Arrays.asList(RowFactory.create(Arrays.asList("1 2 5".split(" "))),RowFactory.create(Arrays.asList("1 2 3 5".split(" "))),RowFactory.create(Arrays.asList("1 2".split(" "))));StructType schema = new StructType(new StructField[]{new StructField("items", new ArrayType(DataTypes.StringType, true), false, Metadata.empty())});Dataset<Row> itemsDF = sparkSession.createDataFrame(data, schema);FPGrowthModel model = new FPGrowth().setItemsCol("items").setMinSupport(0.5).setMinConfidence(0.6).fit(itemsDF);// 展示频繁项集model.freqItemsets().show();// 显示生成的关联规则model.associationRules().show();// 根据所有关联规则检查输入项,并将结果总结为预测model.transform(itemsDF).show();}

数据挖掘算法之FP-Growth算法介绍及Spark代码实现相关推荐

  1. FP Growth算法

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

  2. FP Growth算法详解

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

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

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

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

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

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

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

  6. 软件项目规模估算的3种方法---Loc估算法、FP估算法、PERT估算法

    软件项目规模估算的方法 Loc估算法 FP估算法 PERT估算法   软件规模是软件工作量的主要影响因素,常用的软件规模度量方法有三种,分别是Loc估算法.FP估算法.PERT估算法. Loc估算法 ...

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

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

  8. FP Tree算法原理

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

  9. fp算法例题_FP Tree算法原理总结

    在Apriori算法原理总结中,我们对Apriori算法的原理做了总结.作为一个挖掘频繁项集的算法,Apriori算法需要多次扫描数据,I/O是很大的瓶颈.为了解决这个问题,FP Tree算法(也称F ...

最新文章

  1. C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
  2. 送100本书!涵盖Java 、大数据、推荐系统、机器学习、黑客、数据库、手游、少儿编程等!免费包邮!...
  3. 华为轮值董事长郭平:打造VR/AR信息高速公路,支撑产业繁荣
  4. Flutter快速入门 五步搞定Flutter环境配置
  5. 生活的色彩——摄影作品欣赏
  6. 轻松搞定 Nginx 配置的好工具!
  7. 一张图看完成都云栖大会的精彩,请用心感受!
  8. 别人对程序员的印象都是加班?
  9. 神经网络用作分类器(附代码matlab)
  10. 构建根文件系统_Linux之构建文件系统
  11. idea git提交代码步骤
  12. mysql置疑原因_数据库置疑的处理办法
  13. Centos 7硬盘扩容
  14. Freeswitch服务+语音网关设备发送短信功能
  15. PS中截取一个圆形,画圆
  16. 年后第一场面试,被阿里P8测试专家虐惨了....
  17. 《HelloGitHub》第 81 期
  18. (附源码)python电影院信息管理系统 毕业设计 021844
  19. matlab 图片 并行,图片尺寸批量resize的matlab并行代码
  20. 手机之家签名工具_手机多开签名轻松简单

热门文章

  1. 如果报了前端培训班,还是学不会怎么办?
  2. 扰码原理以及matlab实现
  3. Android智能电视应用程序开发浅谈(三)
  4. 实现简易HTTP服务器
  5. hypermesh 连接单元_超低延时 13mm超大动圈单元 QCY T8S半入耳游戏耳机_蓝牙耳机
  6. 央行:规范金融业开源应用与发展的指导意见
  7. 一个小白轻松月入上万块的线上冷门项目
  8. html字符串自动加回车换行,【HTML】处理br换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决...
  9. 财路网每日原创推送:币圈灰姑娘,BSV弱市该如何逆袭
  10. 什么是智慧社区 智慧社区解决方案概括