图神经网络实战(13)——经典链接预测算法

server/2024/10/17 20:37:44/

神经网络实战(13)——经典链接预测算法

    • 0. 前言
    • 1. 链接预测
    • 2. 启发式技术
      • 2.1 局部启发式技术
      • 2.2 全局启发式技术
    • 3. 矩阵分解
    • 小结
    • 系列链接

0. 前言

链接预测 (Link prediction) 可以帮助我们理解和挖掘图中的关系,并在社交网络、推荐系统等领域提供更准确的预测和决策支持。为了解决链接预测问题,研究者们提出了多种方法。首先,本节将介绍基于局部和全局邻域的启发式方法。然后,我们将介绍矩阵分解及其与 DeepWalk 和 Node2Vec 的联系。

1. 链接预测

链接预测 (Link prediction,也称链路预测)是图学习中的常见任务之一,用于预测两个节点之间是否存在链接的问题。链接预测是社交网络和推荐系统的核心,例如,在社交网络中,链接预测可以用于发现潜在的朋友关系、推荐共同的兴趣爱好,或者预测用户之间的互动行为。直观地说,如果存在链接的可能性很高,就更有可能与这些人建立联系,这种可能性正是链接预测试图预测的内容。

2. 启发式技术

启发式技术 (Heuristic technique) 是一种简单实用的预测节点之间链接的方法。它们易于实现,并为连接预测任务提供了强大的基准。根据这些方法执行的跳数 (hop),我们可以将它们进行分类,如下图所示。其中一些方法只需要与目标节点相邻的 1 跳 (1-hop) 邻居,而更复杂的技术还需要考虑 2 跳 (1-hop) 邻居或整个图。在本节中,我们将把它们分为两类——局部 (local) 启发式(1 跳和 2 跳)技术和全局 (global) 启发式技术。

启发式技术

2.1 局部启发式技术

局部启发式技术通过考虑节点的局部邻域来衡量两个节点之间的相似性,使用 N ( u ) \mathcal N(u) N(u) 表示节点 u u u 的邻居。以下是三种常用的局部启发式技术:

  • 公共邻居 (Common neighbors):简单地计算两个节点的公共邻居( 1 跳邻居)数量。其原理与社交网络类似——共同的邻居越多,就越有可能建立链接:
    f ( u , v ) = ∣ N ( u ) ∩ N ( v ) ∣ f(u,v)=|\mathcal N(u)\cap \mathcal N(v)| f(u,v)=N(u)N(v)
  • Jaccard 系数 (Jaccard’s coefficient):衡量的是两个节点( 1 跳邻居)共有邻居的比例。它的理念与共同邻居相同,但将结果按邻居总数归一化。这样可以奖励具有少量相互连接的邻居的节点,而非度较高的节点:
    f ( u , v ) = ∣ N ( u ) ∩ N ( v ) ∣ ∣ N ( u ) ∪ N ( v ) ∣ f(u,v)=\frac {|\mathcal N(u)\cap \mathcal N(v)|} {|\mathcal N(u)\cup \mathcal N(v)|} f(u,v)=N(u)N(v)N(u)N(v)
  • Adamic–Adar 指数 (Adamic–Adar index):对两个目标节点( 2 跳邻居)共享邻居度数的逆对数求和。其原理是,邻域大的共同邻居不如邻域小的共同邻居重要:
    f ( u , v ) = ∑ x ∈ N ( u ) ∩ N ( v ) 1 l o g ∣ N ( x ) ∣ f(u,v)=\sum_{x\in\mathcal N(u)\cap \mathcal N(v)}\frac 1{log|\mathcal N(x)|} f(u,v)=xN(u)N(v)logN(x)1
    无论是直接的(共同邻居或 Jaccard 系数)还是间接的( Adamic–Adar 指数) ,这些技术都依赖于邻居的节点度。这有利于提高速度和可解释性,但也限制了它捕捉复杂关系的能力。

2.2 全局启发式技术

