下载 - 西安电子科技大学软件学院

Download Report

Transcript 下载 - 西安电子科技大学软件学院

数据挖掘与商务智能
Data Mining & Business Intelligence
第七章
链接分析与图挖掘
西安电子科技大学 软件学院
主讲人:黄健斌
内容提纲

链接分析与权威资源发现
 “权威性”度量标准
 基于链接关系分析的网页排序算法
PageRank
 基于权威度和中心度的网页互排序算法 HITS

频繁子图模式挖掘
 频繁子树模式挖掘算法TreeMiner
 频繁子图模式挖掘算法FSG和gSpan
 闭合频繁子图模式挖掘算法CloseGraph

链接分析与图模式挖掘商务应用案例
 PageRank算法的简单实现与验证
内容提纲

链接分析与权威资源发现
 “权威性”度量标准
 基于链接关系分析的网页排序算法
PageRank
 基于权威度和中心度的网页互排序算法 HITS

频繁子图模式挖掘
 频繁子树模式挖掘算法TreeMiner
 频繁子图模式挖掘算法FSG和gSpan
 闭合频繁子图模式挖掘算法CloseGraph

链接分析与图模式挖掘商务应用案例
 PageRank算法的简单实现与验证
度量标准 (1)

度数中心度 (Degree Centrality)
 节点的度(Degree),即链接到它的边的数目,
在社会网络文献中有时称作Degree Centrality

紧密度中心度 (Closeness Centrality)

中介度中心度 (Betweenness Centrality)
度量标准 (2)

特征向量中心度 (Eigenvector Centrality)
 假设每个节点
i 起始中心度为 xi ,再将中心度不断改变
为其邻居节点中心度的和,即
xi   Aij x j
'
j
A ij是邻接矩阵中第
 其中,
i 行第 j 列的元素。用矩阵的记
号还可写为 x'  Ax(x 是元素为 xi 的向量)。
 这样,在重复
t 次之后的中心度 x(t) 为:
x(t )  At x(0)
度量标准 (3)
 将x(0)
写为由邻接矩阵特征向量 v i 构成的线性组合的形
式:
x(0)   ci vi
x(t )  At x(0)
i
 这时,会有:
t
k 

x(t )  A  c v   c k v  k  c
v
 k 
t
i
i
i
i
t
i
i
i
i
t
1
i
i
i
1
其中 k i 是 A 的特征值,k1是其中值最大的。则对所有 i  1
k i k1  1
t
 因此,在 t  时,x(t )  c1 k1 v1 ,即向量中心度的极限与其
邻接矩阵对应的主要特征向量成正比。即:
Ax  k 1 x
度量标准 (4)
xi  k 1
1
A
ij
xj
Ax  k 1 x
j
 从上述的公式可以发现一个特性:中心度大的节点要不
它有很多邻居,要不它有比较重要的邻居,或者两者兼
有。
B
A
入度为0的点其中心度为0,则级
联导致中间所有起于入度为0的点
的度也为0
度量标准 (5)

Katz中心度 (Katz Centrality)
 给每个节点(忽略其位置或邻居中心度)一个较小量
的初始中心度,即:
xi    Aij x j  
(1)
j
其中, ,  都是正常数
 其矩阵表示为:
x  Ax   1
其中,1 是向量 (1,1,1…),则 x   ( I A) 1 ,由于不
关心中心度的绝对量值,只在乎哪个节点的中心度最
高或最低,因此  取值不重要,一般设定   1,则:
1
x  ( I A) 1
1
(2)
度量标准 (6)
 参数 
控制着式(1)中特征向量项和常数项比例。当   0
时,式(1)中只存在常数项,所有点的中心度都一样为 
 当把
 从 0 增大的时候,中心度也增加,渐渐地就会
1
到一个发散点,这时式(2)中的 ( I A) 发散,即:
det ( A   1 I)  0
对应特征向量和特征值定义:Av  kv, ( A  kI ) v  0
有: 1等价于邻接矩阵的特征值。
1
 当  增加到   k1(A的最大的特征值)时,行列式
第一次跨过0。因此,如果我们想要中心度的表达式收
敛,应该挑选一个   1 k1
度量标准 (7)
 在计算时,由于矩阵求逆操作的时间复杂度在 O(n3) ,
通常采用式(3)进行迭代求解
x  Ax   1
'
(3)
 式(1)的扩展形式:
xi    Aij x j   i
j
可得
x  (I A) 
1
 当存在一个高中心度节点时,其所指向的其他节点也
都得到了高中心度。但它们确实是吗?
内容提纲

链接分析与权威资源发现
 “权威性”度量标准
 基于链接关系分析的网页排序算法
PageRank
 基于权威度和中心度的网页互排序算法 HITS

频繁子图模式挖掘
 频繁子树模式挖掘算法TreeMiner
 频繁子图模式挖掘算法FSG和gSpan
 闭合频繁子图模式挖掘算法CloseGraph

链接分析与图模式挖掘商务应用案例
 PageRank算法的简单实现与验证
