诸神缄默不语-个人CSDN博文目录

本文将对图学习中的链路预测任务进行系统性的介绍。

最近更新时间:2022.11.29
最早更新时间:2022.10.31

文章目录

  • 1. 问题定义
  • 2. 研究方法
    • 2.1 基于图中结构相似性的链路预测
      • 2.1.1 基于局部信息的相似性指标
      • 2.1.2 基于路径的相似性指标
      • 2.1.3 基于随机游走的节点相似性指标
    • 2.2 基于似然分析的链路预测
    • 2.3 基于机器学习的链路预测
    • 2.4 进行节点表征,用节点表征相似性实现链路预测:不同的相似度
      • 2.4.1 通用节点表征工作
      • 2.4.2 链路预测工作
    • 2.5 其他
  • 3. 链路预测工作分类和应用
  • 4. 正文及脚注中未提及的其他参考资料
  • 5. 待更新(flag)

1. 问题定义

早期论文,证明链路预测任务的重要性:(2003 CIKM) The Link-Prediction Problem for Social Networks1

2. 研究方法

2.1 基于图中结构相似性的链路预测

在社交网络中可能符合这一假设,在PPI网络中可能不符(有很多共同邻居的蛋白质相连(interact)可能性更低)2

2.1.1 基于局部信息的相似性指标

  1. 共同邻居 Common neighbors
  2. 直接基于共同邻居指标的不同的规范化而得到的,k(x)=∣Γ(x)∣k(x) = |Γ(x)|k(x)=Γ(x) 为节点x的度

相关早期工作:

  1. (2003 CIKM) The Link-Prediction Problem for Social Networks
  2. (2009 The European Physical Journal B) Predicting missing links via local information
  3. (2016 ICDE) Link prediction in graph streams

2.1.2 基于路径的相似性指标

2.1.3 基于随机游走的节点相似性指标

2.2 基于似然分析的链路预测

2.3 基于机器学习的链路预测

2.4 进行节点表征,用节点表征相似性实现链路预测:不同的相似度

一般范式是首先进行节点表征(可以有监督或无监督,解耦或耦合),然后用相似度度量指标(一般用点积或余弦相似度),用这个得分作为二分类(是否连边)任务的得分。

2.4.1 通用节点表征工作

使用余弦相似度的工作:

  • GATNE3

使用内积的工作:

  • VGAE4

    (对取出的边还要分别过sigmoid,在本博文中略)

G2G5使用KL散度(这个是无监督节点表征模型,本来就以KL散度为基础建立的损失函数)

2.4.2 链路预测工作

