数据挖掘2015最新精品课程完整课件(第4讲)---各种频繁项集挖掘算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

p
fcam:2, cb:1
p:2
m:1
步骤2: 建立条件FP-树

对每个模式库

计算库中每个项的支持度 用模式库中的频繁项建立FP-tree
{} m-条件模式库:fca:2, fcab:1
头表 f:4 Item frequency head f 4 c 4 c:3 b:1 a 3 a:3 b 3 m 3 m:2 b:1 p 3

FP-数组

FP-Growth*通过提出FP-数组省掉了前一次遍 历。 设T为一个条件FP-树,I={i1,i2,…,im}为 T.header中的项集。 T的一个频繁对数组(FP数组)是一个(m-1) (m-1)矩阵,矩阵中的 每个元素对应I中一个有序项目对的计数。

举例
TID 1 2 3 4 5 6 7 8 9 10 Items {A,B} {B,C,D} {A,C,D,E} {A,D,E} {A,B,C} {A,B,C,D} {B,C} {A,B,C} {A,B,D} {B,C,E}
n.item-项目 n.count-项目在当前分支的支持度计数 n.parent-父结点 n.children-孩子结点 n.link-下一个包含item的结点
头表H item-项目 link-指向树中第一个 包含item的结点

每条分支代表一个项集,每个结点 代表一个项目
建立 FP-树
TID 100 200 300 400 500 步骤: Items bought (ordered) frequent items {f, a, c, d, g, i, m, p} {f, c, a, m, p} {a, b, c, f, l, m, o} {f, c, a, b, m} minsup = 0.5 {b, f, h, j, o} {f, b} {b, c, k, s, p} {c, b, p} {a, f, c, e, l, p, m, n} {f, c, a, m, p} {} 头表
{} f:4 c:3 a:3 m:2 b:1 b:1 c:1 b:1 p:1
头表
条件模式库
item c cond. pattern base f:3
Item frequency head f 4 c 4 a 3 b 3 m 3 p 3
a
b m
fc:3
fca:1, f:1, c:1 fca:2, fcab:1

通过对两个(k-1)-子集的tid-list求交来计算k-项集的 支持度
A 1 4 5 6 7 8 9
B 1 2 5 7 8 10


AB 1 5 7 8
ECLAT算法--2

按照等价类进行挖掘
挖掘全部与A有关的项集
挖掘全部与B有关的项集


优点:快速计算项集的支持度;扫描数据库的次数较少(最 好的情况下仅需两次扫描) 不足:要保存大量的tid-lists的中间结果
null
A:2 C:1 C:1
D:1
D:1
E的条件FP-树
Arr{E}
举例--2



由Arr{E}可知,只需进一步递归生成DE的条件FP-树 该树中的频繁项目只有A 得到的频繁项集 ADE:2
null
A:2
DE的条件FP-树
主要内容

FP-Growth 垂直挖掘 矩阵表示


数据库的水平表示与垂直表示

完备:

包含了频繁项集挖掘所需的全部信息 去除不相关信息—不包含非频繁项 支持度降序排列: 支持度高的项在FP-tree中 共享的机会也高 存储开销一般比原数据库小,在Connect数 据库上,存储压缩率超过100

紧密


用FP-Growth算法挖掘频繁项集

对每个项目,生成它的条件模式库,然后 是它的条件FP-树 对每个新生成的条件FP-树,重复这个步骤 直到结果FP-tree为空
+
b1:m1 C2:k2
C1:k1
C3:k3
C3:k3
单前缀路径举例
一分为二
单路径部分



找出P中所有可能的组 合情况 支持度等于该项集中各 项目的最小支持度 freq itemsets(P) = {(a:10), (b:8),(c:7), (ab:8), (ac:7), (bc:7), (abc:7)}.

经大量实验发现,80%的CPU时间用于遍历FP-树。

能否减少FP-树遍历的时间来提高算法的效率?
构造条件FP-树的遍历

对每个条件FP-树TX的Header Table中的每个项 目i,构建条件FP-树TX {i}需要两次遍历条件 FP-树TX:

先找出X的条件模式库。 得到X的条件FP-树TX 。

能否不产生候选项集?
FP-Growth算法

J. Han, J. Pei, and Y. Yin. Mining frequent patterns without candidate generation. SIGMOD’ 00.

利用FP-树对数据库进行压缩表示

自顶向下建树

递归使用分而治之的策略来挖掘频繁项集
FP-Growth*

G Grahne, J Zhu: Fast Algorithms for Frequent Itemset Mining Using FP-Trees. IEEE Transaction on Knowledge and Data Engineering, 17(10): (2005)


分而治之

根据头表中1-项集的顺序分割频繁项集


F-list=f-c-a-b-m-p 包含p的项集 包含m,但不包含p的项集 … 包含c,但不包含a,b,m,p的项集 频繁项集f

完全且无冗余
步骤1: 从 FP-树到条件模式库

从FP-树的头表开始 按照每个频繁项的连接遍历FP-树 列出能够到达此项的所有前缀路径,得到条件模式库
其余部分