1.基于链接关系分析的网页排序算法 PageRank
xj
xi    Aij out  
kj
j
(4)

但是存在一个问题,如果网络中存在出度为0的节
点,即 k iout  0,那么式(4)就无法确定大小。

出度为0的节点对其他节点的中心度贡献为0,我
们可以手工设定没有出度的节点,其 k iout  1,或
其他非零值。
PageRank (续)

这时,有:
x  A D1 x   1
xi    Aij
j
xj

out
kj
其中,1是向量 (1,1,1…),D 是元素为 Dii  max (k iout ,1) 的
对角阵
转换后, x   (I A D1) 1 ,同前面一样,设   1
有:
1

x  (I A D ) 1  D (DA) 1
1
1
这个中心度标准就称为 PageRank
1
(4)
PageRank (续)

x  ( I A) 1
1
x  (I A D ) 1
1
同前面一样,对应  的取值应该小于 A D 最大特征值对
1
1
应的倒数。

同Katz中心度一样PageRank也可以做如下的扩展:
xi    Aij
j
xj
 i
out
kj
x  D (D A) 
1
(2)
PageRank (续)
PageRank (续)
R(1)=R(2)+R(3)/2+R(5)/4+R(6)/2
=0.166+0.141/2+0.179/4+0.045/2
=0.30375
内容提纲

链接分析与权威资源发现
 “权威性”度量标准
 基于链接关系分析的网页排序算法
PageRank
 基于权威度和中心度的网页互排序算法 HITS

频繁子图模式挖掘
 频繁子树模式挖掘算法TreeMiner
 频繁子图模式挖掘算法FSG和gSpan
 闭合频繁子图模式挖掘算法CloseGraph

链接分析与图模式挖掘商务应用案例
 PageRank算法的简单实现与验证
2.基于权威度和中心度的网页互排序算法 HITS

HITS: Hyperlink-Induced Topic Search
 创建
Focused 子图
 计算 Hubs 和 Authorities
HITS (续)

问题描述:
 给定由网页之间超链接构成的网络和一个查询
 为这个查询找到最权威的网页

查询类型:
 指定查询:
“NetScape是否支持Java1.1的代码签名API?”
 广义主题查询:
“查找与Java编程语言相关的信息”
 相似网页查询:
“找到与java.sun.com相似的网页”
HITS (续)

(一) 创建 Focused 子图
(1)对于一个特定的字符串 σ,用 Q 表示所有包含σ 的网
页的集合
(2)需要寻找一个网页集合 S  满足:
相对较小、其中的相关网页要多、包含多数权威网页
(3)利用基于文本的搜索引擎(AltaVista,Hotbot)查询 σ ,取
其排名靠前的前 t (t一般设置为200左右)个网页,将其记
为根集 R ,但是其中网页之间链接很少,“structureless”
(4)对于该主题比较权威的网页,尽管可能不在根集中,但
存在很大的可能性与根集中的网页之间存在链接,这时我
们就扩展根集,得到基本集 S 
HITS (续)
d一般取50左右
HITS (续)

处理 G[ S  ] 中的边(链接) :
如果两个网页域名不同
保留
 Intrinsic: 如果域名相同,则主要起导航作用,对于提
供与权威网页相关信息的关系不大
删除
 Transverse:
 域名:URL第一次字符串
http://www.gamelan.com/
http://java.sun.com/

最终得到图 G
HITS (续)

(二) 计算Hubs 和Authorities
 在图 G 中,用入度值的降序对网页节点进行排序
问题:可能前面都很好的和主题相关,但是其他的却
和主题相差很远,那么怎样来去掉那些高入度节点但
和主题相关较差的网页?
 我们发现,与初始查询相关的权威页面不仅有比较大
的入度,而且由于其都面对同一主题,那么在指向它
们的页面集合中一定会有重叠
 Hub页面:与多个权威页面都有链接
 正是这些hub页面将权威页面统一到一个主题上,去除
了无联系的高入度页面
HITS (续)

Hub页面和Authority页面之间存在一种互相增强关系:一
个好的hub页面指向多个好的权威页面;一个好的权威页
面被多个好的hub页面所指向
HITS (续)
 p

对每一个页面p,给其一个非负的Authority权重 x
 p
y
一个非负的Hub权重

根据相互增强关系有:
在数量上,网页 p 指向多个较大 x 值的页面,则它能够
得到一个比较大的 y 值;如果 p 被多个较大 y 值的页面
指向,则它能够得到比较大的 x 值

I操作(更新x 权重): x p  
y
q 
q:( q , p )E
O操作(更新y权重):
y
 p

x
q 
q:( p , q )E
,
HITS (续)
x
 p

y
q 
q:( q , p )E
y
 p

x
q 
q:( p , q )E
HITS (续)
a
c
d
b
x
 p

y
q 
0

0
A
0

0

y
 p
0 1 1

0 1 1
0 0 0

0 0 0 

q:( q , p )E
 xa   0
  
 xb   0
 x   1
 c 
  1
 xd  
