数据关联——FP-Growth算法

来源:互联网 发布:网络言论自由的利弊 编辑:程序博客网 时间:2024/05/29 09:56

数据关联的基本概念:

数据关联规则挖掘的一个典型例子是购物篮分析。关联规则研究有助于发现交易数据库中不同商品(项)之间的联系,找出顾客购买行为模式,如购买了某一商品对购买其他商品的影响,分析结果可以应用于商品货架布局、货存安排以及根据购买模式对用户进行分类。

关联规则的相关术语如下:

(1.1)项与项集

这是一个集合的概念,在一个购物清单中的一个商品就是一个项,清单中所有商品的集合就是项集。这个项集可以是多元的。比如(Item1,Item2,Item3)就是一个三元的项集。

(1.2)关联规则

关联的规则和强度主要有以下三个概念:

(1.2.1)支持度(Support)

支持度是指在所有的项集中(即用于统计的所有购物清单)某一项或者某一项集出现的可能性。如(Item1,Item2)出现的概率。

这是作为关联规则的第一个门槛。体现的是某一项(Item1)或某一项集(Item1,Item2)的频繁度。用过设置最小支持度(minsup)来剔除出现次数较少的无意义的项和项集。

比如设定minsup为10%,购物清单的总数为1000,其中购买啤酒的为10个。那么啤酒的支持度为10/1000=1%。小于最小支持度。所以剔除该项。

(1.2.2)置信度(Confidence)

置信度表示的是在Item1项发生的先决条件下,Item2发生的概率。体现的是项与项之间的关联关系。同样可以设置最小置信度进行过滤筛选。

比如,购买啤酒的用户为1000个,这一千个客户中同时购买面包的为100个。那么(啤酒,面包)的置信度为10%。

(1.2.3)提升度(Lift)

提升度与置信度同样是反应规则的可靠性,可看作是置信度的一种补偿规则。

提升度的公式为:Confidence(Item1=>item2)/Support(Item2)或Support(Item1,item2)/(Support(Item1) * Support(Item2))。

引进这个概念的意义在于衡量项集之间的独立性。比如,一般超市购物清单的关联性认为,lift < 1表示两个项是相斥的,即搭配销售反而会影响客户的购物欲望。lift = 1表示两者之间没有关系。一般认为lift > 3才认为数据挖掘的规则是有价值的。

不过不同的场景最小支持度,置信度,提升度的确定未必完全相同~~


FP-Growth算法

 FP-Growth(频繁模式增长)算法是韩家炜老师在2000年提出的关联分析算法,采取如下分析策略:
(2.1)构造FP-Tree
(2.1.1)扫描数据库一次。收集频繁项的集合和它们的支持度,按支持度降序排列。结果为频繁表
(2.1.2)创建FP-Tree的根节点。递归调用将数据库中的数据压入到FP-Tree中。这个文字描述不清楚。参照如下算法演示。

FP-Growth算法演示

3.1 原始数据如下:
I2,I1,I5
I2,I4
I2,I3
I2,I1,I4
I1,I3
I2,I3
I1,I3
I2,I1,I3,I5
I2,I1,I3

3.2 扫描数据库得到频繁项
I1, 6
I2, 7
I3, 6 
I4, 2
I5, 2

3.3 定义最小支持度为2,重新排列频繁表
I2, 7
I1, 6
I3, 6
I4, 2 
I5, 2

3.4 重新整理后的数据为:
I2,I1,I5
I2,I4
I2,I3
I2,I1,I4
I3,I1
I2,I3
I3,I1
I2,I3,I1,I5
I2,I3,I1

3.5 创建根节点和频繁项目表

并依次插入数据

java实现FP-Growth算法

以下是java实现fpgrowth的代码及解析直接复制代码就可以调试点击打开链接





0 1
原创粉丝点击