添加一个空结点作为根 结点 利用FP-Growth方法挖掘 其中的全部频繁项集 freq pattern set(Q)= {(d:4), (e:3), ( f :3), (d f :3)}.
两部分的连接

对freq itemsets (Q)中的每个项集,P均可以看 做是其条件FP-树
a
c
{(fc:3)}
{(f:3)}
{(f:3, c:3)}
{(f:3)}
f
Empty
Empty
递归挖掘条件FP-树
{}
f:3
{}
f:3 “am”的条件模式库: (fc:3)
c:3
am-条件 FP-tree
c:3
a:3
m-条件 FP-tree
{}
“cm”的条件模式库: (f:3) f:3
cm-条件 FP-tree
1. 扫描一次数据库,得到1-频繁 Item frequency head f 4 项集,并删除非频繁项目 c 4 3 2. 把1-频繁项集按支持度递减排 a b 3 序 m 3 3. 再次扫描数据库,建立FP-树 p 3
f:4
c:3 b:1
c:1
b:1
a:3
m:2 p:2 b:1 m:1
p:1
FP-树的优势
数据库的位图表示



行代表事务 列代表项目 若项目i在事务t中 出现,则(t,i)=1, 否则(t,i)=0 存储空间小 可利用位操作, 速度快
主要内容

FP-Growth 垂直挖掘 矩阵表示


倒排矩阵--1

M EI-Hajj, O R Zaï ane. Inverted matrix: efficient discovery of frequent items in large datasets in the context of interactive mining.KDD’03

自底向上挖掘频繁项集
无需产生候选项集的频繁项集挖掘

用局部频繁项目,由短至长的扩展频繁项集

“abc”是频繁项集 得到所有包含 “abc”的事务: DB|abc 若“d”在DB|abc中是局部频繁的 abcd便是一 个频繁项集


FP-树

树T


根结点 其它结点n:

倒排矩阵--5

假设给定最小支持度为5,得到子事务
倒排矩阵--6

适于交互式挖掘 改变支持度往往需要重新挖掘,代价较 高
利用等价类来划分频繁项集格
null null A B C D A B C D
AB
AC
AD
BC
BD
CD
AB
AC
BC
AD
BD
CD
ABC
ABD
ACD
BCD
ABC
ABD
ACD
BCD
ABCD
ABCD
(a) Prefix tree
(b) Suffix tree
ECLAT算法--1

M J Zaki. Scalable Algorithms for Association Mining. IEEE Transaction on Knowledge And Data Engineering, 2000, 12 (3)
Transaction Database
null
T{Ø}
A:7
B:5
B:3
C:1
D:1
C:3 D:1
Header table Item Pointer A B C D E
C:3 D:1
D:1 E:1
E:1
E:1
D:1
min_sup=2
举例--1

由Arr{Ø}可知,E的条件FP-树中的频繁项目有A,C,D。 由Header table中E的索引,构建E的条件FP-树。 得到的频繁项集 DE:2, CE:2, AE:2
{} “cam”条件模式库: (f:3) f:3
cam-条件 FP-tree
FP-树中的单前缀路径

{} a1:n1 a2:n2 a3:n3
b1:m1 C2:k2 C1:k1
挖掘过程可分为两个部分 将单前缀路径和其它部分一分为二 连接两部分的挖掘结果
{}
r1

r1
=
a1:n1
a2:n2 a3:n3
各种频繁项集挖掘算法
主要内容

FP-Growth 垂直挖掘 矩阵表示


Apriori算法的瓶颈

候选—验证的挖掘方式存在以下问题:

多次扫描数据库I/O代价较高 挖掘长的频繁项集将产生大量的候选项集 如挖掘 i1i2…i100 扫描数据的次数: 100 候选项集的数量:
100 100 100 100 30 ... 2 1 1.27 *10 1 2 100
freq itemsets (Q)×freq itemsets (P),所得到的项 集的支持度等于参与连接的两个项集中支持 度最小的项集的支持度


比如(d:4)×freq pattern set(P) ={(ad:4), (bd:4), (cd:4), (abd:4), (acd:4), (bcd:4), (abcd:4)}。


把事务和项目关联起来:行代表项目,列代表 事务 每个元素是一个二元组(r,c),记录与当前行所 代表的项目相邻出现的项目的信息,其中r代 表相邻项目的行,c代表相邻项目的列
倒排矩阵--2

扫描一遍数据库,把项目按支持度由低到高排列
倒排矩阵--3

按照排列后的顺序对各个事务进行重新排列
倒排矩阵--4
c:1
b:1 p:1
{}
包含m的频繁项集

p:2
m:1
m f:3 fm, cm, am, fcm, fam, cam, c:3 fcam a:3
m-conditional FP-tree
通过建立条件FP-树得到频繁集
项 p m b 条件模式库 {(fcam:2), (cb:1)} {(fca:2), (fcab:1)} {(fca:1), (f:1), (c:1)} 条件FP-树 {(c:} {(f:3, c:3, a:3)} Empty
相关文档
最新文档