图机器学习导论
数学上图论最早起源于哥尼斯堡七桥问题。
**main question: **如何充分的利用节点之间的连接,利用关系结构进行更好地数据挖掘、数据分析?——即如何对图数据进行数据挖掘。
把图神经网络看成一个黑箱,Input为Network,Output可以为Node labels, New links, Generated graphs and subgraphs。
实现端到端表示学习representation learning ,类似CNN的automatically learn the features。就是把节点变成d维向量的过程。
所谓的端到端就是不需要人工去干涉,不需要人工去辅助,自己学到关键的特征。
课程概览
- Traditional methods:Graphlets, Graph Kernels
- Methods for node embeddings:DeepWalk, Node2Vec
- Graph Neural Networks:GCN, GraphSAGE, GAT, Theory of GNNs
- Knowledge graphs and reasoning:TransE, BetaE
- Deep generative models for graphs:GraphRNN
- Applications to Biomedicine, Science, Industry
图机器学习编程工具
- PyG
- GraphGym
- NetworkX
- SNAP.PY
- DGL:复现了很多论文
图数据可视化工具
- graphin.antv.vision
- Echarts
- graphxr
图数据库
专门用来存储索引、推理图数据的数据库。
- Neo4j
- ……
图机器学习应用
许多应用
Tasks
- node level
- edge level,例如推荐系统中
- community(subgraph) level
- graph level prediction, graph generation
Examples of Subgraph-level ML Tasks
例如导航从一个点到另一个点,可利用图来预计到达的时间。
Nodes:Road segments
Edges:Connectivity between road segments
Prediction:Time of Arrival(ETA)
图是最优质的长期资产。网络效应是一个企业最深的护城河。
几个图数据挖掘项目
- readpaper
- connected papers
- bios 医疗知识图谱
- ……
图的基本表示
本体图 Ontology
如何设计本体图,取决于将来想解决什么问题。
图的种类
- 无向图
- 有向图
- 异质图heterogeneous
一种特殊的异质图:二分图。例如论文的作者和论文之间的关系,可以抽象成二分图。
把二分图展开:Folded networks
节点连接数
可以用node degree表示其连接数,侧面反映一个节点的重要度。
邻接矩阵
无向图邻接矩阵为对称矩阵。主对角线为0
有向图为非对称矩阵。主对角线为0
为什么把图表示为矩阵的形式:
各种工具解决的都是矩阵运算的问题,加速的就是矩阵运算,把图表示成矩阵的形式,就是翻译成计算机能理解的。
图形数据结构可用以下表示形式:
- adjacency matrix邻接矩阵
- incidence matrix 关联矩阵
- adjacency list邻接列表
大多数的网络的邻接矩阵是稀疏的。
连接列表、邻接列表
连接列表只记录存在连接的节点对。连接表关心数据中的head和tail
邻接列表,把所有和该节点相关的都记下来。
例如:三国演义中任务关系的连接表和邻接表的示意:
其他种类的图
- 无权图
- 带权图
例如:一个城市到另一个城市交通的可通达性也可用带权图表示。 - self-loops自环图
- multigraph多重图
图的连通性
connected graph/disconnected graph
强连通图:任意两个节点可以到达
弱连通图
强连通域,strongly connected components(SCCs)
六度空间理论:全世界任意两个人可以通过不超过六个中间人相互认识,可以跨越时间。
传统图机器学习(图特征工程)
人工设计一些特征,进行编码低维向量。
例如一个银行的风控系统,每个节点是一个用户,节点有两种特征:
- 属性特征
- 连接特征(和其他节点的连接关系)
feature design:using effective features over graphs is the key to achieving good model performance。
节点层面的特征工程
给定 G = ( V , E ) G = (V,E) G=(V,E),学习 f : V − > R f : V -> R f:V−>R,输入某个节点的D维向量,输出该节点是某类的概率。
例如半监督节点分类问题。
对每个节点构造特征:
- node degree 连接数,可通过邻接矩阵求得
node degree只看数量不看质量。 - node centrality 节点重要度,考虑了质量。
不同衡量重要度的方法:- eigenvector centrality特征向量重要度,如果周围节点重要,该节点也是重要的。 c v = 1 λ ∑ u ∈ N ( v ) c u c_{v} = \frac{1}{\lambda} \sum_{u \in N(v)}c_{u} cv=λ1u∈N(v)∑cu明显是一个递归地过程。可等价为求临界矩阵特征值和特征向量的问题。
- betweenness centrality,衡量咽喉的位置
- closeness centrality,衡量去哪都近
- clustering coefficient 集群系数,在ego-network中计算三角形个数
- graphlets
GDV:graphlet degree vector,数一个节点周围预先定义好的子图模式。
在networkx中graphlets视为atlas。
连接层面的特征工程
即通过已知连接补全未知连接。
两种:
- links missing at random,客观静态随时间不变的。
- links over time随时间变化的
link-level features:
- 基于两节点距离
- 基于两节点局部连接信息,但是存在局限,如果局部信息不足,就需要全局了。
例如:- common neighbors 共同好友个数
- jaccard’s coefficient 交并比
- admic-adar index共同好友
- 基于两节点在全图的连接信息
katz index:计算节点u和节点v之间长度为k的路径个数。了解这个计算过程!邻接矩阵A,则katz系数计算为邻接矩阵的k次方的第u行第v列。
S = ∑ i = 1 ∞ β i A i = ( I − β A ) − 1 − I S = \sum^{\infty}_{i=1} \beta^{i}A^{i} = (I - \beta A)^{-1} - I S=i=1∑