0 0 0   ya 
  
0 0 0   yb 

1 0 0   yc 
  
1 0 0   y d 
x
q 
q:( p , q )E
 ya   0
  
 yb   0
 y   0
 c 
 y  0
 d 
0 1 1   xa 
  
0 1 1   xb 
 

0 0 0
  xc 
0 0 0   x d 
X  AT  Y
Y  AX
X  AT  A  X
Y  A  AT  Y
HITS (续)




c一般取5~10
HITS (续)

结果:
HITS (续)

针对相似网页查询的处理:
 如果一个网页
p 被多次引用,p 附近最权威的网页潜在
的充当了与 p 有关的广义主题总结的角色

改动:
 对于广义主题查询,在基于文本的搜索引擎中找到前
t
个包含搜索字符的页面
 对于相似网页查询,在基于文本的搜索引擎中找到前 t
个指向页面 p 的页面
HITS (续)

结果:
内容提纲

链接分析与权威资源发现
 “权威性”度量标准
 基于链接关系分析的网页排序算法
PageRank
 基于权威度和中心度的网页互排序算法 HITS

频繁子图模式挖掘
 频繁子树模式挖掘算法TreeMiner
 频繁子图模式挖掘算法FSG和gSpan
 闭合频繁子图模式挖掘算法CloseGraph

链接分析与图模式挖掘商务应用案例
 PageRank算法的简单实现与验证
频繁子图模式挖掘的意义

在各种图模式中,频繁子结构可以用来刻画图解的特征,
区分不同的图组群,对图进行分类和聚类,构造图索引和
更方便的在图数据库中进行相似性搜索。

通过对比不同类中频繁图的支持度,发现HIV甄别数据集
中活跃的化学结构;
把频繁结构作为特征对化合物分类,利用频繁图挖掘技术
研究蛋白质结构族;
使用频繁图模式在图数据库中建立图索引和进行相似性搜
索;
……



内容提纲

链接分析与权威资源发现
 “权威性”度量标准
 基于链接关系分析的网页排序算法
PageRank
 基于权威度和中心度的网页互排序算法 HITS

频繁子图模式挖掘
 频繁子树模式挖掘算法TreeMiner
 频繁子图模式挖掘算法FSG和gSpan
 闭合频繁子图模式挖掘算法CloseGraph

链接分析与图模式挖掘商务应用案例
 PageRank算法的简单实现与验证
3.频繁子树模式挖掘算法TreeMiner
频繁子树相关概念:




树的大小:给定一棵树记为T,树T中所有节点的数量总和
称为树的大小,记为|T|
根节点:根节点记为r,树中其他任何节点都是根节点r
的
0
子孙节点
1
1
1
1
4
k阶子树:给定一棵树T,树S
是树T 的子树,树S 的大小
0
为k,则树S 就是树T 的k
阶子树
2
4
2
4
2
4
1 3
1
1
2
40
13
4
树的深度:给定一棵树记为T,根节点r
,对于任何一个节
树4
树2
树3
1
1
1
点v,从根节点r
到节点v
经过的路径长度就是节点v
树1
2
3
4
2
4
2 的深 4
1
4
2度,这些节点深度中最大值,就是整个树的深度也称为树
3
4
2树1的大小为6
4
2 树3 4
2
树4 4
树23
高。2 树13
4
0
1
1
2
1
树2
4
树1
1
树1中节点0就是根节点
2
3
3
树4
树3
4
2
4
4
2
4
树4
树2
树3
树2是树1的4阶子树,树3是树1的3阶子树
树1
树1中节点1的节点深度为1
树1高为2
TreeMiner (续)
节点关系:给定树 T  (V , E ),如果 x, y  V并且存在一条从x
到y 的路径,这时x就被称为是y 的一个祖先,记为 x  p y
其中p 是从 x 到 y 的路径的长度。如果 x 1 y ,即x 是直接
祖先,这时 x 就是 y 的父节点,y 是 x 的子节点。如果x,y
有同一父节点,则x,y是兄弟节点。

0
1
1
1
4
2
2
1
3
4
树1
3
树2
4
2
4
树3
树1中,节点0是节点1的父节点,节点2和节点3
是兄弟节点,它们有同一父节点为节点1
2
4
树4
TreeMiner (续)




有序树:给定一棵树,按照一种遍历方法记录树中节点时,
各个节点的位置是具有一定顺序的,并且各个节点之间的
顺序是不能任意改变的,则这样的树称为有序树,否则称
为无序树。
森林:森林是由很多棵不相交的树组成,这些若干棵树的
集合就是森林。
标号树:给定一棵树T(r),标号集L,点集N,仅当存在一
L
种映射 f : N  L,所有的节点 v N,且 f (v)  l ,则树T
为标号树
有序标号树:一棵树既是有序树又是标号树则为有序标号
树。一个带标签的有序树,记为T=(r,V,E,L)。其中,r表示
根节点,v表示树中节点的集合,E表示所有边的集合,L
表示所有节点标签的集合
TreeMiner (续)

