fpgrowth算法实战 mlib_【spark】41.Spark Mlib:FPGrowth算法

简介FP-Growth算法是韩嘉炜等人在2000年提出的关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-tree),但仍保留项集关联信息。在算法中使用了一种称为频繁模式树(Frequent Pattern Tree)的数据结构。FP-tree是一种特殊的前缀树,由频繁项头表和项前缀树构成。FP-Growth算法基于以上的结构加快整个挖掘过程。众所周知,Aprio...
摘要由CSDN通过智能技术生成

简介

FP-Growth算法是韩嘉炜等人在2000年提出的关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-tree),但仍保留项集关联信息。

在算法中使用了一种称为频繁模式树(Frequent Pattern Tree)的数据结构。FP-tree是一种特殊的前缀树,由频繁项头表和项前缀树构成。FP-Growth算法基于以上的结构加快整个挖掘过程。

众所周知,Apriori算法在产生频繁模式完全集前需要对数据库进行多次扫描,同时产生大量的候选频繁集,这就使Apriori算法时间和空间复杂度较大。但是Apriori算法中有一个很重要的性质:频繁项集的所有非空子集都必须也是频繁的。但是Apriori算法在挖掘额长频繁模式的时候性能往往低下,Jiawei Han提出了FP-Growth算法。

FP-Tree:将事务数据表中的各个事务数据项按照支持度排序后,把每个事务中的数据项按降序依次插入到一棵以 NULL为根结点的树中,同时在每个结点处记录该结点出现的支持度。

1、FPGrowth使用场景

FPGrowth关联规则算法主要用于发现频繁项集。如:沃尔玛啤酒加尿布。

2、FPGrowth基本概念

FPGrowth算法通过构造一个FPTree树结构来压缩数据记录,使得挖掘频繁项集只需要扫描两次数据记录,而且该算法不需要生成候选集合,所以效率会比较高。

那么,如何从购物篮里面发现尿布+啤酒这样的最佳组合呢?

我们以以下数据集为例,假设有如下的一张购物清单表,每条记录代表一次购物记录:

|TID|Items|

|-|-|

| T1 | { 面包 , 牛奶 } |

| T2 | { 面包 , 尿布 , 啤酒 , 鸡蛋 }|

| T3 | { 牛奶 , 尿布 , 啤酒 , 可乐 }|

| T4 | { 面包 , 牛奶 , 尿布 , 啤酒 }|

| T5 | { 面包 , 牛奶 , 尿布 , 可乐 }|

其中:

牛奶、面包叫做项;

{ 牛奶、面包}叫做项集;

项集出现的次数叫做支持度。

T* 表示用户每次的购物清单。

3、算法思想

该算法的核心就是生成一棵FPTree。前面提到过,FPTree是一种树结构。

构建的过程需要将表中的数据以及关系进行保存,我们先来看构建过程:

假设我们的最小支持度是3,这相当于是一个阈值。接下来我们开始按如下的步骤处理数据。

3.1、step1

扫描数据记录,生成一级频繁项集,并按出现次数由多到少排序,如下所示:

ItemCount

牛奶4

面包4

尿布4

啤酒3

可乐2(<3,删除)

鸡蛋1(

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值