2 Background and Traditional Approaches
文章目录
在这一章中,我们将介绍的传统的图学习方法。这些内容虽然古老,但是确是后续章节的基础,也需要认真对待。
2.1 Graph Statistics and Kernel Methods
这类方法,主要是根据启发式函数或领域知识,提取一些统计信息或特征,然后将这些特征作为标准机器学习分类器的输入。
这一部分是介绍各种启发式统计信息和图属性,它们通常被用作传统机器学习的输入。
2.1.1 Node-level statistics and features
这一部分,主要是针对节点级的分类等任务进行节点特征的提取。那么,我们可以使用哪些有用的属性和统计信息来描述这个图中的节点呢?
我们下面要讨论的属性在各种各样的节点分类任务中通常是有用的。
Node degree.
节点的度是最明显和最直接的节点特征,
d
u
d_u
du通常代表从一个节点出发的边的数量(出度),
d
u
=
∑
v
∈
V
A
[
u
,
v
]
d_u=\sum_{v\in V}A[u,v]
du=v∈V∑A[u,v]
一般来说,节点的度数是一个需要考虑的基本统计信息,它通常是应用于节点级任务的传统机器学习模型中信息量最大的特征之一。
Node centrality
节点中心度,是节点重要性程度的度量,可以针对节点分类任务形成有用的节点特征。
衡量中心性的一个普遍而重要的指标就是所谓的“特征向量中心性”,它考虑了节点邻居的重要性。之所以称之为特征向量中心性,是因为它的表达形式对应于邻接矩阵的特征向量。
λ
e
=
A
e
,
e
∈
R
∣
V
∣
\lambda e=Ae,\ \ e\in R^{|V|}
λe=Ae, e∈R∣V∣
其中
λ
\lambda
λ可以取特征值的最大值。
特征向量中心性可以理解为,在无限长的随机游走中,某节点被访问的可能性大小。
e
(
t
+
1
)
=
A
e
(
t
)
,
e
(
0
)
=
[
1
,
.
.
.
,
1
]
T
e^{(t+1)}=Ae^{(t)},\ \ e^{(0)}=[1,...,1]^T
e(t+1)=Ae(t), e(0)=[1,...,1]T
这样
e
(
t
)
e^{(t)}
e(t)就可以代表节点走t步所能够到达的节点数量,这个数量(或者成为分数),与每个节点的被访问次数成正比,这样我们就找到了一种可以衡量节点中心度的标准。也可以进行标准化(Normalize),数越大代表这个节点越重要。
The clustering coefficient
节点中心度可以让我们很容易的区分中心节点(最重要的)和非中心节点,但是如何去区分众多的非中心节点呢?
图中的结构差异可以用聚集系数的变化来衡量,它反映了节点邻域中闭合三角形的比例大小。
c
u
=
∣
(
v
1
,
v
2
)
∈
E
:
v
1
,
v
2
∈
N
(
u
)
∣
C
d
u
2
c_u=\frac{|(v_1,v_2)\in E:v_1,v_2\in N(u)|}{C_{d_u}^2}
cu=Cdu2∣(v1,v2)∈E:v1,v2∈N(u)∣
简单来讲,这个式子的分母是代表邻居节点之间存在边(闭合三角形)的数量,分母是邻居节点可以组成为多少对。
这个系数越高,代表节点的邻域越聚集,从而推出这个节点越重要。
Closed triangles, ego graphs, and motifs
另一种方法是,计算每个节点的局部邻域中闭合三角形的数量。更精确地说,是因为聚类系数和节点图中的实际三角形数与总可能三角形数之比有关。
这一思想可以进行推广。也就是说,不只是计算三角形,我们可以考虑更复杂的结构出现的次数,比如特定长度的圈。
2.1.2 Graph-level features and graph kernel
之前说的一些特征都是针对节点级任务的,但是如果我们的任务是图级的呢?
这一部分将主要介绍适用于图级任务的方法——图核方法(graph kernel),侧重点在于提取显示的特征表示。
Bag of nodes
最简单的方法就是直接聚合节点级的统计信息,有点类似readout的一次性聚合操作,区别在于这里的特征都是手工提取的。聚合后的信息作为图级表示。
这种方法的缺点显而易见:丢失了重要的全局属性。
The Weisfeiler-Lehman kernel
威斯费勒-莱曼算法是测试图同构的经典算法之一(《Weisfeiler-Lehman算法测试图同构》)。在这里,使用WL算法迭代的进行邻域聚合。
算法步骤:
1、初始化label为节点的度:
l
(
0
)
(
v
)
=
d
v
l^{(0)}(v)=d_v
l(0)(v)=dv
2、借助邻居节点,使用哈希函数迭代地给节点分配新的label:
l
(
i
+
1
)
(
v
)
=
H
A
S
H
(
{
{
l
(
i
)
(
u
)
,
u
∈
N
(
v
)
}
}
)
l^{(i+1)}(v)=HASH(\{\{l^{(i)}(u),u\in N(v)\}\})
l(i+1)(v)=HASH({{l(i)(u),u∈N(v)}})
hash函数一个对于集合的单射函数,将唯一的集合映射到唯一的新label,如图所示。
3、重复步骤2进行k次迭代,得到的 l ( k ) ( v ) l^{(k)}(v) l(k)(v),然后,我们可以计算直方图或其他统计数据,作为图的特征表示。换句话说,WL核是通过测量两个图的结果标签集之间的差来计算的。
当然,之前提到的图的同构检测,也是通过对比2张图的标签分布来进行判断的。
Graphlets and path-based methods
这类方法的思想是,统计各种子图结构出现的次数。但问题是,这种统计是很困难的,因此,衍生出了各种近似方法。
一种方法是基于路径(path-based)的方法。
在这种方法中,不必进行枚举,而是简单地检查图中出现的不同类型的路径。例如,Kashima等人提出的随机游走核。
这种基于行走和路径的特征化图的思想是一个强大的思想,因为它可以提取丰富的结构信息,同时避免图数据的许多组合陷阱。
2.2 Neighborhood Overlap Detection
上一节提到的方法中,节点级和图级统计对于许多分类任务都很有用。但缺点是,它们不能量化节点之间的关系。以至于不能通过节点相似度来进行关系预测(边预测)。
这一部分,为我们会介绍可以量化节点关联程度的邻域重叠检测方法,它可以很好地应用于关系预测任务。
首先,我们可以定义节点相似度矩阵,来度量两个节点之间的关联度(相似度)。一种最简单的方式是直接使用2个节点的共享邻居数目。
S
[
u
,
v
]
=
∣
N
(
u
)
∩
N
(
v
)
∣
,
S
∈
R
∣
v
∣
×
∣
v
∣
S[u,v]=|N(u)\cap N(v)|,\ \ S\in R^{|v|\times|v|}
S[u,v]=∣N(u)∩N(v)∣, S∈R∣v∣×∣v∣
我们假设,边
(
u
,
v
)
(u,v)
(u,v)出现的可能性正比于
S
[
u
,
v
]
S[u,v]
S[u,v]。因此,为了使用邻域重叠度量来处理关系预测任务,只需设置一个阈值来确定何时预测边的存在。在关系预测任务中,通过计算节点之间的相似性度量,我们可以对确实的边进行预测。
2.2.1 Local overlap measures
局部重叠统计是两个节点的公共邻域数的函数,即
f
(
∣
N
(
u
)
∩
N
(
v
)
∣
)
f(|N(u)\cap N(v)|)
f(∣N(u)∩N(v)∣)。
标准化(Normalize)是十分重要的,几种比较简单的定义如下,它们都是对
∣
N
(
u
)
∩
N
(
v
)
∣
|N(u)\cap N(v)|
∣N(u)∩N(v)∣进行了标准化操作。
1、Sorensen index
S
s
o
r
e
n
s
e
n
[
u
,
v
]
=
2
∣
N
(
u
)
∩
N
(
v
)
∣
d
u
+
d
v
S_{sorensen}[u,v]=\frac{2|N(u)\cap N(v)|}{d_u+d_v}
Ssorensen[u,v]=du+dv2∣N(u)∩N(v)∣
2、Salton index
S
s
a
l
t
o
n
[
u
,
v
]
=
2
∣
N
(
u
)
∩
N
(
v
)
∣
d
u
d
v
S_{salton}[u,v]=\frac{2|N(u)\cap N(v)|}{\sqrt{d_ud_v}}
Ssalton[u,v]=dudv2∣N(u)∩N(v)∣
3、Jaccard index
S
j
a
c
c
a
r
d
[
u
,
v
]
=
∣
N
(
u
)
∩
N
(
v
)
∣
∣
N
(
u
)
∪
N
(
v
)
∣
S_{jaccard}[u,v]=\frac{|N(u)\cap N(v)|}{|N(u)\cup N(v)|}
Sjaccard[u,v]=∣N(u)∪N(v)∣∣N(u)∩N(v)∣
这些方法都是量化节点之间的重叠,同时最小化由节点度引起的任何偏差。
此外,还有一些方法考虑的是节点间共同邻居的重要度。
1、The Resource Allocation
S
R
A
[
u
,
v
]
=
∑
i
∈
(
N
(
u
)
∩
N
(
v
)
)
1
d
i
S_{RA}[u,v]=\sum_{i\in (N(u)\cap N(v))}\frac{1}{d_i}
SRA[u,v]=i∈(N(u)∩N(v))∑di1
2、Adamic-Adar
S
A
A
[
u
,
v
]
=
∑
i
∈
(
N
(
u
)
∩
N
(
v
)
)
1
log
(
d
i
)
S_{AA}[u,v]=\sum_{i\in (N(u)\cap N(v))}\frac{1}{\log(d_i)}
SAA[u,v]=i∈(N(u)∩N(v))∑log(di)1
这两种方法都赋予了共有的低度(low-degree)邻居更多的权重,直觉上共享的低度邻居比共享的高度邻居更有信息量。
2.2.2 Global overlap measures
局部重叠度量对于关联预测来说,是非常有效的启发式方法。然而,局部方法的局限性在于,只考虑了局部邻居节点。依然是衡量两个节点之间的相似度,全局重叠方法旨在解决节点之间无公共邻居,但仍然在一个社区中的问题。
Katz index
Katz index是最基本的全局重叠统计量,它主要是统计一对节点之间所有长度的路径数量。
S
k
a
t
z
[
u
,
z
]
=
∑
i
=
1
∞
β
i
A
i
[
u
,
v
]
S_{katz}[u,z]=\sum_{i=1}^{\infin}\beta^iA^i[u,v]
Skatz[u,z]=i=1∑∞βiAi[u,v]
其中
β
\beta
β是人为定义的权重,表示不同路径长度所占的比重。
A
i
[
u
,
v
]
A^{i}[u,v]
Ai[u,v]可以理解为节点u和v之间,长度为i的路径数量。
根据定理,当X为实值方阵,
λ
1
\lambda_1
λ1为X的最大特征值,且
λ
1
<
1
\lambda_1\lt 1
λ1<1,
(
I
−
X
)
(I-X)
(I−X)非奇异时,
(
I
−
X
)
−
1
=
∑
i
=
0
∞
X
i
(I-X)^{-1}=\sum_{i=0}^\infin X^i
(I−X)−1=i=0∑∞Xi
我们可以用矩阵的形式改写上述式子,定义出完整的相似度矩阵。
S
k
a
t
z
=
(
I
−
β
A
)
−
1
−
I
S_{katz}=(I-\beta A)^{-1}-I
Skatz=(I−βA)−1−I
Leicht, Holme, and Newman (LHN) similarity
Katz index的问题是,在考虑高度的节点时,通常会给出更高的整体相似度得分,因为高度的节点通常会涉及更多的路径。为了缓解这种情况,有人提出,用两个节点之间实际观测到的路径数与预期的路径数之比来作为相似度的度量。这种思想相当于用预期的路径数,来标准化之前观测到的路径数。
A
i
E
[
A
i
]
\frac{A^i}{\mathbb E[A^i]}
E[Ai]Ai
不幸的是,当路径长度超过3的时候,随机配置模型下的预期路径数的会计算变得很困难。因此,一般使用最大特征值
λ
m
a
x
\lambda_{max}
λmax来近似路径数量的增长(增长率)。
A
p
i
=
λ
m
a
x
p
i
−
1
A\boldsymbol p_i=\lambda_{max}\boldsymbol p_{i-1}
Api=λmaxpi−1
其中
p
i
\boldsymbol p_i
pi是一个向量,代表节点到其他节点、长度为i的路径数量。
于是,我们就可以定义预期路径数量的近似表示,
E
[
A
i
[
u
,
v
]
]
=
d
u
d
v
λ
i
−
1
2
∣
E
∣
\mathbb E[A^i[u,v]]=\frac{d_ud_v\lambda^{i-1}}{2|E|}
E[Ai[u,v]]=2∣E∣dudvλi−1
LHN index就定义为,(看起来比较复杂)
S
L
H
N
=
2
α
m
λ
m
a
x
D
−
1
(
I
−
β
λ
m
a
x
A
)
−
1
D
−
1
S_{LHN}=2\alpha m\lambda_{max}D^{-1}(I-\frac{\beta}{\lambda_{max}}A)^{-1}D^{-1}
SLHN=2αmλmaxD−1(I−λmaxβA)−1D−1
Random walk methods
另一种全局相似性度量,考虑的不是统计路径的数量,而是使用随机游走的方法。比较著名的PageRank方法。
没太看懂,不知道和后面节点嵌入里面的随机游走方法有什么不同。。。
2.3 Graph Laplacians and Spectral Methods
这一节主要讨论的是谱图理论(spectral graph theory)与方法。
2.3.1 Graph Laplacians
这些由邻接矩阵的各种变换得到的矩阵,蕴含着非常有用的数学性质,统称为拉普拉斯矩阵。
Unnormalized Laplacian
最基本的是非规范化的拉普拉斯矩阵。
L
=
D
−
A
L=D-A
L=D−A
D是节点度的对角矩阵。
L有很多重要的性质:
1、对称且是半正定矩阵(
x
T
L
x
≥
0
x^TLx\ge 0
xTLx≥0)。
2、有恒等式(总变差公式),
x
T
L
x
=
∑
(
u
,
v
)
∈
E
(
x
[
u
]
−
x
[
v
]
)
2
x^TLx=\sum_{(u,v)\in E}(x[u]-x[v])^2
xTLx=(u,v)∈E∑(x[u]−x[v])2
3、特征值非负数,并且最小的特征值为0。
4、0特征值的重根数对应于连通分量的数量,并且每个0特征值对应的特征向量都是该连通分量的指示向量。
Normalized Laplacians
规范化的拉普拉斯矩阵有几种形式:
1、symmetric normalized Laplacian
L
s
y
m
=
D
−
1
2
L
D
−
1
2
L_{sym}=D^{-\frac12}LD^{-\frac12}
Lsym=D−21LD−21
2、random walk Laplacian
L
R
W
=
D
−
1
L
L_{RW}=D^{-1}L
LRW=D−1L
它们分别应用于不同的学习任务。
2.3.2 Graph Cuts and Clustering
上面我们提到了,
L
L
L的0特征值对应的特征向量,可以用来将连通分量中的节点分配给簇。但如果整张图都是连通的呢?
在这一节中,我们会介绍使用拉普拉斯矩阵,在完全连通图中给出节点的最优聚类(optimal cluster)。
Graph cuts
通俗来说,最优聚类就是,使得划分出来的K个不重叠的子集所产生的分割值(cut value)最小化。
c
u
t
(
A
1
,
.
.
.
,
A
K
)
=
1
2
∑
k
=
1
K
∣
(
u
,
v
)
∈
E
:
u
∈
A
k
,
v
∈
A
‾
k
∣
cut(\mathcal A_1,...,\mathcal A_K)=\frac12\sum_{k=1}^K|(u,v)\in E:u\in\mathcal A_k,v\in \overline \mathcal A_k|
cut(A1,...,AK)=21k=1∑K∣(u,v)∈E:u∈Ak,v∈Ak∣
这是一种最简单的分割值的定义,它表示了有多少条边穿过了划分的边界。但它也有问题,就是去最小化它的时候,会倾向于把图划分成一个个孤立的点。
针对上述问题,有人提出,我们需要进行改进,强制要求分区(簇)要足够大才行(包含节点足够多),因此提出了Ratio Cut。
R
a
t
i
o
C
u
t
(
A
1
,
.
.
.
,
A
K
)
=
1
2
∑
k
=
1
K
∣
(
u
,
v
)
∈
E
:
u
∈
A
k
,
v
∈
A
‾
k
∣
∣
A
k
∣
RatioCut(\mathcal A_1,...,\mathcal A_K)=\frac12\sum_{k=1}^K\frac{|(u,v)\in E:u\in\mathcal A_k,v\in \overline \mathcal A_k|}{|\mathcal A_k|}
RatioCut(A1,...,AK)=21k=1∑K∣Ak∣∣(u,v)∈E:u∈Ak,v∈Ak∣
加上了分母分区节点数量这一项,可以惩罚小分区。
Approximating the RatioCut with the Laplacian spectrum
有了上面的理论基础,我们现在推导出一种使用拉普拉斯谱(Laplacian spectrum)最小化RatioCut的方法,最终得到图的簇分配。
推导过程略,直接上结论。。。
最小化目标定义为,
m
i
n
a
∈
R
∣
V
∣
a
T
L
a
s
.
t
.
a
⊥
1
⃗
,
∣
∣
a
∣
∣
2
=
∣
V
∣
\underset {a\in R^{|V|}}{min}\ \ a^TLa \\[2ex] s.t.\ \ \ \ a\perp \vec \bold1,||a||^2=|V|
a∈R∣V∣min aTLas.t. a⊥1,∣∣a∣∣2=∣V∣
为了解决NP难问题,将a的条件放宽到,满足上述2个条件的实值向量即可。
根据瑞利-里兹定理,这个优化问题的解是由L的第二小的特征值对应的特征向量,因此,我们可以通过设置a为第二小的特征向量,来逼近RatioCut的最小值。
总而言之,拉普拉斯矩阵的第二小的特征向量是离散向量的连续近似,它给出了一个最优的聚类分配。
{
u
∈
A
,
i
f
a
[
u
]
≥
0
u
∈
A
‾
,
i
f
a
[
u
]
<
0
\begin{cases} u\in \mathcal A,&if&a[u]\ge 0 \\ u\in \overline \mathcal A,&if&a[u]\lt 0 \end{cases}
{u∈A,u∈A,ififa[u]≥0a[u]<0
2.3.3 Generalized spectral clustering
上一节,我们找到了一个将图分成两个簇的最优划分。那么,我们也可以将这种方法推广到K个簇的最优划分问题上。
这种一般方法的步骤如下:
1、找到L的K个最小的特征值对应的特征向量,除去最小的那个,还剩下K-1个特征向量,
v
2
,
.
.
.
,
v
K
v_2,...,v_K
v2,...,vK。
2、定义矩阵
U
∈
R
∣
V
∣
×
(
k
−
1
)
U\in R^{|V|\times (k-1)}
U∈R∣V∣×(k−1)
U
=
[
⋮
⋮
⋮
v
2
⋯
v
k
⋮
⋮
⋮
]
U= \begin{bmatrix} \vdots & \vdots&\vdots \\ v_2& \cdots&v_k \\ \vdots &\vdots &\vdots \\ \end{bmatrix}
U=⎣⎢⎢⎡⋮v2⋮⋮⋯⋮⋮vk⋮⎦⎥⎥⎤
3、一行代表一个对应节点的表示向量。
z
u
=
U
[
u
]
\bold z_u=U[u]
zu=U[u]
4、使用K均值聚类方法来聚合
z
u
z_u
zu,从而在最优划分的条件下,将图划分成K簇。(《K-Means聚类算法原理》)
谱聚类的一般原理是强有力的。我们可以用图的拉普拉斯谱来表示图中的节点,这种表示可以近似于最优图聚类。谱聚类与随机游走、图信号处理领域也有着密切的理论联系。
2.4 Towards Learned Representations
在前面的部分中,我们看到了许多传统的图学习方法。我们讨论了图统计和核函数如何为分类任务提取特征信息。我们看到了邻域重叠统计如何为关系预测提供强大的启发。此外,我们还简要介绍了谱聚类的概念,它允许我们将节点聚类到社区中。
然而,本章中讨论的方法,特别是节点和图级统计信息,由于它们需要仔细地手工设计统计信息,因此它们是不灵活的。它们不能通过学习来进行适应,并且设计这些特性可能是一个耗时和昂贵的过程。
以下章节介绍图学习的替代方法:图表示学习(Graph Represent Learning)。