之前介绍的apriori算法中因为存在许多的缺陷,例如进行大量的全表扫描和计算量巨大的自然连接,所以现在几乎已经不再使用

在mahout的算法库中使用的是PFP算法,该算法是FPGrowth算法的分布式运行方式,其内部的算法结构和FPGrowth算法相差并不是十分巨大

所以这里首先介绍在单机内存中运行的FPGrowth算法

还是使用apriori算法的购物车数据作为例子,如下图所示:

TID为购物车项的编号,i1-i5为商品的编号

FPGrowth算法的基本思想是,首先扫描整个购物车数据表,计算每个商品的支持度,并从大到小从上往下排序,得到如下表所示

从底部最小支持度开始,逐一构建FP树

构建过程如下图:

最终构建出的FP树如下图

将这个FP树和支持度表关联起来如下图:

支持度表中的每一项都有一个存放指向FP树中对应节点的指针,例如第一行指向i2:7;第二行指向i1:4,因为i1节点还出现在FP树中的其他位置,所谓i1:4节点中还存放着指向i1:2节点的指针

通过少数的全表扫描构建好的FP树将购物车没有规律的数据变成了一个有迹可循的树形结构,并且省去了进行巨大的自然连接的运算

通过FP树挖掘出关联规则:

通过上图的FP树,我们可以根据每个商品得到该商品对应的条件模式基,条件FP树和产生的频繁模式

例如i5

在FP树中可以看到,从根节点到i5:1的路径有两条:

i2:7-->i1:4-->i5:1

i2:7-->i14-->i3:2-->i5:1

i2:7-->i1:4和i2:7-->i14-->i3:2就是i5的条件模式基,因为最终到达的节点肯定是i5,所以将i5省略

记为{i2,i1:1}{i2,i1,i3:1},为什么每个条件模式基的计数为1呢?虽然i2和i1的计数都很大,但是由于i5的计数为1,最终到达i5的重复次数也只能为1。所以条件模式基的计数是根据路径中节点的最小计数来决定的

根据条件模式基,我们可以得到该商品的条件FP树,例如i5:

根据条件FP树,我们可以进行全排列组合,得到挖掘出来的频繁模式(这里要将商品本身,如i5也算进去,每个商品挖掘出来的频繁模式必然包括这商品本身)

根据FP树得到的全表如下:

至此,FPGrowth算法输出的结果就是产生的频繁模式,FPGrowth算法使用的是分而治之的方式,将一颗可能十分巨大的树形结构通过构构建条件FP子树的方式分别处理

但是在商品数据十分巨大的情况下,FPGrowth算法所构建的FP树可能会大到计算机内存都无法加载,这时就要使用分布式的FPGrowth,PFP算法来进行计算

本文参考书:《数据挖掘概念与技术》

