1、分类
1.1 综述
自己整理了一些经典的论文和开源代码: github.com/ytchx1999/D…
github上一个大佬整理的仓库:github.com/Cantoria/dy…,zhuanlan.zhihu.com/p/368771456
论文 | 链接 | 年份 | 单位 |
---|---|---|---|
Foundations and Modeling of Dynamic Networks Using Dynamic Graph Neural Networks: A Survey | ieeexplore.ieee.org/stamp/stamp… | 2021 | 悉尼科技大学 |
A Survey on Embedding Dynamic Graphs (更广泛,DGNN方法总结的少一些) | arxiv.org/pdf/2101.01… | 2021 | UFJF |
Representation Learning for Dynamic Graphs: A Survey | www.jmlr.org/papers/volu… | 2020 | -- |
1.2 分类
2、典型方法介绍
2.1 动态网络的表示和类型
动态网络的表示:
-
离散型 -- snapshot sequence
- ,(可以使用时刻或滑动窗口进行切分),1...T一般称为time step。
-
连续型 -- timestamped-graph
- 基于事件的表示:
- 接触序列表示/带有时间戳的边集表示:,这种比较多
- 流图:
-
连续型可以通过切分转化为离散型,但是反过来不行(缺少具体的timestamp)。
按照网络中边存在时间长短划分:
- interaction/temporal:边存在时间短,很可能是瞬间的。例如,邮件,用户和商品的交互。
- envolving:边存在时间长,可能长期存在。例如,引文网络。
目前很少考虑节点也是动态的情况,大部分都是边是动态的,节点是静态的。
2.2 Discrete DGNN
2.2.1 stacked DGNN
DySAT
2.2.2 integrated DGNN
EvolveGCN
2.2.3 动态图自编码器/DGAE
DynGEM
2.3 Continuous DGNN
选择连续DGNN的一些原因:
- 编码节点之间的时间差,相对时间间隔的长短产生主要的影响,比较符合直觉
- 可以很自然的加入到计算注意力系数的过程中
- 不会因为切图而发生动态图演化信息的损失
- WSDM Cup 2022前排的解决方案几乎都是动态DGNN(效果上确实能达到SOTA),TGN用的比较多
2.3.1 RNN-based
JODIE
2.3.2 TPP-based
DyREP
2.3.3 Time embedding-based
TGAT
TGN
3、常见数据集、baseline以及评价指标
3.1 数据集
开源动态图数据集(连续格式而非离散snapshot)。
数据集 | 简介 | 链接 |
---|---|---|
Reddit,Wikipedia,LastFM,MOOC | JODIE/TGAT/TGN等均有使用,斯坦福jure数据集格式,见github.com/srijankr/jo… | snap.stanford.edu/jodie/ |
Temporal Network系列数据集 | 斯坦福jure | snap.stanford.edu/data/index.… |
BC-OTC,BC-Alpha | 比特币,EvolveGCN中用到,斯坦福jure格式为没有切图前的原始格式 | snap.stanford.edu/data/soc-si…snap.stanford.edu/data/soc-si… |
UCI,AS | 社交网络,EvolveGCN中用到 | konect.uni-koblenz.de/networks/op… |
DyHATR中用到,斯坦福jure | snap.stanford.edu/data/higgs-… | |
Math-Overflow | DyHATR中用到,斯坦福jure | snap.stanford.edu/data/sx-mat… |
EComm | DyHATR中用到,阿里天池 | tianchi.aliyun.com/competition… |
其他交互数据集 | konect | konect.cc/categories/… |
3.2 baseline和SOTA
只列举一些最常见的连续方法的baseline和SOTA。
baseline | 链接 | 是否基于图方法 | 是否是动态方法 | 是否用于处理连续数据 | 是否是无监督方法 |
---|---|---|---|---|---|
GAE,VGAE等静态图自编码器 | -- | ✅ | -- | ✅ | |
Deepwalk,node2vec等静态随机游走方法 | -- | ✅ | -- | ✅ | |
GraphSAGE,GAT等静态GNN方法 | -- | ✅ | -- | ||
CTDNE | dl.acm.org/doi/pdf/10.… | ✅ | ✅ | ✅ | |
JODIE | cs.stanford.edu/~srijan/pub… | ✅ | ✅ | ||
TGAT(SOTA-) | arxiv.org/pdf/2002.07… | ✅ | ✅ | ✅ | |
DyREP | par.nsf.gov/servlets/pu… | ✅ | ✅ | ||
TGN(SOTA) | arxiv.org/pdf/2006.10… | ✅ | ✅ | ✅ | |
DyGEM | arxiv.org/pdf/1805.11… | ✅ | ✅ | ✅ | |
dygraph2vec | arxiv.org/pdf/1809.02… | ✅ | ✅ | ✅ | |
RNN,Time-LSTM等时序模型的方法 | Time-LSTM:www.ijcai.org/proceedings… | ✅ | |||
GCN-GRU | arxiv.org/pdf/1612.07… | ✅ | ✅ |
3.4 常见任务及loss
loss function | 解决任务 | 公式 |
---|---|---|
基于负采样的交叉熵损失 | 动态连接预测任务(节点u和节点v在时刻t是否存在边) | ,一般来说每次都正采样和负采样子图。 |
3.4 评价指标
动态链接预测的评价指标(其他任务暂不考虑):
metrics | 评价角度 | 评估数值 | 方法 |
---|---|---|---|
MAP(mean average precision) | accuracy | 越大越好 | 在离散的图中,先算出每个time step(snapshot)的AP后,再计算平均值 |
AP(average precision) | accuracy | 越大越好 | 链接预测转换为二分类后的平均精度,sklearn.metrics.average_precision_score |
MAR(mean average rank) | rank | 越小越好 | 在离散的图中,先算出每个time step(snapshot)预测正确节点的平均排名后,再计算平均值 |
MRR (mean reciprocal rank) | rank | 越大越好 | 平均倒数排名(同推荐) |
hits@k | accuracy | 越大越好 | 命中率(同推荐) |
recall@k | accuracy | 越大越好 | 召回率(同推荐) |
micro AUC | accuracy | 越大越好 | 在离散的图中,将所有time step(snapshot)的边实例结果进行汇总,统一计算AUC |
macro AUC | accuracy | 越大越好 | 在离散的图中,先算出每个time step(snapshot)的AUC,再计算平均值 |
3.5 动态图常用框架
PyTorch Geometric Temporal: arxiv.org/pdf/2104.07… 这篇总结的比较详细。
框架 | github地址 | 文档 | paper | 后端 | 单位 |
---|---|---|---|---|---|
PyTorch Geometric Temporal | github.com/benedekroze… | pytorch-geometric-temporal.readthedocs.io/en/latest/i… | arxiv.org/pdf/2104.07… | pytorch(基于PyG) | 剑桥、牛津等 |
DynamicGEM | github.com/palash1992/… | -- | arxiv.org/pdf/1811.10… | tensorflow | 南加州大学等 |
此外,DGL也有一个动态图的example(TGN和TGAT):github.com/dmlc/dgl/tr…
其他链接预测任务技巧:
- PLNLP:arxiv.org/pdf/2112.02…
- LRGA:arxiv.org/pdf/2006.07…