最右路径及最右叶子节点:给定一棵树T,以前序遍历方
法遍历树T,树T的最右路径就是从根节点r 到最后一个被
遍历的节点之间的路径。这个最后一个被遍历的节点就是
最右叶子节点,根节点r 到最右叶子节点之间的路径长度
就是最右路径长度。
T (a tree in D)
n0, s=[0,6]
n1, s=[1,5]
n2, s=[2,4]
n3, s=[3,3]
1
0
1
3
2
2
2
n6, s=[6,6]
n5, s=[5,5]
n4, s=[4,4]
树T中最右路径就是n0到n6的路
径,n6就是最叶子节点
TreeMiner (续)

树的拓扑编码表示:采用深度优先遍历的方法,前序遍历
树中所有节点,每个节点对应一个标签,用此方法获得一
个字符串序列,这个序列就可以用来表示树的拓扑编码,
当一个节点回溯到该节点的父节点时添加-1到字符串中。
T (a tree in D)
n0, s=[0,6]
n1, s=[1,5]
n2, s=[2,4]
1
0
1
3
2
2
2
n6, s=[6,6]
n5, s=[5,5]
n4, s=[4,4]
树T的字符串编码为
0 1 3 1 -1 2 -1 -1 2 -1 -1 2 -1
TreeMiner (续)

三元组编码:有序树中每个节点采用三元组(tid,scope,high)
编码。
其中,tid  D ,表示这个节点所在树的标号。
点 x V根据它在树T 的深度优先遍历的位置 n x 进行编
号。用T(x) 表示根在x 的子树,y 表示 x 下最右叶子节点
(即T(x)中编号最大的子孙)。这时,x 点的scope给定为
s(x)=[x,y]或[ n x , n y ]。
T (a tree in D)
n0, s=[0,6]
0
high表示该节点在树中的高度。
n1, s=[1,5]
n2, s=[2,4]
n3, s=[3,3]
1
1
3
2
2
2
n5, s=[5,5]
n4, s=[4,4]
TreeMiner (续)



支持度:用 T (S )表示 k 阶子树S 在树 T 中出现的次数,如
果 T ( S )  0,则d T ( S )  1 ;如果  T ( S )  0,则 d T ( S )  0 ,子树S
在数据库D中的支持度则为  (S )  TD d T (S ) ,支持度一般以
百分比的形式给出,即  (S) D
频繁子树:给定一个森林和一个最小支持度阈值 minsup
(0  min sup  1),如果一个子树不小于最小阈值 minsup
时,这个子树被称为频繁子树
完全子树:给定两棵树T=(V,E,L)和T1=(V1,E1,L1),满足一
下条件则为完全子树: (1) V 1  V (2) E1  E (3) 在T1中子树
的节点集V1及边集E1在连接顺序上同在树T中的节点以及
V
边的连接顺序保持一致 (4)树T中的任意节点 v 
,如果节
点v也在树T1的V1中,则节点v的所有子孙节点也应该在树
T1的节点集V1中(5)如果树T是有序树,则T中和T1中也
应该有相同的顺序。这时T1就是T的完全子树。
TreeMiner (续)


诱导子树:给定树 S  (V s , E s ) 和 T  (V t , E t ),我们说S是T的
一个同构子树当且仅当存在一个映射  : V s  V t,使得当
( x, y )  E s。如果 是满射,这时S和T是
( ( x),  ( y ))  E t 时,
同构的。当且仅当S是T的一个同构子树且 保持标签,
即 保留了父子关系,同时还有点的标签 l ( x)  l ( ( x)), x V s
S就称为是 T  (V t , E t ) 的一个诱导子树。
完全子树:S  (V s , E s )被称为是 T  (V t , E t ) 的一个嵌入子树,
 : V s 满足:(1)仅当
