CS224W Lecture2笔记

Traditional Method for ML in Graphs

lecture2主要介绍的是传统的图机器学习方法,从三个维度进行阐述:Node level, Link level, Graph level。想要应用机器学习模型,首先需要从图中提取出能够充分表示这张图信息的特征,而本节lecture介绍的就是比较传统的feature engineering。

Node Level

Node level 的任务比较典型的是对节点进行分类,如下图所示

在这里插入图片描述

那么假如我们想使用比如SVM来做节点分类,那么我们就需要节点的feature vector。传统的节点特征包括:

  • node degree
  • node centrality
  • clustering coefficient
  • graphlets

Node Degree

最intuitive的节点特征应该就是度

在这里插入图片描述

但是只用度作为特征肯定效果是非常差的,因为不同的节点很可能有相同的度,并且度没有考虑到当前节点和它的neighbor之间的connection。

Node Centrality

node degree没有考虑neighbor的importance,因此node centrality将neighbor的importance考虑进来。

Eigenvector centrality

我们认为与相对重要的结点相连的结点是重要的,因此定义结点 v v v的centrality c v c_v cv
c v = 1 λ ∑ u ∈ N ( v ) c u c_v = \frac{1}{\lambda}\sum_{u \in N(v)}c_u cv=λ1uN(v)cu
但是这样一来就变成了一个递归的问题,不好解决。我们用图的Adjacency matrix对上式进行改写就变成了
λ c   =   A c               A   i s   t h e   a d j a c e n c y   m a t r i x   o f   g r a p h   G \lambda c\ =\ Ac \ \ \ \ \ \ \ \ \ \ \ \ \ A\ is\ the \ adjacency\ matrix\ of\ graph\ G λc = Ac             A is the adjacency matrix of graph G
于是不难发现 c c c应该是 A A A的一个特征向量。根据 Perron-Frobenius Theorem,最大特征值一定是正的且唯一的,因此我们取 λ   =   λ m a x \lambda\ =\ \lambda_{max} λ = λmax c c c就是 λ m a x \lambda_{max} λmax对应的特征向量

Betweenness Centrality

Betweenness centrality认为如果一个节点存在于很多最短路上,那么它应该是重要的,举一个直观的例子就是星形图

在这里插入图片描述

很显然 1 1 1号结点肯定是最重要的。因此定义结点 v v v的betweenness centrality
c v   =   ∑ s ≠ v ≠ t # ( s h o r t e s t   p a t h s   b e t w e e n   s   a n d   t   t h a t   c o n t a i n s   v ) # ( s h o r t e s t   p a t h s   b e t w e e n   s   a n d   t ) c_v\ =\ \sum_{s \ne v\ne t} {\frac{\#(shortest\ paths\ between\ s\ and\ t\ that\ contains\ v)}{\#(shortest\ paths\ between\ s\ and\ t)}} cv = s=v=t#(shortest paths between s and t)#(shortest paths between s and t that contains v)

Closeness Centrality

Closeness centrality认为如果一个结点到其他结点的最短路长度比较小,那么它的重要性就相对大,因此定义结点 v v v的closeness centrality
c v   =   1 ∑ u ≠ v s h o r t e s t   p a t h   l e n g t h   b e t w e e n   u   a n d   v c_v\ =\ \frac{1}{\sum_{u\ne v}{shortest\ path\ length\ between\ u\ and\ v}} cv = u=vshortest path length between u and v1
在这里插入图片描述

Clustering Coefficient

Clustering Coefficient是衡量的是结点 v v v的neighbor的聚合程度,计算公式为:
e v   =   # ( e d g e s   a m o n g   n e i g h b o r i n g   n o d e s ) ( d v 2 ) e_v\ =\ \frac{\#(edges\ among\ neighboring\ nodes)}{\tbinom{d_v}{2}} ev = (2dv)#(edges among neighboring nodes)
在这里插入图片描述

​ clustering coefficient的分子计算的其实是包含结点 v v v的triangle(三元环)的数量

Graphlet

Graphlet衡量的是结点 v v v的neighbor结构

Graphlets are small subgraphs that describe the structure of node v’s network neighborhood

在介绍如何定义graphlet之前,需要了解一个概念:induced subgraph

Induced Subgraph

induced subgraph是图G的一个子图,包含结点子集 V ′ V' V以及连接这些节点的所有边,如下图

在这里插入图片描述

有了这个概念,我们就可以定义graphlet: Rooted connected induced non-isomorphic subgraphs .下图展示了5个结点的图一共有73种不同的graphlet

在这里插入图片描述

Graphlet Degree Vector

有了graphlet的概念以后,就可以定义Graphlet Degree Vector:以结点 v v v为根的graphlet的数量

Link-Level

Link-Level Prediction Task

对于边的预测通常是根据现有的边来预测未来可能出现的边,比如好友预测,A关注了B,B关注了C,那么A和C就有很大概率互相关注。具体来说,Link Prediction有两种形式:

  1. Links missing at random:随机地隐藏一些边,然后预测它们
  2. Link over time:根据 t 0 ∼ t 0 ′ t_0 \sim t_0' t0t0时刻的图 G [ t 0 , t 0 ′ ] G[t_0,t_0'] G[t0,t0],预测在 t 1 ∼ t 1 ′ t_1 \sim t_1' t1t1时刻新出现的边

Link-Level Feature

与Node-Level类似,我们同样需要边的feature来应用机器学习模型进行预测。由于边通常是用一对结点 ( u , v ) (u,v) (u,v)来表示,因此我们只需要计算结点对的特征即可。

Distance-based feature

这一种特征是基于距离的,通过计算两点之间的最短路来表示一对结点的特征

在这里插入图片描述

