Stanford_CS224W----Machine learning with graph
Stanford_CS224W----Machine learning with graph
开始学习GNN相关的内容,课程是YouTube上公开的Standford_CS224W,本文介绍了一些在节点程度上的图论知识点,
Node-level Tasks and Features
主要有四种描述网络中一个节点的结构和位置:
- Node degree
- Node centrality
- Clustering coefficient
- Graphlet
Node degree
就是普通的点的度

Node centrality
点的度没有刻画邻居的重要性,而点的中心性考虑了点在图中的重要性
- Engienvector centrality
- Betweenness centrality
- Closeness centrality
- others
Engienvector centrality
特征中心度,我们将节点的中心性建模为相邻节点的中心性之和。

可以发现,这样定义出的\(c_v\)就是线性代数中的特征向量。
Betweenness centrality
间隙中心度,如果一个节点位于其他节点之间的许多最短路径上,它就是重要的。

Closeness centrality
紧密性中心度,如果一个节点与所有其他节点的最短路径长度较小,那么该节点就很重要。(最短路径之和的倒数)

Clustering coefficient
衡量v的邻接节点的连接程度。

分别是6/6 , 3/6 , 0/6
Graphlet
基于同构图的概念,获得邻居的拓扑结构特征,一个根植于给定节点的小图的计数向量。

在五个节点以内,一个节点可以有73不同位置有根连接的非同构子图。注意节点的位置。

Summary
- Importance-based features:
- Node degree
- Different node centrality measures
对于这个特征,一个例子就是预测社交网络中的名人用户
- Structure-based features
- Node degree
- Clustering coefficient
- Graphlet count vector
对于这个特征,一个例子就是预测蛋白-蛋白相互作用网络中的蛋白功能。
Link Prediction Tasks and Features
对节点对的关系进行定量描述
- Distance-based feature
- Local neighborhood overlap
- Global neighborhood overlap
Distance-based feature
这里是简化情况下,利用两个点之间的跳数作为距离。但是没有考虑到邻居节点的重叠程度

Local neighborhood overlap
利用节点对中两个节点的共有节点的特性来作为指标

Common neighbors
example:\(|N(A)\cap N(B)|=|\{C\}|=1\)
Jaccard’s coefficient
做一个类似标准化的操作,example:\(\frac{|N(A)\cap N(B)|}{|N(A)\cup N(B)|} = \frac{|\{C\}|}{|\{C,D\}|} = \frac{1}{2}\)
Adamic-Adar index
一个应用得比较好的系数,大概就是名人效应。如果共同邻居的度很大,说明是个名人只是和许多人有关系,但他认识的人不一定有关系。类似于小圈子往往都认识对方
Graph-Level Features and Graph Kernels
目标:描述整个图的结构的特征
方法:使用图核(graph kernel),测量俩个图之间的相似性
一点介绍:
- 图核衡量数据之间的相似度。
- 核矩阵必须是半正定的
- 存在一种特征表示\(\phi (\cdot)\) et: \(K(G,G')=\phi (G)^T \phi(G')\)
一些常用的核方法,前两种利用了bags of * 思想
- Graphlet Kernel
- Weisfeiler-Lehman Kernel
- Random-walk kernel
- Shortest-path graph kernel
- others
Graphlet Kernel
注意这里的子图和节点中子图定义不同
- 子图中的点不需要连接
- 这些子图没有根

网课中给了个简单了例子,一看就会(可以使用标准化

但是!但是!这种计算方法属于NP-hard问题,计算量非常大,指数级增长
Weisfeiler-Lehman Kernel
对邻居节点度进行泛化,使用一种叫Color refinement的算法
步骤:
step1:对所有节点初始化一个颜色(颜色用数字表示)\(c^{(0)}(v)\)
step2:迭代定义每个点的颜色\(c^{(k+1)}(v) = HASH(\{c^{(k)}(v),\{c^{(k)}(v)\}_{u\in N(v)}\})\)
step3:迭代k次后,总结所有的颜色次数(还是看例子比较好)
第一次聚合


进行hash表建立

第二次聚合

进行hash表建立

最后获得的特征向量

这种方法的复杂性是#(edges)线性的
Summary
传统的机器学习流水线
- 手工特征+ML模型
对于图数据的手工特征 - Node-level
- Node degree, centrality, clustering coefficient, graphlets
- Link-level
- Distance-based feature
- local/global neighborhood overlap
- Graph-level
- Graphlet kernel, WL kernel

浙公网安备 33010602011771号