V t
当且仅当存在一个一对一映射
( x, y )  E s
)
l ( x)  l (
( x)), x V s
时  ( x) p  ( y(2)
,即对嵌入子树来说,

保留了祖先后代关系和标签
完全子树是诱导子树的子集,而诱导子树是嵌入子树的子集
TreeMiner (续)
0
1
1
0
4
2
2
1
3
4
树1
3
树2
4
2
4
2
树3
树2是树1的完全子树,树3是树1的诱导子树
树4是树1的嵌入子树
频繁子树如无显式说明,均指嵌入子树
4
树4
TreeMiner (续)

两个k阶子树X,Y在同一等价类(Equivalence Class)
中,当且仅当它们有共同的前k-1个前缀。即,用
X,Y表示两个数的字符编码,用函数 p(X,i) 返回
第i个节点的前缀,则X,Y在同一等价类中当且仅
当 p(X,k-1)=p(Y,k-1),也就是说,一个等价类中任
意两个成员之间只在最后一个节点的位置上不同。
TreeMiner (续)
等价类则由前缀和元素列表表示
TreeMiner (续)

用P表示k-1阶前缀子树,
[ P]k 1 表示它的等价类,如
i

[P
]
x
果 (x,i) 是类的一个元素,则记作 i
,用记号Px
表示向P中添加了(x,i)后形成的新的前缀树,Pix 也
称作是P的一次扩展(Extension)。

引理1:用P表示一个根为 n 0 ,最右叶子节点为 nr
的前缀子树,用R(P)表示从根到 nr 的最右路径。
即 R( P)  {ni : ni has scope [i, r ]} ,则 ( x, i)  [ P] 当且仅
当 ni  R(P)
表明P的合法扩展 Pix 只能通过将标签x绑定到P中
从根到最右叶子节点的路径上的节点。
TreeMiner (续)

定理1(Class Extension):用k-1阶子树P表示编码为P的前缀
i
类。(x,i),(y,j)表示类中的任两个元素。用k阶子树 Px 表示P
i
i
[
在添加元素(x,i)后的一次扩展。P x] 表示 Px 所有可能扩展的
集合。定义两元素之间的  操作,即 ( x, i)  ( y, j ) 如下:
(1) i=j:
(a) 如果 P   ,将(y,j) 和(y, ni)添加到 [ Pix],其中 ni 是点
(x,i)在树 [ Pix]上深度优先遍历的位置
i
[
P


P
(b) 如果
,将(y,j+1)添加到 x]
(2) i>j:
i
[
P
将(y,j)添加到 x]
(3) i<j:
没有可能的新候选项
TreeMiner (续)
TreeMiner (续)

TREEMINER 采用DFS来搜索频繁子树,采用一个称为
scope-list的树表现方式来实现支持度的快速计数。

用X表示树T的一个k阶子树,用 x k表示X的最后一个节点,
用L(X)表示X的scope-list。Scope-list中的每个元素都是一个
三元组 (t,m,s)。其中,t表示子树X所在树的tid,m是X的长
xk
度为k-1的前缀匹配标签,s是 的范围。

前缀匹配标签给出了T中匹配前缀的节点的位置。由于给
定的前缀可能在树中出现多次,则X也就需要不仅标签而
且需要范围。
TreeMiner (续)
TreeMiner (续)
TreeMiner (续)
[P]中任意两个子树的scope-list 连接(join) 是基于它们scopelist的区间代数
 用 s x  [l x , u x ] s y  [l y , u y ]表示节点x, y的范围。
s x 严格小于 s y ,记作 s x  s y ,当且仅当 u x  l y 没有重叠
s x 包含 s y,记作 s x  s y ,当且仅当 l x  l y u x  u y 真子集
i
 仅当i=j时,候选项(y,j+1)被加入到 [ P x ],即意味着在候选
子树中y 是 x 的孩子节点。要检查该子树是否出现在tid为t
的输入树T中,需搜索是否存在元组 (t x , m x , s x)  L( x)
(t y , my , s y)  L( y) 使得:
(1) t x  t y  t (2) m y  m x  m (3) s y  s x
i
m
P
y
如果都满足,则扩展旧前缀 P 的匹配标签
,获得新前缀 x
i
的匹配标签 (my  l x) ,将元组 (t y ,{my  l x}, s y) 加入到 [ P x] 中
(y,j+1)的scope-list中

TreeMiner (续)

候选项(y,j)表示y是x的兄弟,为了检查(y,j)是否出现在tid为t
的树T中,需检查是否存在元组 (t x , m x , s x)  L( x) (t y , my , s y)  L( y)
使得:
(1) t y  t x  t (2) m y  m x  m (3) s x  s y
i
[
P
(
,
{

},
)
如果这些条件满足,将元组 t y my l x s y 加入到 x] 中(y,j)
的scope-list中
内容提纲

链接分析与权威资源发现
 “权威性”度量标准
 基于链接关系分析的网页排序算法
PageRank
 基于权威度和中心度的网页互排序算法 HITS

频繁子图模式挖掘
 频繁子树模式挖掘算法TreeMiner
 频繁子图模式挖掘算法FSG和gSpan
 闭合频繁子图模式挖掘算法CloseGraph

链接分析与图模式挖掘商务应用案例
 PageRank算法的简单实现与验证
频繁子图模式挖掘算法
频繁子图挖掘的基本概念





图g的顶点集合用V(g)表示,边集合用E(g)表示
标号函数 L 将顶点或边映射到标号
'
'
图g是另一个图 g 的子图,如果存在从图 g 到图 g 的子图
同构。
给定一个标记的图数据集 D  {G1 , G 2 ,, G n} ,图 g 的支持
度support(g) (或频度 frequency(g))定义为 g 作为子图在
D中出现的百分比(或次数)
频繁图是支持度不小于最小支持度阈值的min_sup的图
频繁子图模式挖掘算法

频繁子图挖掘的基本方法有两种:基于Apriori方
法和模式增长方法。

在基于Apriori方法的频繁子图挖掘中,对频繁图
的搜索开始于小“规模”的图,按照自底向上的
方式产生具有附加顶点,边或路径的候选图。

在基于模式增长方法的频繁子图挖掘中,能够采
用宽度优先搜索和深度优先搜索,对每个发现的
图g,递归地进行扩展,知道发现所有嵌入g的频
繁图为止。一旦没有频繁产生,递归停止。
基于Apriori算法的频繁子结构挖掘框架
算法:AprioriGraph 基于Apriori的频繁子结构挖掘算法
输入:
图数据集D;
最小支持度阈值min_sup.
输出:
频繁子结构的集合 S k
方法:
S 1  数据集中的单个频繁元素
调用AprioriGraph(D,min_sup, S 1)
Procedure AprioriGraph(D,min_sup, S 1 )
(1) S k 1  
(2) for each 频繁图 g i  S k do
(3) for each 频繁图 g j  S k do
(4)
for each 通过合并图 g i 和 g j 形成的规模为(k+1)的图 g do
(5)
if g 在D 中是频繁的并且 g  S k 1 then
(6)
将g插入 S k 1
(7) if S k 1   then
(8) AprioriGraph(D,min_sup, S k 1 )
(9) return
4. FSG算法:Frequent Subgraph Discovery

FSG算法采用基于边的候选策略,在每一次调用AprioriGraph时通过增加一条边来扩大子结构的规模。两个大小
为k 的模式合并,当且仅当它们共享相同的具有看k-1条边
的子图,该子图称作核。这里,图的规模取图中边的个数。
新形成的候选包括核和来自大小为k 的模式中的两条附加
边。
+
FSG: 两个子结构模式及其潜在的候选
基于Pattern Growth的频繁子结构挖掘框架
算法:PatternGrowthGraph。简单的基于模式增长的频繁子结构挖掘
输入:
频繁图g
图数据集D
最小支持度阈值min_sup
输出:
频繁图的集合S
方法:
S 
调用PatternGrowthGraph(g,D,min_sup,S)
procedure PatternGrowthGraph(g,D,min_sup,S)
(1) if g  S then return
(2) else 将g插入S
(3) 扫描D 一次,找出所有的边e 使g 可以扩展为 g  x e
(4) for each frequent g  x e do
(5) PatternGrowthGraph( g  x e,D,min_sup,S)
(6) return
基于Pattern Growth的频繁子结构挖掘框架

PatternGrowthGraph 简单但是效率低。它的瓶颈是
扩展图的低效率。同样的图可能重复发现多次。

例如,可能存在n 个不同的n-1条边的图,可以扩
展成相同的n 条边的图。相同的重复发现导致计
算的低效率。称二度发现的图为复制图(duplicate
graph)。

尽管PatternGrowthGraph 的第1行删除复制图,但
是复制图的产生和检测可能增加工作量。为了减
少复制图的产生,每个频繁图应该尽可能适当地
扩展。典型的就是gSpan算法
5. gSpan算法(基于图的子结构模式挖掘算法)


为了遍历图,gSpan算法采用深度优先搜索。初始,随机
选择一个起始顶点,并且对图中访问过的顶点做标记。被
访问过的顶点集合反复扩展,直到建立一个完全的深度优
先搜索 (DFS) 树。(图中加粗的边)
在构造DFS树时,顶点的访问顺序形成了一个线性序。使
用下标来记录这一次序,其中i<j意味着在进行深度优先搜
索的时候 v i在 v j之前被访问。用DFS树做下标的图G记作 GT
T称为G的一个DFS下标。
X
X
a
b
b
a
Z
Y
a)
v2
X
a
v1
X
b
X
v0
Z
v3
Y
b)
Y
a
v1
X
b
a
v0
b
v2
b
b
a
Y
Z
c)
v0
v3
X
v1
a
a
v2
v3
X
b
d)
Z
gSpan(续)

