传统图机器学习方法–图级别:特征和图核
文章目录
1概述
目标:我们想要能够描述整个图的结构的特征
背景知识:Kernel methods
核方法广泛用于传统的ML的图级预测。
想法:设计内核,而不是特征向量。
对内核的快速介绍:
- 图 G 、 G ′ G、G' G、G′之间的内核 K ( G , G ′ ) K(G,G') K(G,G′)返回一个实数,衡量图之间的相似性。
- 内核矩阵 K = ( K ( G , G ′ ) ) G , G ′ K=(K(G,G'))_{G,G'} K=(K(G,G′))G,G′必须是半正定矩阵
- 存在一个特征表示 ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅)可以满足 K ( G , G ′ ) = ϕ ( G ) T ϕ ( G ′ ) K(G,G')=\phi(G)^T\phi(G') K(G,G′)=ϕ(G)Tϕ(G′)
- 一旦定义了内核,就可以使用现成的ML模型,如内核SVM,来进行预测。
图内核:测量两个图之间的相似度:
- Graphlet Kernel
- Weisfeiler-Lehman Kernel
- 其他核也提出在文献中(超出本讲座的范围)随机行走核、最短路径图核等
2 Graphlet Kernel
目标:设计出一图特征向量 ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅)
关键想法:图的单词包(袋)Bag-of-Words (BoW)
- 回想一下:BoW只是将字数作为文档的特征(不考虑排序)。
- 图的天真Naïve 扩展:将节点视为单词。
- 因为两个图都有4个红色节点,所以我们得到了两个不同图的相同特征向量…
如果用节点度的Bag呢?获得不同图形的不同特征!
Graphlet内核和Weisfeiler-Lehman (WL)内核都使用 Bag-of-* 表示,其中*比节点度更复杂!
Graphlet Feature
关键思想:计算一个图形中不同小图形的数量。
- 注意:这里小图的定义与节点级Graphlet特性略有不同。
- 这两个区别是:这里的小图中的节点不需要连接(允许孤立的节点)。这里的小图没有根。下一张幻灯片中的示例说明了这一点。
给定图形
G
G
G和一个小图形列表
g
k
=
(
g
1
,
g
2
,
,
,
g
n
k
)
g_k=(g_1,g_2,,,g_{n_k})
gk=(g1,g2,,,gnk),定义小图计数向量
f
G
∈
R
n
k
f_G\in R^{n_k}
fG∈Rnk为
Graphlet Kernal
现在可以将俩个图之间的核定于为计数向量之间的点积,即 K ( G , G ′ ) = f G T ∗ f G ′ K(G,G')=f_G^T*f_{G'} K(G,G′)=fGT∗fG′
问题:如果G和G‘具有不同的大小,( f f f的行数不一致)这将极大地扭曲该值。
解决方案:归一化每个特征向量
Graphlet Kernal有一个重要的限制:计算小图集是非常耗时的!
- 通过枚举节点数为n的图的k大小graphlets将花费 n k n^k nk
- 这在最坏的情况下是不可避免的,因为子图同构测试(判断一个图是否是另一个图的子图)是NP难的。
- 如果图的节点度以d为界,存在复杂度 O ( n d k − 1 ) O(nd^{k-1}) O(ndk−1)算法来统计所有k大小的小图!
我们能设计一个更加高效的图核吗?
Weisfeiler-Lehman Kernal
目标:设计一个高效的图特征表示 ϕ ( G ) \phi(G) ϕ(G)
想法:使用邻域结构迭代地丰富节点词汇
算法实现 Color refinement颜色细化或图同构测试
Color refinement
下面举个例子
WL Kernel总结
- WL核计算效率高。每一步的颜色细化的时间复杂度在#(edge)上是线性的,因为它涉及聚集相邻的颜色
- 当计算一个内核值时,只需要跟踪两个图形中出现的颜色。因此,#(color)最多是节点的总数
- 计算颜色需要线性时间关于 #(node)
- 总的来说,时间复杂度在#(edge))上是线性的
图级别特征总结
03-05小节总结