诸神缄默不语-个人CSDN博文目录
cs224w(图机器学习)2021冬季课程学习笔记集合
文章目录
- 1. 章节前言
- 2. Traditional Feature-based Methods: Node
- 3. Traditional Feature-based Methods: Link
- 4. Traditional Feature-based Methods: Graph
- 5. 本章总结
YouTube视频观看地址1 视频观看地址2 视频观看地址3
1. 章节前言
- 传统机器学习pipeline:设计并获取所有训练数据上节点/边/图的特征→训练机器学习模型→应用模型
图数据本身就会有特征,但是我们还想获得说明其在网络中的位置、其局部网络结构local network structure之类的特征(这些额外的特征描述了网络的拓扑结构,能使预测更加准确)
所以最终一共有两种特征:数据的structural feature,以及其本身的attributes and properities
- 本章重点着眼于手工设计无向图三种数据层次上的特征(其relational structure of the network),做预测问题
- 图机器学习的目标:对一系列object做预测
- design choice
- Features: d-dimensional vectors
- Objects: Nodes, edges, sets of nodes, entire graphs
- Objective function: What task are we aiming to solve?
2. Traditional Feature-based Methods: Node
- 半监督学习任务如图所示案例,任务是预测灰点属于红点还是绿点。区分特征是度数(红点度数是1,绿点度数是2)
- 特征抽取目标:找到能够描述节点在网络中结构与位置的特征
- 度数node degree:缺点在于将节点的所有邻居视为同等重要的
- node centrality
c
v
c_v
cv 考虑了节点的重要性
- eigenvector centrality:认为如果节点邻居重要,那么节点本身也重要
因此节点
v
v
v 的centrality是邻居centrality的加总:
c
v
=
1
λ
∑
u
∈
N
(
v
)
c
u
c_v=\frac{1}{\lambda}\sum\limits_{u\in N(v)}c_u
cv=λ1u∈N(v)∑cu (
λ
\lambda
λ是某个正的常数)
这是个递归式,解法是将其转换为矩阵形式:
λ
c
=
A
c
\lambda \mathbf{c}=\mathbf{Ac}
λc=Ac
A
\mathbf{A}
A是邻接矩阵,
c
\mathbf{c}
c是centralty向量。
从而发现centrality就是特征向量。根据Perron-Frobenius Theorem可知最大的特征值
λ
m
a
x
\lambda_{max}
λmax 总为正且唯一,对应的leading eigenvector
c
m
a
x
\mathbf{c}_{max}
cmax就是centrality向量 - betweenness centrality:认为如果一个节点处在很多节点对的最短路径上,那么这个节点是重要的。(衡量一个节点作为bridge或transit hub的能力。就对我而言直觉上感觉就像是新加坡的马六甲海峡啊,巴拿马运河啊,埃及的苏伊士运河啊,什么君士坦丁堡,上海,香港……之类的商业要冲的感觉)
c
v
=
∑
s
≠
v
≠
t
#
(
s
和
t
之
间
包
含
v
的
最
短
路
径
)
#
(
s
和
t
之
间
的
最
短
路
径
)
c_v=\sum\limits_{s\neq v\neq t}\frac{\#(s和t之间包含v的最短路径)}{\#(s和t之间的最短路径)}
cv=s=v=t∑#(s和t之间的最短路径)#(s和t之间包含v的最短路径)
#:the number of…
图中这个between应该是写错了……
- closeness centrality:认为如果一个节点距其他节点之间距离最短,那么认为这个节点是重要的
c
v
=
1
∑
u
≠
v
u
和
v
之
间
的
最
短
距
离
c_v=\frac{1}{\sum\limits_{u\neq v}u和v之间的最短距离}
cv=u=v∑u和v之间的最短距离1
- clustering coefficient:衡量节点邻居的连接程度
描述节点的局部结构信息这种
(
k
v
2
)
\begin{pmatrix} k_{v} \\ 2 \end{pmatrix}
(kv2)是组合数的写法,和国内常用的C写法上下是相反的
所以这个式子代表
v
v
v 邻居所构成的节点对,即潜在的连接数。整个公式衡量节点邻居的连接有多紧密
第1个例子:
e
v
=
6
/
6
e_v=6/6
ev=6/6
第2个例子:
e
v
=
3
/
6
e_v=3/6
ev=3/6
第3个例子:
e
v
=
0
/
6
e_v=0/6
ev=0/6
ego-network of a given node is simply a network that is induced by the node itself and its neighbors. So it’s basically degree 1 neighborhood network around a given node.
这种三角形:How manys triples are connected
在社交网络之中会有很多这种三角形,因为可以想象你的朋友可能会经由你的介绍而认识,从而构建出一个这样的三角形/三元组。
这种三角形可以拓展到某些预定义的子图pre-specified subgraph上,例如如下所示的graphlet: - graphlets有根连通异构子图
对于某一给定节点数
k
k
k,会有
n
k
n_k
nk 个连通的异构子图。
就是说,这些图首先是connected的,其次这些图有k个节点,第三它们异构。
异构,就是说它们形状不一样,就是怎么翻都不一样……就,高中化学应该讲过这个概念,我也不太会解释,反正就是这么一回事:举例来说,3个节点产生的全连接异构子图只有如图所示的2个,4个点就只有6个。如果你再构建出新的子图形状,那么它一定跟其中某个子图是同构的。
图中标的数字代表根节点可选的位置。例如对于
G
0
G_0
G0,两个节点是等价的(对称的嘛。就,高中化学应该考过这种题吧!),所以只有一种graphlet;对于
G
1
G_1
G1,根节点有在中间和在边上两种选择,上下两个边上的点是等价的,所以只有两种graphlet。其他的类似。节点数为2-5情况下一共能产生如图所示73种graphlet。
这73个graphlet的核心概念就是不同的形状,不同的位置。
注意这里的graphlet概念和后文图的graphlet kernel的概念不太一样。具体的后文再讲
- Graphlet Degree Vector (GDV): Graphlet-base features for nodes
GDV与其他两种描述节点结构的特征的区别:
- Degree counts #(edges) that a node touches
- Clustering coefficient counts #(triangles) that a node touches.
- GDV counts #(graphlets) that a node touches
- Graphlet Degree Vector (GDV): A count vector of graphslets rooted at a given node.如图所示,对四种graphlet,
v
v
v 的每一种graphlet的数量作为向量的一个元素。
注意:graphlet c的情况不存在,是因为像graphlet b那样中间那条线连上了。这是因为graphlet是induced subgraph,所以那个边也存在,所以c情况不存在。 - 考虑2-5个节点的graphlets,我们得到一个长度为73个坐标coordinate(就前图所示一共73种graphlet)的向量GDV,描述该点的局部拓扑结构topology of node’s neighborhood,可以捕获距离为4 hops的互联性interconnectivities。
相比节点度数或clustering coefficient,GDV能够描述两个节点之间更详细的节点局部拓扑结构相似性local topological similarity。
- Node Level Feature: Summary
这些特征可以分为两类:
- Importance-based features: 捕获节点在图中的重要性
- Structure-based features: 捕获节点附近的拓扑属性
- Discussion就我的理解,大致来说,传统节点特征只能识别出结构上的相似,不能识别出图上空间、距离上的相似
3. Traditional Feature-based Methods: Link
- 预测任务是基于已知的边,预测新链接的出现。测试模型时,将每一对无链接的点对进行排序,取存在链接概率最高的K个点对,作为预测结果。
- 特征在点对上
- 有时你也可以直接将两个点的特征合并concatenate起来作为点对的特征,来训练模型。但这样做的缺点就在于失去了点之间关系的信息。
- 链接预测任务的两种类型:随机缺失边;随时间演化边 图中的 ’ 念prime
第一种假设可以以蛋白质之间的交互作用举例,缺失的是研究者还没有发现的交互作用。(但这个假设其实有问题,因为研究者不是随机发现新链接的,新链接的发现会受到已发现链接的影响。在网络中有些部分被研究得更彻底,有些部分就几乎没有什么了解,不同部分的发现难度不同)
第二种假设可以以社交网络举例,随着时间流转,人们认识更多朋友。 - 基于相似性进行链接预测:计算两点间的相似性得分(如用共同邻居衡量相似性),然后将点对进行排序,得分最高的n组点对就是预测结果,与真实值作比
- distance-based feature:两点间最短路径的长度这种方式的问题在于没有考虑两个点邻居的重合度the degree of neighborhood overlap,如B-H有2个共同邻居,B-E和A-B都只有1个共同邻居。
- local neighborhood overlap:捕获节点的共同邻居数common neighbors的问题在于度数高的点对就会有更高的结果,Jaccard’s coefficient是其归一化后的结果。
Adamic-Adar index在实践中表现得好。在社交网络上表现好的原因:有一堆度数低的共同好友比有一堆名人共同好友的得分更高。
- global neighborhood overlap
local neighborhood overlap的限制在于,如果两个点没有共同邻居,值就为0。
但是这两个点未来仍有可能被连接起来。所以我们使用考虑全图的global neighborhood overlap来解决这一问题。
Katz index:计算点对之间所有长度路径的条数
计算方式:邻接矩阵求幂
- 邻接矩阵的k次幂结果,每个元素就是对应点对之间长度为k的路径的条数
- 证明:显然
A
u
v
\mathbf{A}_{uv}
Auv代表u和v之间长度为1的路径的数量
计算
u
u
u 和
v
v
v 之间长度为2的路径数量,就是计算每个
u
u
u 的邻居
A
u
i
\mathbf{A}_{ui}
Aui (与
u
u
u 有1条长度为1的路径)与
v
v
v 之间长度为1的路径数量
P
i
v
(
1
)
\mathbf{P}^{(1)}_{iv}
Piv(1) 即
A
i
v
\mathbf{A}_{iv}
Aiv 的总和
∑
i
A
u
i
∗
A
i
v
=
A
u
v
2
\sum_i \mathbf{A}_{ui}*\mathbf{A}_{iv}=\mathbf{A}_{uv}^2
∑iAui∗Aiv=Auv2
同理,更高的幂(更远的距离)就重复过程,继续乘起来 - 从而得到Katz index的计算方式:discount factor
β
\beta
β 会给比较长的距离以比较小的权重,exponentially with their length.
closed-form闭式解,解析解
解析解的推导方法我去查了,见尾注
- Summary
- Distance-based features: Uses the shortest path length between two nodes but does not capture how neighborhood overlaps.
- Local neighborhood overlap:
- Captures how many neighboring nodes are shared by two nodes.
- Becomes zero when no neighbor nodes are shared.
- Global neighborhood overlap:
- Uses global graph structure to score two nodes.
- Katz index counts #paths of all lengths between two nodes.
4. Traditional Feature-based Methods: Graph
- 图级别特征构建目标:找到能够描述全图结构的特征
- Background: Kernel Methods就是,核这一部分其实我一直都没搞懂,以前看SVM啥的时候就没好好学都是直接跳的,所以核本来是什么我也不知道……
b/w=between
off-the-shelf现成的
不过单纯学习图机器学习的话只要按照图中所说原意来理解应该就行了:两个图的核
K
(
G
,
G
‘
)
K(G,G^`)
K(G,G‘) 以标量衡量其相似度,存在特征表示
ϕ
(
⋅
)
\phi (\cdot)
ϕ(⋅) 使得
K
(
G
,
G
‘
)
=
ϕ
(
G
)
T
ϕ
(
G
‘
)
K(G,G^`)=\phi(G)^T\phi(G^`)
K(G,G‘)=ϕ(G)Tϕ(G‘),定义好核后就可以直接应用核SVM之类的传统机器学习模型。
这个
ϕ
\phi
ϕ 是个表示向量,可能不需要被显式地计算出来
半正定矩阵特征值非负的证明开我之前写的博文:从0开始的GNN导学课程笔记 - Overview
- graph kernel: key ideabag-of-words相当于是把文档表示成一个向量,每个元素代表对应word出现的次数。
此处讲述的特征抽取方法也将是bag-of-something的形式,将图表示成一个向量,每个元素代表对应something出现的次数(这个something可以是node, degree, graphlet, color)
光用node不够的话,可以设置一个degree kernel,用bag-of-degrees来描述图特征 - graphlet features
- Key idea: Count the number of different graphlets in a graph.
- 注意这里对graphlet的定义跟上文节点层面特征抽取里的graphlet不一样。区别在于:
- Nodes in graphlets here do not need to be connected (allows for isolated nodes)
- The graphlets here are not rooted.
- 对每一种节点数,可选的graphlet:
- graphlet count vector:每个元素是图中对应graphlet的数量
- graphlet kernel就是直接点积两个图的graphlet count vector得到相似性。对于图尺寸相差较大的情况需进行归一化skew扭曲
h捕获了图中我们要的graphlet的frequency或proportion - graphlet kernel的限制:计算昂贵(这一部分的知识对我来说超纲了,我就只知道有这么回事就完了,我来不及学为啥了)
- Weisfeiler-Lehman Kernel:相比graphlet kernel代价较小,效率更高。
用节点邻居结构迭代地来扩充节点信息(vocabulary在此仅作引申义?)
- 实现算法:Weisfeiler-Lehman graph isomorphism test=color refinement
c
v
(
k
)
c^{(k)}_v
cv(k) 念成c capital k of v
- color refinement示例
把邻居颜色聚集起来
对聚集后颜色取哈希值
把邻居颜色聚集起来
对聚集后颜色取哈希值 - 进行K次迭代后,用整个迭代过程中颜色出现的次数作为Weisfeiler-Lehman graph feature第一个图的特征应该是算错了,最后3个元素应该是2 1 0
- 用上图的向量点积计算相似性,得到WL kernel
- WL kernel的优势在于计算成本低w.r.t: with respect to
颜色个数最多是节点的个数:每一次就最多这么多个点上有颜色……
- Summary这个color refinement方法与GNN的相似性我认为有二,一在都聚集了节点邻居信息,GNN详情见我撰写的后续课程笔记(就后面好几节课都讲了GNN);二在在Lecture 9中会讲的GIN。
5. 本章总结
- Traditional ML Pipeline
- Hand-crafted feature + ML model
- Hand-crafted features for graph data
- Node-level:
- Node degree, centrality, clustering coefficient, graphlets
- Link-level:
- Distance-based feature
- local/global neighborhood overlap
- Graph-level:
- Graphlet kernel, WL kernel
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)