给定一棵DFS树T,称T 的起始节点 v0 为根。最后访问的节
点 vn 称作最右节点。从 v0 到 vn 的直接路径称作最右路径
X
X
a
b
b
a
Z
Y
a)
v2
X
a
v1
X
b
X
v0
Z
v3
Y
b)
Y
a
v1
X
b
a
v0
b
v2
b
b
a
Y
v0
Z
v3
c)
v1 ,
v3 )
图 b) 的最右路径是 ( v 0 ,
图 d) 的最右路径是 ( v 0 ,
v1 ,
v2,
v3 )
X
v1
a
a
v2
v3
X
b
d)
Z
gSpan(续)

a)
给定图G 和G 的DFS树T ,一条新边e 可以添加到最右节
点和最右路径上另一个节点之间(后向扩展);或者可以
引进一个新的节点并且连接到最右路径上的节点(前向扩
展)。由于这两种扩展都发生在最右路径上,因此称为最
右扩展。 (黑点为最右路径)
b)
c)
d)
e)
f)
图 b,c 是后向扩展,图 d~g是前向扩展
g)
gSpan(续)

由于同一个图可能有许多DFS下标,我们选择其中一个作
为基本下标(base subscripting),并且只进行DFS下标的
最右扩展。否则,最右扩展不能减少复制图的产生。

