MLlib--FPGrowth算法】的更多相关文章

一.简介 FPGrowth算法是关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-tree),但仍保留项集关联信息.在算法中使用了一种称为频繁模式树(Frequent Pattern Tree)的数据结构.FP-tree是一种特殊的前缀树,由频繁项头表和项前缀树构成. 相关术语: 1.项与项集 这是一个集合的概念,以购物车为例,一件商品就是一项[item],若干项的集合为项集,如{特步鞋,安踏运动服}为一个二元项集. 2.关联规则 关联规则用于表示数据内隐含的关…
关联规则挖掘最典型的例子是购物篮分析,通过分析可以知道哪些商品经常被一起购买,从而可以改进商品货架的布局. 1. 基本概念 首先,介绍一些基本概念. (1) 关联规则:用于表示数据内隐含的关联性,一般用X表示先决条件,Y表示关联结果. (2) 支持度(Support):所有项集中{X,Y}出现的可能性. (3) 置信度(Confidence):先决条件X发生的条件下,关联结果Y发生的概率. 2. Apriori算法 Apriori算法是常用的关联规则挖掘算法,基本思想是: (1) 先搜索出1项集…
一.FPGrowth算法理解 Spark.mllib 提供并行FP-growth算法,这个算法属于关联规则算法[关联规则:两不相交的非空集合A.B,如果A=>B,就说A=>B是一条关联规则,常提及的{啤酒}-->{尿布}就是一条关联规则],经常用于挖掘频度物品集.关于算法的介绍网上很多,这里不再赘述.主要搞清楚几个概念: 1)支持度support(A => B) = P(AnB) = |A n B| / |N|,表示数据集D中,事件A和事件B共同出现的概率: 2)置信度confid…
前言 对于如何发现一个数据集中的频繁项集,前文讲解的经典 Apriori 算法能够做到. 然而,对于每个潜在的频繁项,它都要检索一遍数据集,这是比较低效的.在实际的大数据应用中,这么做就更不好了. 本文将介绍一种专门检索频繁项集的新算法 - FP-growth 算法. 它只会扫描数据集两次,能循序挖掘出频繁项集.因此这种算法在网页信息处理中占据着非常重要的地位. FP-growth 算法基本原理 将数据存储到一种成为 FP 树的数据结构中,这样的一棵树包含了数据集中满足最小支持度阈值的所有节点信…
FP-Growth算法 FP-Growth(频繁模式增长)算法是韩家炜老师在2000年提出的关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-Tree),但仍保留项集关联信息:该算法和Apriori算法最大的不同有两点:第一,不产生候选集,第二,只需要两次遍历数据库,大大提高了效率. 算法伪代码 算法:FP-增长.使用FP-树,通过模式段增长,挖掘频繁模式. 输入:事务数据库D:最小支持度阈值min_sup. 输出:频繁模式的完全集. 1. 按以下步骤构造FP-…
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第12章 - 使用FP-growth算法来高效发现频繁项集. 基本概念 FP-growth算法 FP-growth算法的性能很好,只需要扫描两次数据集,就能生成频繁项集.但不能用于发现关联规则. 我想应该可以使用Apriori算法发现关联规则. FP代表频繁模式(Frequent Pattern). 条件模式基(conditional pattern base). 条件模式基是以所查找元素项为结…
上一篇介绍了关联规则挖掘的一些基本概念和经典的Apriori算法,Aprori算法利用频繁集的两个特性,过滤了很多无关的集合,效率提高不少,但是我们发现Apriori算法是一个候选消除算法,每一次消除都需要扫描一次所有数据记录,造成整个算法在面临大数据集时显得无能为力.今天我们介绍一个新的算法挖掘频繁项集,效率比Aprori算法高很多. FpGrowth算法通过构造一个树结构来压缩数据记录,使得挖掘频繁项集只需要扫描两次数据记录,而且该算法不需要生成候选集合,所以效率会比较高.我们还是以上一篇中…
系列文章:<机器学习实战>学习笔记 最近看了<机器学习实战>中的第11章(使用Apriori算法进行关联分析)和第12章(使用FP-growth算法来高效发现频繁项集).正如章节标题所示,这两章讲了无监督机器学习方法中的关联分析问题.关联分析可以用于回答"哪些商品经常被同时购买?"之类的问题.书中举了一些关联分析的例子: 通过查看哪些商品经常在一起购买,可以帮助商店了解用户的购买行为.这种从数据海洋中抽取的知识可以用于商品定价.市场促销.存活管理等环节. 在美国…
前言: 关于 FP-Growth 算法介绍请见:FP-Growth算法的介绍. 本文主要介绍从 FP-tree 中提取频繁项集的算法.关于伪代码请查看上面的文章. FP-tree 的构造请见:FP-Growth算法之 FP-tree 的构造(python). 正文: tree_miner.py\color{aqua}{tree\_miner.py}文件: #coding=utf-8 import tree_builder import copy class Tree_miner(object):…
算法实现: /** * FPGrowth算法的主要思想: * 1. 构造频繁1项集:遍历初始数据集构造频繁1项集,并作为项头表,建立将指向fpTree节点对应元素的引用 * 2. 构造FPTree:再次遍历初始数据集,对于每一条事务中的元素,根据频繁1项集中元素的顺序排序, * 由此建立FPTree,记录每条事务的节点在同一条路径上出再的节点次数; * 3. 逆序遍历在步骤1中构造的项头表,根据其提供的引用指针,找出fpTree中由该节点到根节点的路径, * 即生成每个频繁元素的条件模式基 *…