全局启发式技术通过考虑整个网络而非局部邻域来解决这一问题。以下是两种常用的全局启发式技术:

  • Katz 指数 (Katz index):计算两个节点之间每条可能路径的加权和。权重对应一个折扣系数 β ∈ [ 0 , 1 ] β∈ [0,1] β[0,1] (通常在 0.80.9 之间),以惩罚较长的路径。根据这一定义,如果两个节点之间有很多(最好是短)路径,那么它们更有可能被连接起来。任何长度的路径都可以用邻接矩阵幂 A n A^n An 计算,Katz 指数定义如下:
    f ( u , v ) = ∑ i = 1 ∞ β i A i f(u,v)=\sum_{i=1}^\infty\beta^iA^i f(u,v)=i=1βiAi
  • 带重启的随机游走 (Random walk with restart):从目标节点开始进行随机游走。每次游走后,它会增加当前节点的访问次数,并以 α α α 的概率在目标节点重新开始游走。否则,它会继续随机游走。经过预定的迭代次数后停止算法,并建议在目标节点和访问次数最高的节点之间建立链接。这种思想在 DeepWalk 和 Node2Vec 算法中同样重要

全局启发式技术通常更准确,但需要了解图的全部内容,使用这种方式执行链接预测并不是唯一方法。

3. 矩阵分解

用于链接预测的矩阵分解 (Matrix factorization) 受到推荐系统技术的启发。使用这种技术,我们通过预测整个邻接矩阵 KaTeX parse error: Undefined control sequence: \A at position 1: \̲A̲ 来间接预测链接。这需要使用节点嵌入来实现——相似的节点 u u u v v v 应该有相似的嵌入 Z u Z_u Zu Z v Z_v Zv。利用点积,我们可以将其表示为:

  • 如果这些节点相似, Z v T Z u Z_v^TZ_u ZvTZu 应该是最大的
  • 如果这些节点不同, Z v T Z u Z_v^TZ_u ZvTZu 应该是最小的

由于我们假定相似的节点应该相互连接,因此可以使用点积来近似邻接矩阵 A A A 的每个元素(链接):
A u v ≈ Z v T Z u A_{uv}\approx Z_v^TZ_u AuvZvTZu
改写为矩阵乘法,可以得到以下结果:
A ≈ Z T Z A\approx Z^TZ AZTZ
其中, Z Z Z 是节点嵌入矩阵。下图直观地说明了矩阵分解的原理:

矩阵分解原理

这种技术之所以称为矩阵分解,是因为邻接矩阵 A A A 被分解为两个矩阵的乘积。其目标是学习相关的节点嵌入,使图 G = ( V , E ) G= (V,E) G=(V,E) 中真实元素和预测元素之间的 L2 范数 A u v A_{uv} Auv 最小化:
m i n z ∑ i ∈ V , j ∈ V ( A u v − Z v T Z u ) 2 \underset {z} {min}\sum_{i\in V,j\in V}(A_{uv}-Z_v^TZ_u)^2 zminiV,jV(AuvZvTZu)2
矩阵分解还有更高级的变体,包括拉普拉斯矩阵 (Laplacian matrix) 和 A A A 的幂,另一种方法是使用 DeepWalk 和 Node2Vec 等模型,它们能够生成可以配对创建链接表示的节点嵌入,这些算法隐式地逼近和分解复杂的矩阵。例如,使用 DeepWalk 计算出的矩阵:
log ⁡ ( ∑ i = 1 ∣ V ∣ ∑ j = 1 ∣ V ∣ A i j ( 1 T ∑ r = 1 T ( D − 1 A ) r ) D − 1 ) − log ⁡ b \log (\sum_{i=1}^{|V|}\sum_{j=1}^{|V|}A_{ij}(\frac 1T\sum_{r=1}^T(D^{-1}A)^r)D^{-1})-\log b log(i=1Vj=1VAij(T1r=1T(D1A)r)D1)logb
其中, b b b 是负采样的参数。类似算法包括 LINEPTE。虽然它们可以捕捉到更复杂的关系,但也存在局限性:

  • 无法使用节点特征:只能使用拓扑信息创建嵌入关系
  • 没有归纳能力: 无法归纳出训练集中没有的节点
  • 无法捕捉结构相似性: 图中结构相似的节点能够获得截然不同的嵌入结果
    这些局限性促使我们需要基于图神经网络 (Graph Neural Networks, GNN) 的技术来执行链接预测任务。

