FP-Growth算法

FP-Growth(频繁模式增长)算法是韩家炜老师在2000年提出的关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-Tree),但仍保留项集关联信息;该算法和Apriori算法最大的不同有两点:第一,不产生候选集,第二,只需要两次遍历数据库,大大提高了效率。

算法伪代码

算法:FP-增长。使用FP-树,通过模式段增长,挖掘频繁模式。

输入:事务数据库D;最小支持度阈值min_sup

输出:频繁模式的完全集。

1. 按以下步骤构造FP-树:

(a) 扫描事务数据库D 一次。收集频繁项的集合F 和它们的支持度。对F 按支持度降序排

序,结果为频繁项表L。

(b) 创建FP-树的根结点,以“null”标记它。对于D 中每个事务Trans,执行:

选择 Trans 中的频繁项,并按L 中的次序排序。设排序后的频繁项表为[p | P],其

中,p 是第一个元素,而P 是剩余元素的表。调用insert_tree([p | P], T)。该过程执行

情况如下。如果T 有子女N 使得N.item-name = p.item-name,则N 的计数增加1;否

则创建一个新结点N,将其计数设置为1,链接到它的父结点T,并且通过结点链结构

将其链接到具有相同item-name 的结点。如果P 非空,递归地调用insert_tree(P, N)。

2. FP-树的挖掘通过调用FP_growth(FP_tree, null)实现。该过程实现如下:

procedure FP_growth(Tree, α)

(1) if Tree 含单个路径P then

(2) for 路径 P 中结点的每个组合(记作β)

(3) 产生模式β ∪ α,其支持度support = β中结点的最小支持度;

(4) else for each a i 在 Tree 的头部 {

(5) 产生一个模式β = a i ∪ α,其支持度support = a i .support;

(6) 构造β的条件模式基,然后构造β的条件FP-树Treeβ;

(7) if Treeβ ≠ ∅ then

(8) 调用 FP_growth (Treeβ, β);}

点Build后生成的头表和FP-Tree

点Step后生成再点Next会一次加入一个事务项进行生成FP-Tree

最后生成完了FP-Tree后点击ConditionTreeMode进入FP-Tree挖掘模式,显示当前头表中选中项的条件FP-Tree

源码下载

程序下载

FP-Growth算法及演示程序的更多相关文章

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

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

  2. FP—Growth算法

    FP_growth算法是韩家炜老师在2000年提出的关联分析算法,该算法和Apriori算法最大的不同有两点: 第一,不产生候选集,第二,只需要两次遍历数据库,大大提高了效率,用31646条测试记录, ...

  3. 关联规则算法之FP growth算法

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

  4. Frequent Pattern (FP Growth算法)

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

  5. 机器学习(十五)— Apriori算法、FP Growth算法

    1.Apriori算法 Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策. Apriori算法采用了迭代的方法,先搜 ...

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

    Frequent Pattern 挖掘之二(FP Growth算法) FP树构造 FP Growth算法利用了巧妙的数据结构,大大降低了Aproir挖掘算法的代价,他不需要不断得生成候选项目队列和不断 ...

  7. FP Tree算法原理总结

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

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

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

  9. FP - growth 发现频繁项集

    FP - growth是一种比Apriori更高效的发现频繁项集的方法.FP是frequent pattern的简称,即常在一块儿出现的元素项的集合的模型.通过将数据集存储在一个特定的FP树上,然后发 ...

  10. Fp关联规则算法计算置信度及MapReduce实现思路

    说明:參考Mahout FP算法相关相关源代码. 算法project能够在FP关联规则计算置信度下载:(仅仅是单机版的实现,并没有MapReduce的代码) 使用FP关联规则算法计算置信度基于以下的思 ...

随机推荐

  1. 【云计算】marathon集群如何升级?

    Upgrading to a Newer Version We generally recommend creating a backup of the ZooKeeper state before ...

  2. 和我一起学python,控制语句 (life is short ,we need python)

    控制语句 if/elif/else if语句和一般编程语言一样,条件为true 执行 如: if true : print 'true'         <----if.else下对齐,要使用相 ...

  3. Java for LeetCode 206 Reverse Linked List

    Reverse a singly linked list. 解题思路: 用Stack实现,JAVA实现如下: public ListNode reverseList(ListNode head) { ...

  4. ABAP 将SAP用户ID转换成用户名

    FORM frm_coverted_name USING usrid TYPE sy-uname                        CHANGING name TYPE adrp-name ...

  5. ASM:《X86汇编语言-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载

        第八章是一个非常重要的章节,讲述的是实模式下对硬件的访问(这一节主要讲的是硬盘),还有用户程序重定位的问题.现在整理出来刚好能和保护模式下的用户程序定位作一个对比. ★PART1:用户程序的重 ...

  6. jboss服务器修改端口说明

    如果一台机器安装多个jboss服务器,就需要修改服务器的端口号,否则各个服务器之间会有冲突.目前确认需要修改的配置如下一.vi $JBOSS_HOME/server/default/conf/jbos ...

  7. Spring Data JPA初使用(转载)

    我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA. ...

  8. vs2010:fatal error LNK1123: 转换到 COFF 期间失败

    解决方法: 项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”.

  9. LeetCode 242 Valid Anagram

    Problem: Given two strings s and t, write a function to determine if t is an anagram of s. For examp ...

  10. POJ 1681 Painter's Problem (高斯消元)

    题目链接 题意:有一面墙每个格子有黄白两种颜色,刷墙每次刷一格会将上下左右中五个格子变色,求最少的刷方法使得所有的格子都变成yellow. 题解:通过打表我们可以得知4*4的一共有4个自由变元,那么我 ...