机器学习-FPGROWTH算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
47
代码实现-抽取条件模式基
48
代码实现-抽取条件模式基(验证)
49
代码实现-创建条件FP树
50
代码实现-创建条件FP树
51
代码实现-运行
52
示例:从新闻网站点击流中挖掘新闻报道-数据格式
53
示例:从新闻网站点击流中挖掘新闻报道-代码
• 在源数据集合中,包含将近100w条记录,该文件中的每一行代表某个用户浏览过的 新闻报道。一些用户只看过一篇报道,而有些用户看过2498篇报道,用户和报道被 编码成整数。
得到I5频繁项集:{{I2,I5},{I1,I5},{I2,I1,I5}}
32
FP-GROWTH算法原理-实例2-挖掘频繁项集 • 接着考虑I4,得到条件模式基:
<(I2,I1:1)>、<I2:1> • 构造条件FP-Tree
得到I4频繁项集:{{I2,I4}}
33
FP-GROWTH算法原理-实例2-挖掘频繁项集 • 然后考虑I3,得到条件模式基:
值,则该项集是频繁项集。 • 强关联规则:满足给定支持度和置信度阈值的关联规则 • 支持度:support(A->B) = P(AB) • 置信度:confidence(A->B) = P(A|B)
3
回忆Apriori算法
4
回忆Apriori算法
5
Apriori算法的挑战
挑战
多次数据库扫描 巨大数量的候补项集 繁琐的支持度计算
3 面包,牛奶,啤酒
4 薯片,鸡蛋,面包,牛奶,啤酒
5 薯片,鸡蛋,面包
6 鸡蛋,面包,啤酒
7 薯片,面包,牛奶
8 薯片,鸡蛋,面包,牛奶
9 薯片,鸡蛋,牛奶
10
FP-GROWTH算法原理-实例1-建立FP树
ID
Items
1 薯片,鸡蛋,面包,牛奶
2 薯片,鸡蛋,啤酒
3 面包,牛奶,啤酒
4 薯片,鸡蛋,面包,牛奶,啤酒
I1 I2 I3 I4 I5
6
7
6
2
2
• 定义min_sup=2,按照频数递减排序,删除频数小于最小支持度的商品。 重新排列得到频繁1-项目集F
I2 I1 I3 I4 I5 76622
20
FP-GROWTH算法原理-实例2-重新排序
Tid
1
I2
7
2
I1
6
3
I3
6
4
I4
2
5
I5
2
6
7
8
9
Items I2, I1,I5 I2,I4 I2,I3 I2, I1,I4 I1,I3 I2,I3 I1,I3 I2, I1,I3,I5 I2, I1,I3
21
FP-GROWTH算法原理-实例2-创建根结点和频繁项目表
Item-name Node-head
Null
I2
Null
I1
Null
I3
Null
I4
Null
I5
Null
22
FP-GROWTH算法原理-实例2-加入第一个事务(I2,I1,I5)
23
FP-GROWTH算法原理-实例2-加入第二个事务(I2,I4)
FP-GROWTH算法原理-实例1
ID
Items
1 牛奶,鸡蛋,面包,薯片
2 鸡蛋,爆米花,薯片,啤酒
3 牛奶,面包,啤酒
4 牛奶,鸡蛋,面包,爆米花,薯片,啤酒
5 鸡蛋,面包,薯片
6 鸡蛋,面包,啤酒
7 牛奶,面包,薯片
8 牛奶,鸡蛋,面包,黄油,薯片
9 牛奶,鸡蛋,黄油,薯片
• 要找总是一起购买的商 品,比如[薯片,鸡蛋] 就是一条频繁模式(规 律)。
得到I3的频繁项目集{{I2,I3},{I1,I3},{I2,I1,I3}}
35
FP-GROWTH算法原理-实例2-挖掘频繁项集 • 最后考虑I1,得到条件模式基:<(I2:4)> • 构造条件FP-Tree
得到I1的频繁项目集:{I2,I1}
36
FP-GROWTH算法实现-数据处理
格式化处理
项集 e,m,q,s,t,y,x,z x,s,r,o,n s,u,t,w,v,y,x,z q,p,r,t,y,x,z h,r,z,p,j z
29
FP-GROWTH算法原理-实例2-加入第八个事务(I2,I1,I3,I5)
30
FP-GROWTH算法原理-实例2-加入第九个事务(I2,I1,I3)
31
FP-GROWTH算法原理-实例2-挖掘频繁项集 • 首先考虑I5,得到条件模式基:
<(I2,I1:1)>、<I2,I1,I3:1> • 构造条件FP-Tree
16
FP-GROWTH算法原理-实例1-挖掘频繁项集 •Step4:从FP-Tree中找出频繁项集。 对于每一条路径上的节点,其count都设置为牛奶的count(路径中 最末尾的商品数)
17
FP-GROWTH算法原理-实例1-挖掘频繁项集 •Step4:从FP-Tree中找出频繁项集。 因为每一项末尾都是牛奶,可以把牛奶去掉,得到条件模式基,此时 的后缀模式是:牛奶。
机器学习-FP-GROWTH算法
李家豪
目录
Apriori算法和FP-GROWTH算法的比较 FP-GROWTH算法原理
FP-GROWTH代码实现(python) 示例:从新闻网站点击流中挖掘新闻报道
2
回忆Apriori算法
• 项集:项的集合称为项集,即商品的组合。 • k项集:k件商品的组合,不关心商品件数,仅商品的种类。 • 频繁项集:如果项集的相对支持度满足给定的最小支持度阈
设最小支持度数为:minsup=4 统计频数: • 牛奶6,鸡蛋7,面包7,薯片7,爆米花2,
啤酒4,黄油2. 降序排序: • 薯片7,鸡蛋7,面包7,牛奶6,啤酒4(删除
小于minsup的商品)
频繁1项集, 记为F1 9
FP-GROWTH算法原理-实例1-重新排序
ID
Items
1 牛奶,鸡蛋,面包,薯片
45
条件模式基定义 • 条件模式基是以所查找元素项为结尾的路径集合。每一条路径其实都是一
条前缀路径。简而言之,一条前缀路径就是介于所查找元素项与树根节点 之间的所有内容。 • 每一个频繁项的所有前缀路径(条件模式基):
46
代码实现-抽取条件模式基
eg:t的第1条前缀路径prefixPath=t,s,y,x,z;
改善Apriori: 基本想法
减少扫描数据库的次数 减少候选项集的数量 简化候选项集的支持度计算
6
FP-GROWTH算法优点 • 相比Apriori算法需要多次扫描数据库,FPGrowth只需要对数据库扫描2
次。 • 第1次扫描事务数据库获得频繁1项集。 • 第2次扫描建立一颗FP-Tree树。
7
5 薯片,鸡蛋,面包
6 鸡蛋,面包,啤酒
7 薯片,面包,牛奶
8 薯片,鸡蛋,面包,牛奶
9 薯片,鸡蛋,牛奶
Step3:把第二步重新排序后的记录,插入到fp-tree中 Step3.1:插入第一条(第一步有一个虚的根节点)
11
FP-GROWTH算法原理-实例1-建立FP树
ID
Items
1 薯片,鸡蛋,面包,牛奶
8
FP-GROWTH算法原理-实例1-统计频次
ID
Items
1 牛奶,鸡蛋,面包,薯片
2 鸡蛋,爆米花,薯片,啤酒
3 牛奶,面包,啤酒
4 牛奶,鸡蛋,面包,爆米花,薯片,啤酒
5 鸡蛋,面包,薯片
6 鸡蛋,面包,啤酒
7 牛奶,面包,薯片
8 牛奶,鸡蛋,面包,黄油,薯片
9 牛奶,鸡蛋,黄油,薯片
• Step1:先扫描数据库,统计所有商品的 出现次数(频数),然后按照频数递减排 序,删除频数小于最小支持度的商品。
2 薯片,鸡蛋,啤酒
3 面包,牛奶,啤酒
4 薯片,鸡蛋,面包,牛奶,啤酒
5 薯片,鸡蛋,面包
6 鸡蛋,面包,啤酒
7 薯片,面包,牛奶
8 薯片,鸡蛋,面包,牛奶
9 薯片,鸡蛋,牛奶
Step3.2:插入第二条。根结点不管,然后插入薯片,在 step3.1的基础上+1,则记为2;同理鸡蛋记为2;啤酒在 step3.1的树上是没有的,那么就开一个分支。
14
FP-GROWTH算法原理-实例1-建立FP树
图中左边的一列叫做头指针表,树中相同名称的节点要 链接起来,链表的第一个元素就是头指针表里的元素。 虚线连接起来的表示同一个商品,各个连接的数 字加起来就是该商品出现的总次数。
15
FP-GROWTH算法原理-实例1-挖掘频繁项集
•Step4:从FP-Tree中找出频繁项集。 遍历表头项中的每一项(以“牛奶:6” 为例),从FP-Tree中找到所有的“牛奶” 结点,向上遍历它的祖先结点,得到4条 路径,如表所示。
2 鸡蛋,爆米花,薯片,啤酒
3 牛奶,面包,啤酒
4
牛奶,鸡蛋,面包,爆米花,薯 片,啤酒
5 鸡蛋,面包,薯片
6 鸡蛋,面包,啤酒
7 牛奶,面包,薯片
8 牛奶,鸡蛋,面包,黄油,薯片
9 牛奶,鸡蛋,黄油,薯片
Step2:对每一条数据记录,按照F1重新排序。
ID
Items
1 薯片,鸡蛋,面包,牛奶
2 薯片,鸡蛋,啤酒
18
FP-GROWTH算法原理-实例2
• 把例子简化一下,请看以下实例2
Tid
Items
1
I1,I2,I5
2
I2,I4
3
I2,I3
4
I1,I2,I4
5
I1,I3
6
I2,I3
7
I1,I3
8
I1,I2,I3,I5
9
I1,I2,I3
19
FP-GROWTH算法原理-实例2-统计频次
• 先扫描数据库,统计所有商品的出现次数(频数)
<(I2,I1:2)>、<I2:2>、 <I1:2> • 构造条件FP-Tree
由于此树不是单分支路径,因此需要递归挖掘I3
34
FP-GROWTH算法原理-实例2-挖掘频繁项集 • 递归考虑I3,此时得到I1条件模式基<(I2:2)>,即I1, I3的条件模式基为<(I2:2)> • 构造条件FP-Tree
12
FP-GROWTH算法原理-实例1-建立FP树
ID
Items
Step3.3:插入第三条
1 薯片,鸡蛋,面包,牛奶
2 薯片,鸡蛋,啤酒
3 面包,牛奶,啤酒
4 薯片,鸡蛋,面包,牛奶,啤酒
5 薯片,鸡蛋,面包
6 鸡蛋,面包,啤酒
7 薯片,面包,牛奶
8 薯片,鸡蛋,面包,牛奶
9 薯片,鸡蛋,牛奶
13
FP-GROWTH算法原理-实例1-建立FP树
ID
Items
1 薯片,鸡蛋,面包,牛奶
2 薯片,鸡蛋,啤酒
3 面包,牛奶,啤酒
4 薯片,鸡蛋,面包,牛奶,啤酒
5 薯片,鸡蛋,面包
6 鸡蛋,面包,啤酒
7 薯片,面包,牛奶
8 薯片,鸡蛋,面包,牛奶
9 薯片,鸡蛋,牛奶
同理,剩余记录依次插入fp-tree中。
37
代码实现-FP树数据结构
38
代码实现-构造FP树步骤
39
代码实现-构造FP树
40
代码实现-构造FP树
41
代码实现-构造FP树(updateTree函数)
42
代码实现-构造FP树(updateHeader函数)
43
代码实现-构造FP树(验证)
44
代码实现-挖掘频繁项集步骤 • 从构建好的FP树中抽取频繁项集的步骤如下: (1)从FP树中获取条件模式基; (2)利用条件模式基,构建一个条件FP树; (3)迭代重复(1)(2),直到树包含一个元素项为止。
54
示例:从新闻网站点击流中挖掘新闻报道-结果
55
谢谢!
56
24
FP-GROWTH算法原理-实例2-加入第三个事务(I2,I3)
25
FP-GROWTH算法原理-实例2-加入第四个事务(I2,I1,I4)
26
FP-GROWTH算法原理-实例2-加入第五个事务(I1,I3)
27
FP-GROWTH算法原理-实例2-加入第六个事务(I2,I3)
28
FP-GROWTH算法原理-实例2-加入第七个事务(I1,I3)
代码实现-抽取条件模式基
48
代码实现-抽取条件模式基(验证)
49
代码实现-创建条件FP树
50
代码实现-创建条件FP树
51
代码实现-运行
52
示例:从新闻网站点击流中挖掘新闻报道-数据格式
53
示例:从新闻网站点击流中挖掘新闻报道-代码
• 在源数据集合中,包含将近100w条记录,该文件中的每一行代表某个用户浏览过的 新闻报道。一些用户只看过一篇报道,而有些用户看过2498篇报道,用户和报道被 编码成整数。
得到I5频繁项集:{{I2,I5},{I1,I5},{I2,I1,I5}}
32
FP-GROWTH算法原理-实例2-挖掘频繁项集 • 接着考虑I4,得到条件模式基:
<(I2,I1:1)>、<I2:1> • 构造条件FP-Tree
得到I4频繁项集:{{I2,I4}}
33
FP-GROWTH算法原理-实例2-挖掘频繁项集 • 然后考虑I3,得到条件模式基:
值,则该项集是频繁项集。 • 强关联规则:满足给定支持度和置信度阈值的关联规则 • 支持度:support(A->B) = P(AB) • 置信度:confidence(A->B) = P(A|B)
3
回忆Apriori算法
4
回忆Apriori算法
5
Apriori算法的挑战
挑战
多次数据库扫描 巨大数量的候补项集 繁琐的支持度计算
3 面包,牛奶,啤酒
4 薯片,鸡蛋,面包,牛奶,啤酒
5 薯片,鸡蛋,面包
6 鸡蛋,面包,啤酒
7 薯片,面包,牛奶
8 薯片,鸡蛋,面包,牛奶
9 薯片,鸡蛋,牛奶
10
FP-GROWTH算法原理-实例1-建立FP树
ID
Items
1 薯片,鸡蛋,面包,牛奶
2 薯片,鸡蛋,啤酒
3 面包,牛奶,啤酒
4 薯片,鸡蛋,面包,牛奶,啤酒
I1 I2 I3 I4 I5
6
7
6
2
2
• 定义min_sup=2,按照频数递减排序,删除频数小于最小支持度的商品。 重新排列得到频繁1-项目集F
I2 I1 I3 I4 I5 76622
20
FP-GROWTH算法原理-实例2-重新排序
Tid
1
I2
7
2
I1
6
3
I3
6
4
I4
2
5
I5
2
6
7
8
9
Items I2, I1,I5 I2,I4 I2,I3 I2, I1,I4 I1,I3 I2,I3 I1,I3 I2, I1,I3,I5 I2, I1,I3
21
FP-GROWTH算法原理-实例2-创建根结点和频繁项目表
Item-name Node-head
Null
I2
Null
I1
Null
I3
Null
I4
Null
I5
Null
22
FP-GROWTH算法原理-实例2-加入第一个事务(I2,I1,I5)
23
FP-GROWTH算法原理-实例2-加入第二个事务(I2,I4)
FP-GROWTH算法原理-实例1
ID
Items
1 牛奶,鸡蛋,面包,薯片
2 鸡蛋,爆米花,薯片,啤酒
3 牛奶,面包,啤酒
4 牛奶,鸡蛋,面包,爆米花,薯片,啤酒
5 鸡蛋,面包,薯片
6 鸡蛋,面包,啤酒
7 牛奶,面包,薯片
8 牛奶,鸡蛋,面包,黄油,薯片
9 牛奶,鸡蛋,黄油,薯片
• 要找总是一起购买的商 品,比如[薯片,鸡蛋] 就是一条频繁模式(规 律)。
得到I3的频繁项目集{{I2,I3},{I1,I3},{I2,I1,I3}}
35
FP-GROWTH算法原理-实例2-挖掘频繁项集 • 最后考虑I1,得到条件模式基:<(I2:4)> • 构造条件FP-Tree
得到I1的频繁项目集:{I2,I1}
36
FP-GROWTH算法实现-数据处理
格式化处理
项集 e,m,q,s,t,y,x,z x,s,r,o,n s,u,t,w,v,y,x,z q,p,r,t,y,x,z h,r,z,p,j z
29
FP-GROWTH算法原理-实例2-加入第八个事务(I2,I1,I3,I5)
30
FP-GROWTH算法原理-实例2-加入第九个事务(I2,I1,I3)
31
FP-GROWTH算法原理-实例2-挖掘频繁项集 • 首先考虑I5,得到条件模式基:
<(I2,I1:1)>、<I2,I1,I3:1> • 构造条件FP-Tree
16
FP-GROWTH算法原理-实例1-挖掘频繁项集 •Step4:从FP-Tree中找出频繁项集。 对于每一条路径上的节点,其count都设置为牛奶的count(路径中 最末尾的商品数)
17
FP-GROWTH算法原理-实例1-挖掘频繁项集 •Step4:从FP-Tree中找出频繁项集。 因为每一项末尾都是牛奶,可以把牛奶去掉,得到条件模式基,此时 的后缀模式是:牛奶。
机器学习-FP-GROWTH算法
李家豪
目录
Apriori算法和FP-GROWTH算法的比较 FP-GROWTH算法原理
FP-GROWTH代码实现(python) 示例:从新闻网站点击流中挖掘新闻报道
2
回忆Apriori算法
• 项集:项的集合称为项集,即商品的组合。 • k项集:k件商品的组合,不关心商品件数,仅商品的种类。 • 频繁项集:如果项集的相对支持度满足给定的最小支持度阈
设最小支持度数为:minsup=4 统计频数: • 牛奶6,鸡蛋7,面包7,薯片7,爆米花2,
啤酒4,黄油2. 降序排序: • 薯片7,鸡蛋7,面包7,牛奶6,啤酒4(删除
小于minsup的商品)
频繁1项集, 记为F1 9
FP-GROWTH算法原理-实例1-重新排序
ID
Items
1 牛奶,鸡蛋,面包,薯片
45
条件模式基定义 • 条件模式基是以所查找元素项为结尾的路径集合。每一条路径其实都是一
条前缀路径。简而言之,一条前缀路径就是介于所查找元素项与树根节点 之间的所有内容。 • 每一个频繁项的所有前缀路径(条件模式基):
46
代码实现-抽取条件模式基
eg:t的第1条前缀路径prefixPath=t,s,y,x,z;
改善Apriori: 基本想法
减少扫描数据库的次数 减少候选项集的数量 简化候选项集的支持度计算
6
FP-GROWTH算法优点 • 相比Apriori算法需要多次扫描数据库,FPGrowth只需要对数据库扫描2
次。 • 第1次扫描事务数据库获得频繁1项集。 • 第2次扫描建立一颗FP-Tree树。
7
5 薯片,鸡蛋,面包
6 鸡蛋,面包,啤酒
7 薯片,面包,牛奶
8 薯片,鸡蛋,面包,牛奶
9 薯片,鸡蛋,牛奶
Step3:把第二步重新排序后的记录,插入到fp-tree中 Step3.1:插入第一条(第一步有一个虚的根节点)
11
FP-GROWTH算法原理-实例1-建立FP树
ID
Items
1 薯片,鸡蛋,面包,牛奶
8
FP-GROWTH算法原理-实例1-统计频次
ID
Items
1 牛奶,鸡蛋,面包,薯片
2 鸡蛋,爆米花,薯片,啤酒
3 牛奶,面包,啤酒
4 牛奶,鸡蛋,面包,爆米花,薯片,啤酒
5 鸡蛋,面包,薯片
6 鸡蛋,面包,啤酒
7 牛奶,面包,薯片
8 牛奶,鸡蛋,面包,黄油,薯片
9 牛奶,鸡蛋,黄油,薯片
• Step1:先扫描数据库,统计所有商品的 出现次数(频数),然后按照频数递减排 序,删除频数小于最小支持度的商品。
2 薯片,鸡蛋,啤酒
3 面包,牛奶,啤酒
4 薯片,鸡蛋,面包,牛奶,啤酒
5 薯片,鸡蛋,面包
6 鸡蛋,面包,啤酒
7 薯片,面包,牛奶
8 薯片,鸡蛋,面包,牛奶
9 薯片,鸡蛋,牛奶
Step3.2:插入第二条。根结点不管,然后插入薯片,在 step3.1的基础上+1,则记为2;同理鸡蛋记为2;啤酒在 step3.1的树上是没有的,那么就开一个分支。
14
FP-GROWTH算法原理-实例1-建立FP树
图中左边的一列叫做头指针表,树中相同名称的节点要 链接起来,链表的第一个元素就是头指针表里的元素。 虚线连接起来的表示同一个商品,各个连接的数 字加起来就是该商品出现的总次数。
15
FP-GROWTH算法原理-实例1-挖掘频繁项集
•Step4:从FP-Tree中找出频繁项集。 遍历表头项中的每一项(以“牛奶:6” 为例),从FP-Tree中找到所有的“牛奶” 结点,向上遍历它的祖先结点,得到4条 路径,如表所示。
2 鸡蛋,爆米花,薯片,啤酒
3 牛奶,面包,啤酒
4
牛奶,鸡蛋,面包,爆米花,薯 片,啤酒
5 鸡蛋,面包,薯片
6 鸡蛋,面包,啤酒
7 牛奶,面包,薯片
8 牛奶,鸡蛋,面包,黄油,薯片
9 牛奶,鸡蛋,黄油,薯片
Step2:对每一条数据记录,按照F1重新排序。
ID
Items
1 薯片,鸡蛋,面包,牛奶
2 薯片,鸡蛋,啤酒
18
FP-GROWTH算法原理-实例2
• 把例子简化一下,请看以下实例2
Tid
Items
1
I1,I2,I5
2
I2,I4
3
I2,I3
4
I1,I2,I4
5
I1,I3
6
I2,I3
7
I1,I3
8
I1,I2,I3,I5
9
I1,I2,I3
19
FP-GROWTH算法原理-实例2-统计频次
• 先扫描数据库,统计所有商品的出现次数(频数)
<(I2,I1:2)>、<I2:2>、 <I1:2> • 构造条件FP-Tree
由于此树不是单分支路径,因此需要递归挖掘I3
34
FP-GROWTH算法原理-实例2-挖掘频繁项集 • 递归考虑I3,此时得到I1条件模式基<(I2:2)>,即I1, I3的条件模式基为<(I2:2)> • 构造条件FP-Tree
12
FP-GROWTH算法原理-实例1-建立FP树
ID
Items
Step3.3:插入第三条
1 薯片,鸡蛋,面包,牛奶
2 薯片,鸡蛋,啤酒
3 面包,牛奶,啤酒
4 薯片,鸡蛋,面包,牛奶,啤酒
5 薯片,鸡蛋,面包
6 鸡蛋,面包,啤酒
7 薯片,面包,牛奶
8 薯片,鸡蛋,面包,牛奶
9 薯片,鸡蛋,牛奶
13
FP-GROWTH算法原理-实例1-建立FP树
ID
Items
1 薯片,鸡蛋,面包,牛奶
2 薯片,鸡蛋,啤酒
3 面包,牛奶,啤酒
4 薯片,鸡蛋,面包,牛奶,啤酒
5 薯片,鸡蛋,面包
6 鸡蛋,面包,啤酒
7 薯片,面包,牛奶
8 薯片,鸡蛋,面包,牛奶
9 薯片,鸡蛋,牛奶
同理,剩余记录依次插入fp-tree中。
37
代码实现-FP树数据结构
38
代码实现-构造FP树步骤
39
代码实现-构造FP树
40
代码实现-构造FP树
41
代码实现-构造FP树(updateTree函数)
42
代码实现-构造FP树(updateHeader函数)
43
代码实现-构造FP树(验证)
44
代码实现-挖掘频繁项集步骤 • 从构建好的FP树中抽取频繁项集的步骤如下: (1)从FP树中获取条件模式基; (2)利用条件模式基,构建一个条件FP树; (3)迭代重复(1)(2),直到树包含一个元素项为止。
54
示例:从新闻网站点击流中挖掘新闻报道-结果
55
谢谢!
56
24
FP-GROWTH算法原理-实例2-加入第三个事务(I2,I3)
25
FP-GROWTH算法原理-实例2-加入第四个事务(I2,I1,I4)
26
FP-GROWTH算法原理-实例2-加入第五个事务(I1,I3)
27
FP-GROWTH算法原理-实例2-加入第六个事务(I2,I3)
28
FP-GROWTH算法原理-实例2-加入第七个事务(I1,I3)