我们把每个加下标的图转换为边序列,称作DFS编码,以
便建立这些序列之间的序,目的是选择产生最小序列的下
标作为基本下标。在转换过程中有两种类型的序:(1)边
序,将下标图中的边映射到一个序列;(2)序列序,它
建立边序列(即图)之间的序。
gSpan(续)


图中边可表示为(i, j)。如果i<j,则为前向边;否则为后向
v
边。
X 0
边序
a
b
v1
(1) 定义前向边发现次序
X
(0,1) (1,2) (1,3)
b
a
v3
v2
Z
Y
(2) 把后向边添加到该序
给定节点v ,它的所有后向边应该正好在它的前向边之
前出现。如果v 没有前向边,把它的后向边放在该前向边
之后,其中v 是第二个节点。
在相同节点的后向边之中,强加一个序。假设节点 v i
有两个后向边 (i, j1) 和(i, j 2)。如果 j1 < j 2 ,则边(i, j1) 将出现
在(i, j 2) 之前。
(0,1) (1,2) (2,0) (1,3)
gSpan(续)

基于边序,如果用5元组(i ,j , l i, l ( i , j ) , l j) 表示边,其中 l i 和 l j
分别是 v i 和 v j 的标记,而 l ( i , j ) 是连接它们的边的标记, 则
X
X
a
v1
X
b
v2
v0
a
Z
v0
Y
a
v1
X
b
v3
Y
b
v2
Y
v0
b
b
a
Z
v3
X
v1
a
a
v2
v3
X
b
Z
gSpan(续)

序列序:边序列之间的序
一个图可能有几个DFS编码,我们想在这些
编码之间建立序列并选择一个编码来代表图。此
时通过标记信息来进行排序。令边序关系  T 拥
有第一优先级,节点的标记 l i拥有第二优先级,
边标记 l ( i , j ) 拥有第三优先级,节点标记 l j 拥有第
四优先级,来决定两条边的次序。基于上规则的
序称作DFS词典序(DFS Lexicographic Order)。
根据DFS词典序,对于前面的DFS编码,有
 0  1   2
gSpan(续)

基于DFS词典序,给定图G的最小DFS编码记作
dfs(G),是所有编码中的最小者,如  0。产生最
小DFS编码的下标称为基本下标。