小结

链接预测是指利用图数据中已知的部分节点和边的信息,预测图中未知的连接关系或者未来可能出现的连接关系。链接预测在社交网络分析、生物信息学、推荐系统等领域具有重要应用,能够帮助我们理解网络结构、预测潜在的关联关系,并为一些实际问题提供决策支持。在本节中,我们介绍了经典链接预测算法,这些传统技术对于理解图神经网络 (Graph Neural Networks, GNN) 学习的内容至关重要。

系列链接

神经网络实战(1)——图神经网络(Graph Neural Networks, GNN)基础
神经网络实战(2)——图论基础
神经网络实战(3)——基于DeepWalk创建节点表示
神经网络实战(4)——基于Node2Vec改进嵌入质量
神经网络实战(5)——常用图数据集
神经网络实战(6)——使用PyTorch构建图神经网络
神经网络实战(7)——图卷积网络(Graph Convolutional Network, GCN)详解与实现
神经网络实战(8)——图注意力网络(Graph Attention Networks, GAT)
神经网络实战(9)——GraphSAGE详解与实现
神经网络实战(10)——归纳学习
神经网络实战(11)——Weisfeiler-Leman测试
神经网络实战(12)——图同构网络(Graph Isomorphism Network, GIN)


http://www.ppmy.cn/server/49014.html

相关文章

基于Python实现地震数据可视化的设计与实现

基于Python实现地震数据可视化的设计与实现 “Design and Implementation of Earthquake Data Visualization using Python” 完整下载链接:基于Python实现地震数据可视化的设计与实现 文章目录 基于Python实现地震数据可视化的设计与实现摘要第一章 引言1.1 研究背景1.2 研究…

How To: Localize Bar and Ribbon Skin Items

您可以使用Localizer对象自定义皮肤菜单,而不是迭代每个条形皮肤子菜单项和功能区皮肤库项容器来手动修改这些项。此方法允许您同时自定义所有现有栏子菜单和功能区库中的外观项目。 创建BarLocalizer类的派生类并重写XtraLocalizer.GetLocalizedString方法。 pub…

useEffect的概念以及使用(对接口)

// useEffect的概念以及使用 import {useEffect, useState} from reactconst Url"http://geek.itheima.net/v1_0/channels"function App() {// 创建状态变量const [lustGet,setLustGet]useState([]);// 渲染完了之后执行这个useEffect(() > {// 额外的操作&#x…

【SpringBoot】SpringBoot:实现文件上传和下载功能

文章目录 引言项目初始化添加依赖 配置文件存储位置实现文件上传功能创建文件上传控制器创建上传页面 实现文件下载功能创建文件下载控制器 安全性和最佳实践文件大小限制文件类型验证文件名和路径验证文件下载时的安全性 测试与部署示例:编写单元测试 部署结论 引言…

微服务之远程调用

常见的远程调用方式 RPC:Remote Produce Call远程过程调用,类似的还有 。自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo (12不再维护、17年维护权交给apac…

360数字安全:2024年4月勒索软件流行态势分析报告

勒索软件传播至今,360 反勒索服务已累计接收到数万勒索软件感染求助。随着新型勒索软件的快速蔓延,企业数据泄露风险不断上升,勒索金额在数百万到近亿美元的勒索案件不断出现。勒索软件给企业和个人带来的影响范围越来越广,危害性…

Vue16-绑定class样式

一、vue绑定class样式 1-1、需求一:字符串写法 vue实现class样式绑定 1-2、需求二 点击div,随机切换样式。 math.random():随机数的范围[0, 1) 1-3、需求三:数组写法 样式的追加 1-4、需求四 :对象写法 二、vue绑定…

Go语言设计与实现 学习笔记 第三章 数据结构(2)

删除 如果想要删除哈希中的元素,就需要使用Go语言中的delete关键字,这个关键字的唯一作用就是将某一个键对应的元素从哈希表中删除,无论该键对应的值是否存在,这个内建的函数不会返回任何结果。 在编译期间,delete关…