数据挖掘算法之关联规则挖掘(二)FPGrowth算法的更多相关文章

  1. 数据挖掘进阶之关联规则挖掘FP-Growth算法

    数据挖掘进阶之关联规则挖掘FP-Growth算法 绪 近期在写论文方面涉及到了数据挖掘,需要通过数据挖掘方法实现软件与用户间交互模式的获取.分析与分类研究.主要涉及到关联规则与序列模式挖掘两块.关联规 ...

  2. 数据挖掘算法之-关联规则挖掘(Association Rule)

    在数据挖掘的知识模式中,关联规则模式是比较重要的一种.关联规则的概念由Agrawal.Imielinski.Swami 提出,是数据中一种简单但很实用的规则.关联规则模式属于描述型模式,发现关联规则的 ...

  3. 数据挖掘系列 (1) 关联规则挖掘基本概念与 Aprior 算法

    转自:http://www.cnblogs.com/fengfenggirl/p/associate_apriori.html 数据挖掘系列 (1) 关联规则挖掘基本概念与 Aprior 算法 我计划 ...

  4. 数据挖掘算法之-关联规则挖掘(Association Rule)(购物篮分析)

    在各种数据挖掘算法中,关联规则挖掘算是比較重要的一种,尤其是受购物篮分析的影响,关联规则被应用到非常多实际业务中,本文对关联规则挖掘做一个小的总结. 首先,和聚类算法一样,关联规则挖掘属于无监督学习方 ...

  5. 数据挖掘算法之关联规则挖掘(一)apriori算法

    关联规则挖掘算法在生活中的应用处处可见,几乎在各个电子商务网站上都可以看到其应用 举个简单的例子 如当当网,在你浏览一本书的时候,可以在页面中看到一些套餐推荐,本书+有关系的书1+有关系的书2+... ...

  6. [数据挖掘课程笔记]关联规则挖掘 - Apriori算法

    两种度量: 支持度(support)  support(A→B) = count(AUB)/N (N是数据库中记录的条数) 自信度(confidence)confidence(A→B) = count ...

  7. 关联规则挖掘之apriori算法

    前言: 众所周知,关联规则挖掘是数据挖掘中重要的一部分,如著名的啤酒和尿布的问题.今天要学习的是经典的关联规则挖掘算法--Apriori算法 一.算法的基本原理 由k项频繁集去导出k+1项频繁集. 二 ...

  8. 嫌弃Apriori算法太慢?使用FP-growth算法让你的数据挖掘快到飞起

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第20篇文章,我们来看看FP-growth算法. 这个算法挺冷门的,至少比Apriori算法冷门.很多数据挖掘的教材还会 ...

  9. 数据挖掘-关联分析 Apriori算法和FP-growth 算法

    •1.关联分析概念 关联分析是从大量数据中发现项集之间有趣的关联和相关联系. ​ •定义:1.事务:每一条交易称为一个事务,如上图包含5个事务.2.项:交易的每一个物品称为一个项,例如豆奶,啤酒等. ...

随机推荐

  1. Kuangbin 带你飞 数位DP题解

    以前一直不知道该咋搞这个比较好. 感觉推起来那个数字好麻烦.后来有一种比较好的写法就是直接的DFS写法.相应的ismax表示当前位是否有限制. 数位DP也是有一种类似模版的东西,不过需要好好理解.与其 ...

  2. JSTL c:url

    c:url 标签 jstl 实例代码和用法.     <c:url>标记格式化成一个字符串格式的URL,并将其存储到变量中.这个标签会在必要时自动执行URL重写. var属性指定的变量将包 ...

  3. 病毒&烦人的幻灯片

    <病毒>传送门 <烦人的幻灯片>传送门 病毒 描述 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改 ...

  4. H5中使用Web Storage来存储结构化数据

    在上一篇对Web Storage的介绍中,可以看到,使用Storage保存key—value对时,key.value只能是字符串,这对于简单的数据来说已经够了,但是如果需要保存更复杂的数据,比如保存类 ...

  5. TS 数据流分析学习

    TS 流.包结构以及同步 1. TS 流: 可以将TS流理解为一种单一码流.混合码流. 单一码流:TS流的基本组成单位是长度为188字节的TS包. 混合码流:TS流有多种数据组成,一个TS包中的数据可 ...

  6. matlab保存图片成eps格式不全,导致latex中图片显示不全的问题

    我们经常会遇到这样的问题.用将matlab生成的图保存EPS格式后,用GSVIEW打开后,可以看到图片显示不全.遇到这种情况是,我们可以使用dvipdf——dvips的方法来生成PDF,这样生成的pd ...

  7. ES6的特性(译+注解)

    介绍 ES6,也叫ECMAScript2015(以下统称ES6),是ECMAScript标准的最新版本.这个标准在2015年6月份被正式批准.ES6是js语言很有意义的一次更新,也是2009年ES5被 ...

  8. javascript+dom编程艺术 读后感

    利用上班空闲2,3天把这本书看完了,整体来说,这本书很不错.虽然我js有一定的基础了,jquery基础也会使用,但是我觉得对js应该有个循序渐进的理解,所以还是把js系统的学习一遍.我看技术类的书总数 ...

  9. Dart类

    Dart中没有访问控制符,无论类还是方法默认都是public 1.构造函数 构造函数可以没有方法体,并且this可以直接在传参时直接对实例赋值 Bicycle(this.cadence, this.s ...

  10. CodeForces - 981G Magic multisets

    假设我们可以对每个位置快速维护一个数组,记录每个位置有哪些值是已经出现了的,哪些值是没有出现的,这样就可以决定修改的时候到底是 *2 还是 +1了. 但是很可惜,并不存在功能这么强大的数组,所以只能另 ...