同时,还有:给定两个图G和G ,G和 G 同构当
且仅当dfs(G)=dfs( G ' )。基于这个性质,为了挖掘
频繁子图,只需要对最小DFS编码执行最右扩展,
因为这种扩展将确保挖掘结果的完全性。
'
'
gSpan(续)
算法:gSpan。基于模式增长的频繁子结构挖掘算法,减少复制图的产生
输入:
DFS编码s
图数据集D
最小支持度阈值min_sup
输出:
频繁图的集合S
方法:
S 
调用gSpan(s,D,min_sup,S)
procedure gSpan(s,D,min_sup,S)
(1) if s  dfs (s ) then
(2) return
(3) 将s 插入S
(4) 设置C为
(5) 扫描D 一次,找出所有使s 可以最右扩展为 s r e 的边e
将 s r e 插入C并计算它的频度
(6) 按DFS词典序对C排序
(7) for each C中频繁的 s r e do
(8) gSpan( s r e ,D,min_sup,S)
(9) return
内容提纲

链接分析与权威资源发现
 “权威性”度量标准
 基于链接关系分析的网页排序算法
PageRank
 基于权威度和中心度的网页互排序算法 HITS

频繁子图模式挖掘
 频繁子树模式挖掘算法TreeMiner
 频繁子图模式挖掘算法FSG和gSpan
 闭合频繁子图模式挖掘算法CloseGraph

链接分析与图模式挖掘商务应用案例
 PageRank算法的简单实现与验证
6.闭合频繁子图模式挖掘算法CloseGraph

CloseGraph: Closed Graph pattern mining
在gSpan的基础上,利用等效出现(equivalent
occurrence) 和提前终止(Early Termination) 两个概
念,帮助CloseGraph用较小的额外代价对搜索空
间进行大量剪枝。

给定一个标号图(边和节点都有标号) ,将图g 的点
集记为V(g),边集记为E(g);能够将一个节点或一
条边映射到一个标号的标号函数l ;
CloseGraph(续)

子图同构(subgraph isomorphism)
子图同构是一个单射函数 f :
V ( g )  V ( g ') ,使得:
(1) u  V (g ) ,l (u)  l ' ( f (u))
'
'
l
(
u
,
v
)

( f (u), f (v))
(
f
(
u
),
f
(
v
))

E
(
)
g

(
u
,
v
)

E
(
g
)
l
(2)
,
且
'
'
其中,l 和 l 分别是g和 g 的标号函数
'
'
 图g 是另一个图 g 的子图,如果存在一个从g 到 g

的子图同构。
'
'
g
如果图g 是图 g 的一个子图,则 是g 的一个超图,
'
'
g(真超图,如果
g
g)
g
记作
CloseGraph(续)


Frequent graph pattern (频繁图模式) 的集合, FS, 包
含所有支持度不小于最小支持度阈值min_sup的图
Closed frequent graph pattern (闭频繁图模式) 的集
合,CS, 定义如下:
CS  {g | g  FS , and   g '  FS such that
g  g ' and support ( g )  support ( g ')}
即CS不包含那些与其真超图具有相同支持度的图

Closed frequent graph mining 问题就是给定了最小
支持度阈值,在图数据库D中寻找CS的完全集合
CloseGraph(续)

图g 通过加入一条新边e 进行扩展,将扩展后的新
图记为a g  e 。如果e 引入了新的节点,将新图记
为 gb xf e ,否则,记为 g xb e
X
x
X
a
Z
b
Y
'
'

(
g
,
)
g
 用
表示g 在 g 中可能的同构子图的数目

Occurrence (出现) :
给定图g 和图数据集 D  {G1 , G 2 ,, G n} ,则g 在D 中
的Occurrence是g 在D 中每个图中同构子图数目的
总和,即 n  ( g , Gi) ,记作I (g,D)
i 1
 ( g , g1)  2  ( g, g 2)  1  ( g, g 3)  0 I ( g , D)  n  ( g , Gi)  3
i 1
CloseGraph(续)


'
g  g x e,f
'
假设
是从g 到G 的子图同构函数,f 是
'
'



g
g
从 到G 的子图同构函数,如果 , 是从g 到
'

v
,
f
(
v
)

(  (v)) ,则称 f 是可扩
f
的子图同构函数,
'
展的(extendable),f 是 f 的一个扩展子图同构
(extended subgraph isomorphism)。将可扩展 f 的数
目记为  ( g , g ' , G )
Extended Occurrence (扩展出现)
'
'
D

{
,
,

,
}

g
e
g
G
G
G
g
1
2
n ,D中
给定
的扩展出现
x ,
是D中每个图中g的可扩展子图同构数目的总和。
即 in1 ( g , g ' , Gi) ,记作 L( g , g ' , D)
CloseGraph(续)

Equivalent Occurrence(等效出现)
'
给定 g  g  e ,如果I ( g , D)  L( g , g ' , D) ,我们说g 和 g
'
g
等效出现,意味着不论g 出现在哪, 也会出现。
'
''
''
''
''

g
g
g
假设存在图 g ,如果 g  g 且
,能否推断
'
不是闭合的?如果可以,则只需扩展 g 而不是g,
将其称为Early Termination(提前终止),它终止搜
'
索除 g 外g 的所有超图。
'
由于  ( g , Gi )   ( g , g ' , Gi ) ,则 I ( g , D)  L( g , g , D)。
'
g
当其相等时,则无论g 出现在哪个 G i中, 也在同
一位置出现,即边e 也同g 一起出现。这样,g 的
一些没有边e 的超图 g '' 将不是闭合的,因为
'
x


support ( g '')  support ( g '' x e)
CloseGraph(续)
对(1),I ( g1 , D)  2  1  0  3
对(2), L( g1 , g 2 , D)  2  1  0  3
则(2)中两个X 节点之间的边a 始终伴随图(1)出现,因此
不用计算可知,图(3)的支持度和图(4)的支持度是相等的,
因此在模式增长时,直接从图(2)开始增长。
CloseGraph(续)
内容提纲

链接分析与权威资源发现
 “权威性”度量标准
 基于链接关系分析的网页排序算法
PageRank
 基于权威度和中心度的网页互排序算法 HITS

频繁子图模式挖掘
 频繁子树模式挖掘算法TreeMiner
 频繁子图模式挖掘算法FSG和gSpan
 闭合频繁子图模式挖掘算法CloseGraph

链接分析与图模式挖掘商务应用案例
 PageRank算法的简单实现与验证
PageRank算法的简单实现与验证

结合前面对于PageRank算法的详细过程的描述,现给出
基本PageRank算法的伪代码:
R0  S
loop:
R i 1  A R i
  R i 1 R i
while   


1
其中,S 是各网页初始的PageRank值;
1
A 相当于前面的 A D ;为用户期望的精度
很明显,在伪代码中,最终 PageRank 的值是通过多次迭
代计算,在邻近两次 PageRank 值的差别小于要求精度时
终止而获得的。而迭代的次数则由初始值S,精度  共同
决定的。
试验 (续)

实验目的:
 掌握PageRank算法的基本原理,分析影响算法性能的
因素。

实验要求:
 根据伪代码,实现简单的PageRank算法,并验证结果
 分析影响迭代次数的两个因素S和

 ,并测试
实验步骤:
 编程实现简单的PageRank算法,采用例子中的数据作
为输入,验证输出结果
 改变S和  ,查看结果输出
试验 (续)

实验结果(1):
 S=(0.715,0.714,0.724,0.718,0.708,0.723,0.726)
  =0.01
试验 (续)

实验结果(2):
 S=(0.715,0.714,0.724,0.718,0.708,0.723,0.726)
  =0.005
试验 (续)

实验结果(3):
 S=(1,1,1,1,1,1,1)
  =0.005