下载 - 西安电子科技大学软件学院
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 D1 x 1
xi Aij
j
xj
out
kj
其中,1是向量 (1,1,1…),D 是元素为 Dii max (k iout ,1) 的
对角阵
转换后, x (I A D1) 1 ,同前面一样,设 1
有:
1
x (I A D ) 1 D (DA) 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 AX
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 ) TD 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的可扩展子图同构数目的总和。
即 in1 ( 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