但是这种方法一个很明显的缺点就是无法捕获neighborhood的信息,比如上面的例子中 ( B , H ) (B,H) (B,H)有两个公共的neighbor C , D C,D C,D,而 ( A , B ) 、 ( B , E ) (A,B)、(B,E) (A,B)(B,E)都只有一个,但是它们的feature却是一样的。

Local Neighborhood Overlap

这种方法是考虑了两个结点之间公共的邻居结点数量,有三种不同的计算方式:

  1. Common Neighbor: ∣ N ( u )   ⋂   N ( v ) ∣ |N(u)\ \bigcap\ N(v)| N(u)  N(v)
  2. Jaccard’s coefficient: ∣ N ( u ) ⋂ N ( v ) ∣ ∣ N ( u ) ⋃ N ( v ) ∣ \frac{|N(u) \bigcap N(v)|}{|N(u) \bigcup N(v)|} N(u)N(v)N(u)N(v)
  3. Adamic-Adar index: ∑ w ∈ N ( u ) ⋂ N ( v ) 1 l o g ( d w ) \sum_{w \in N(u) \bigcap N(v)}{\frac{1}{log(d_w)}} wN(u)N(v)log(dw)1

但是这种方法仍然存在一个局限性,我们只考虑了局部的公共邻居,这使得如果一对结点没有common neigbor,那么他们所表示的边的特征就是0,意味着预测的时候这对结点之间不会出现边。但实际情况中显然不是这样

在这里插入图片描述

比如这张图里所展示的结点 A A A和结点 E E E是没有common neighbor的,但是它们之间显然是有可能出现边的。

Global Neighborhood Overlap

这种方法针对上面Local Neighbhood Overlap的缺点,提出了考虑全局的公共neighbor。一对结点 ( u , v ) (u,v) (u,v)的特征表达方式是:统计结点 u u u和结点 v v v之间所有长度的path,也叫做Katz index。而 ( u , v ) (u,v) (u,v)之间长度为 l l l的路径数量我们可以直接通过adjancency matrix来获取,也就是 A u v l A_{uv}^{l} Auvl。实际的Katz index会加一个discount factor,所以公式为:
f u v   =   ∑ l = 1 ∞ β l A u v l f_{uv}\ =\ \sum_{l=1}^{\infty}{\beta_{l}A^{l}_{uv}} fuv = l=1βlAuvl
这个式子可以用级数写成矩阵的形式:
f   =   ( I − β A ) − 1 − I f\ =\ (I -\beta A)^{-1} - I f = (IβA)1I

Graph-Level

最后是图级别的特征表示,我们希望设计一个 ϕ ( G ) \phi(G) ϕ(G)来表示图 G G G的整体特征。可能是因为图特征一般都是很高维的,如果直接计算的话复杂度会很高,因此在图特征方面通常是应用核方法。l这里介绍两种kernel:

  • Graphlet kernel
  • Weisfeiler-Lehman kernel

这两种核都采用的是一种 Bag-of-sth 的思想,只不过这里的sth相对比较复杂。

Graphlet Kernel

在Node-Level中提到了Graphlet,但是这里的Graphlet有所不同。不同之处体现在:

  1. 不需要满足connected的条件
  2. 不需要是rooted

在这里插入图片描述

我们令 g k   =   ( g 1 , g 2 , … , g n k ) g_k\ =\ (g_1,g_2,\dots,g_{n_k}) gk = (g1,g2,,gnk)表示大小的为 k k k的Graphlet list,那么Graphlet feature就定义为图 G G G中不同大小的Graphlet的数量,也就是
f ( G ) i   =   # ( g i ⊆ G )         i = 1 , 2 , . . . , n k f(G)_{i}\ =\ \#(g_i \subseteq G)\ \ \ \ \ \ \ i = 1,2,...,n_k f(G)i = #(giG)       i=1,2,...,nk
在这里插入图片描述

然后我们再做一个Normalization,令 h ( G ) i   =   f ( G ) i ∑ j f ( G ) j h(G)_{i}\ =\ \frac{f(G)_i}{\sum_{j}f(G)_{j}} h(G)i = jf(G)jf(G)i,于是 K ( G , G ′ )   =   h G T h G ′ K(G,G')\ =\ h_G^Th_{G'} K(G,G) = hGThG

这种kernel的效果虽然不错,但是计算Graphlet的代价太大,统计一个 n n n个结点的图G中大小为 k k k的Graphlet数量的时间复杂度是 O ( n k ) O(n^k) O(nk)

Weisfeiler-Lehman Kernel

WL kernel是一种更加高效的kernel,如果说Graphlet Kernel用到的是Bag-of-Graphlets,那么WL kernel就像是Bag-of-neighbors,是通过一种叫做Color Refinement的算法来计算特征的。具体的流程如下:

  1. 给每个结点 v v v设置一个初始颜色 c v ( 0 ) c^{(0)}_{v} cv(0)
  2. 将结点 v v v的所有邻居 u u u的颜色与节点 v v v的颜色合并,然后重新map为一个新的颜色: c v ( k + 1 )   =   M A P { c v ( k ) , { c u ( k ) ,   u ∈ N ( v ) } } c^{(k+1)}_v\ =\ MAP\{c^{(k)}_{v}, \{c^{(k)}_{u},\ u \in N(v)\}\} cv(k+1) = MAP{cv(k),{cu(k), uN(v)}}
  3. 重复第二个步骤
  4. 最后我们统计每种颜色出现的数量作为图 G G G的特征向量

看一个具体的例子比较好理解

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

最终上面两幅图的feature vector分别为:

在这里插入图片描述

于是WL Kernel的计算公式为: K ( G , G ′ )   =   ϕ ( G ) T ϕ ( G ′ ) K(G,G')\ =\ \phi(G)^T\phi(G') K(G,G) = ϕ(G)Tϕ(G)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值