DEAL6则是几种距离都测试过(点积/余弦相似度/欧氏距离),在论文中说余弦相似度效果最好(以下代码摘自https://github.com/working-yuhao/DEAL/blob/master/model.py:

class Hidden_Layer(nn.Module): #Hidden Layer, Binary classificationdef __init__(self, emb_dim, device,BCE_mode, mode='all', dropout_p = 0.3):super(Hidden_Layer, self).__init__()self.emb_dim = emb_dimself.mode = modeself.device = deviceself.BCE_mode = BCE_modeself.Linear1 = nn.Linear(self.emb_dim*2, self.emb_dim).to(self.device)self.Linear2 = nn.Linear(self.emb_dim, 32).to(self.device)x_dim = 1self.Linear3 = nn.Linear(32, x_dim).to(self.device)if self.mode == 'all':if self.BCE_mode:self.linear_output = nn.Linear(x_dim+ 3, 1).to(self.device)else:self.linear_output = nn.Linear(x_dim+ 3, 2).to(self.device)else:self.linear_output = nn.Linear(1, 2).to(self.device) self.linear_output.weight.data[1,:] = 1self.linear_output.weight.data[0,:] = -1self.cos = nn.CosineSimilarity(dim=1, eps=1e-6)self.pdist = nn.PairwiseDistance(p=2,keepdim=True)       self.softmax = nn.Softmax(dim=1)self.elu = nn.ELU()assert (self.mode in ['all','cos','dot','pdist']),"Wrong mode type"def forward(self, f_embs, s_embs):if self.mode == 'all':x = torch.cat([f_embs,s_embs],dim=1)x = F.rrelu(self.Linear1(x))x = F.rrelu(self.Linear2(x))x = F.rrelu(self.Linear3(x))cos_x = self.cos(f_embs,s_embs).unsqueeze(1)dot_x = torch.mul(f_embs,s_embs).sum(dim=1,keepdim=True)pdist_x = self.pdist(f_embs,s_embs)x = torch.cat([x,cos_x,dot_x,pdist_x],dim=1)elif self.mode == 'cos':x = self.cos(f_embs,s_embs).unsqueeze(1)elif self.mode == 'dot':x = torch.mul(f_embs,s_embs).sum(dim=1,keepdim=True)elif self.mode == 'pdist':x = self.pdist(f_embs,s_embs)if self.BCE_mode:return x.squeeze()# return (x/x.max()).squeeze()else:x = self.linear_output(x)x = F.rrelu(x)# x = torch.cat((x,-x),dim=1)return xdef evaluate(self, f_embs, s_embs):if self.mode == 'all':x = torch.cat([f_embs,s_embs],dim=1)x = F.rrelu(self.Linear1(x))x = F.rrelu(self.Linear2(x))x = F.rrelu(self.Linear3(x))cos_x = self.cos(f_embs,s_embs).unsqueeze(1)dot_x = torch.mul(f_embs,s_embs).sum(dim=1,keepdim=True)pdist_x = self.pdist(f_embs,s_embs)x = torch.cat([x,cos_x,dot_x,pdist_x],dim=1)elif self.mode == 'cos':x = self.cos(f_embs,s_embs)elif self.mode == 'dot':x = torch.mul(f_embs,s_embs).sum(dim=1)elif self.mode == 'pdist':x = -self.pdist(f_embs,s_embs).squeeze()return #(DEAL模型中,三个layer分别是上面那个类的实例)
def evaluate(self, nodes,data, lambdas=(1,1,1)):node_emb = self.node_emb(torch.arange(self.node_num).to(self.device)) first_embs = node_emb[nodes[:,0]]sec_embs = node_emb[nodes[:,1]]res = self.node_layer(first_embs,sec_embs) * lambdas[0]node_emb = self.attr_emb(data)first_embs = node_emb[nodes[:,0]]sec_embs = node_emb[nodes[:,1]]res = res + self.attr_layer(first_embs,sec_embs)* lambdas[1]first_nodes = nodes[:,0]first_embs = self.attr_emb(data)[first_nodes]sec_embs = self.node_emb(torch.LongTensor(nodes[:,1]).to(self.device))res = res + self.inter_layer(first_embs,sec_embs)* lambdas[2]return res

2.5 其他

  1. 利用子图结构

    1. WLNM:将所有子图切成相同大小输入全连接神经网络
    2. SEAL7:学习启发式方法(利用子图、浅嵌入和特征)

3. 链路预测工作分类和应用

  1. 将链路预测任务作为无监督图表征学习的训练任务(可能说是自监督学习任务更合适)(在原论文中,是在baseline中用到了有监督图表征学习方法HAN,用链路预测来作为无监督训练的任务):(2022 SDM) Structure-Enhanced Heterogeneous Graph Contrastive Learning
  2. inductive场景可用的模型
    1. G2G4:将节点特征表征到高斯分布上,用节点邻居跳数来做ranking loss
    2. DEAL6:将节点的特征信息和结构信息分别表征,在训练时用对比学习损失函数实现匹配,在测试时仅需新节点的特征信息就能实现链路预测

4. 正文及脚注中未提及的其他参考资料

  1. 链路预测 - 集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织:这篇主要讲的是传统的链路预测工作,这里面的相关内容我还没有补完

5. 待更新(flag)

  1. GIN
  2. GAT
  3. (2017 IJCAI) Link Prediction with Spatial and Temporal Consistency in Dynamic Networks
  4. (2020 AAAI) Temporal Network Embedding with High-Order Nonlinear Information
  5. (2019 ICDM) Social trust network embedding

  1. The Link-Prediction Problem for Social Networks
    可参考的笔记博文:#Paper Reading# The Link Prediction Problem for Social Networks_John159151的博客-CSDN博客 看了一下这篇笔记,大致来说,这篇文章构建了一个无特征的学术合作网络,基于上一时间点(年份)预测下一时间点的新边。使用经典的节点相似性计算方法。
    (表格画得跟统计学论文一样啊) ↩︎

  2. (2019 Nature Communications) Network-based prediction of protein interactions ↩︎

  3. (2019 KDD) Representation Learning for Attributed Multiplex Heterogeneous Network ↩︎

  4. (2016 NIPS) Variational Graph Auto-Encoders ↩︎ ↩︎

  5. (2018 ICLR) Deep Gaussian Embedding of Graphs: Unsupervised Inductive Learning via Ranking
    我写过笔记:Re37:读论文 G2G Graph2Gauss Deep Gaussian Embedding of Graphs: Unsupervised Inductive Learning via Rank ↩︎

  6. (2020 IJCAI) Re9:读论文 DEAL Inductive Link Prediction for Nodes Having Only Attribute Information ↩︎ ↩︎

  7. (2018 NIPS) Link prediction based on graph neural networks
    我参考了如下资料:
    ①论文分享|基于GNN的链路预测 - 知乎:这篇写得挺抽象的,不作推荐 ↩︎

图学习中的链路预测任务(持续更新ing...)相关推荐

  1. 深度学习中的遥感影像数据集~持续更新

    收集网络上公开的遥感数据集,欢迎补充 以下数据集均为网上开源数据集,若有遗误或不慎涉及侵权,烦请评论或留言联系 目前本项目共整理 场景分类数据集27个(整理完结): 目标检测数据集31+个(整理完结) ...

  2. 深度学习中的问题汇总(持续更新...)

    2018.10.24 1.scipy.misc module has no attribute imread image = misc.imread(filename) AttributeError: ...

  3. python 学习中遇到的问题(持续更新中)

    1.定义一个一维数组,然后利用.T进行转置,利用.T[2]求转置后的数组的第二行. import numpy as npA=np.array([1,2,3,4,5,6,7,8,9,10,11,12]) ...

  4. 机器学习 - [源码实现决策树小专题]决策树学习中如何进行分类预测

    机器学习 - 决策树学习中如何进行分类预测 李俊才 的 CSDN 博客 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550263? ...

  5. 【我的OpenGL学习进阶之旅】【持续更新】关于学习OpenGL的一些资料

    目录 一.相关书籍 OpenGL 方面 C方面 NDK 线性代数 二.相关博客 2.0 一些比较官方的链接 2.1 OpenGL着色器语言相关 2.2 [[yfan]](https://segment ...

  6. 深度学习相关阅读论文汇总(持续更新)

    深度学习相关阅读论文汇总(持续更新) 1 Long-Term Temporal Convolutions(LTC)for Action Recognition IEEE Transactions on ...

  7. 重拾CCNA,学习笔记持续更新ing......(4)

    重拾CCNA,学习笔记持续更新ing......(4) 路由器作用功能的经典解说(笑)(非原创) 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大 ...

  8. js中text方法是啥意识_一盏茶的时间,快速捕获JS中常用的方法(细心整理,持续更新ing)...

    不知不觉上班一周辽-趁着大好周末,小编挣扎着从床上爬起来,决定对前端日常编程中常用到的一些方法做一个系统的整合. 有些人或许会觉得忘了百度就完事儿,no no no!这事儿小编真的亲践过好多次,百度一 ...

  9. 常用数据集整理(持续更新ing)

    常用数据集整理(持续更新ing)     在做实验过程中经常用到的数据集整理一下,按照学习过程中遇到的数据集的先后顺序进行整理,希望能对科研有所帮助.本博文将随着学习过程持续性更新,有其他常用数据集的 ...

最新文章

  1. burp 调试_Burp插件分享及编译简学Wildcard+
  2. POJ-3414 Pots BFS+记忆路径
  3. python配置文件密码管理_python – 可以在django管理员中实现“下次登录时更改密码”类型功能吗?...
  4. ELASTIC的备份与恢复
  5. Linux下编译Jsoncpp
  6. 5 个鲜为人知 GNU 调试器(GDB)技巧 | Linux 中国
  7. VMware虚拟机与Windows文件共享
  8. c语言编写界面图形表示,「分享」C语言如何编写图形界面
  9. 从零开始学习MXnet(四)计算图和粗细粒度以及自动求导
  10. java中对象的克隆
  11. 破解安装IAR编辑器
  12. Python爬取最爱的电影并下载到本地(附源码)
  13. AD637 有效值检测
  14. android 通知栏图标变白色方格
  15. 一键清空朋友圈软件_微信清理朋友圈app下载-微信清理朋友圈下载v1.8.0 安卓版-西西软件下载...
  16. stanza和DBPedia的安装与使用
  17. 什么东西改善睡眠质量,辅助睡眠好物推荐
  18. 单片机控制74hc595驱动4个单数码管计数显示
  19. [Android]如何做一个崩溃率少于千分之三噶应用app(31)-组件化网络请求
  20. 上传图片方向不对 php,如何解决IOS中html5上传图片方向问题?

热门文章

  1. caffe不支持relu6_caffe cudaSuccess (4 vs. 0) unspecified launch failure
  2. 私域引流工具及场景落地方法
  3. 南京大学考研招生目录、分数线、参考书
  4. 织梦模板下载:环保设计公司织梦模板
  5. 51nod-2534 最小旅行路线
  6. 2019智能手表推荐_2020年买什么智能手表合适?
  7. 【Proteus仿真】51单片机+74HC164驱动两个四位数码管
  8. SSM实现物流管理系统快递
  9. 计算机应用基础上册周测7,计算机应用基础(第3版)周南岳(win7+office10)期末复习及答案-20210614221003.docx-原创力文档...
  10. 小寒也会写程序(五)