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

图神经网络实战(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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/698005.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8S - 用kubectl远程访问内网的k8s集群

在之前的文章 K8S - 在任意node里执行kubectl 命令 介绍过, 通过任何node 的主机, 用kubectl 管理集群是很简单 无非就是两个步骤: 下载 k8s master 上的admin.conf在当前主机配置 K8SCONFIG 环境变量指向 下载的config file 其他内网主机也适用 其…

【图书推荐】《分布式数据库HBase案例教程》

本书重点 最后一章HBase项目实战——论坛日志分析,可以作为研究课题和毕业论文素材,值得收藏。 本书配套示例源码、PPT课件、开发环境、教学视频、习题及答案以及其他丰富的教学资源,方便自学。 内容简介 本书定位是HBase从入门到应用的简…

探索智慧机场运营中心解决方案的价值与应用

随着全球航空业的不断发展,机场运营中心的作用日益凸显。智慧机场运营中心解决方案以其高效的管理和智能化的运营模式,成为优化机场运营、提升服务水平的重要工具。本文将深入探讨智慧机场运营中心解决方案的价值与应用,揭示其在机场管理中的…

[大模型]GLM-4-9B-Chat vLLM 部署调用

vLLM 简介 vLLM 框架是一个高效的大型语言模型(LLM)推理和部署服务系统,具备以下特性: 高效的内存管理:通过 PagedAttention 算法,vLLM 实现了对 KV 缓存的高效管理,减少了内存浪费&#xff0…

python脚本打包为exe并在服务器上设置定时执行

python脚本打包为exe并在服务器上设置定时执行 1. Python脚本打包2. 将打包好的Python脚本放入服务器3. 在服务器上设置其定时执行 1. Python脚本打包 首先,下载pyinstaller 键盘winR打开终端,输入命令:pip install pyinstaller,…

nodejs:centos7安装nodejs-v20.14.0

# 升级glibc 请参考【https://blog.csdn.net/chenhz2284/article/details/139584458?spm1001.2014.3001.5502】 # 升级libstdc 请参考【https://blog.csdn.net/chenhz2284/article/details/139584721?spm1001.2014.3001.5502】 # 安装nodejs cd /chz/install/nodejs# 下…

解决Vue项目Network: unavailable的问题

在vscode使用 npm run serve 运行 Vue项目时发现一个问题,项目只能通过Local访问而不能通过Network访问,终端显示如下: 碰到这种情况的解决方法:在环境变量的path中添加“C:\Windows\System32\Wbem” 1.找到“环境变量”&#xf…

达梦数据库搭建守护集群

前言 DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏)、自然灾害(地震、火灾&#xff09…

【python】python 电子产品销售分析可视化(数据集+源码)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

【已解决】chrome视频无法自动播放的问题

问题: 在用datav开发大屏的时候,放了一个视频组件,但是发现视频组件即使设置了自动播放,仍然无法自动播放 原因: 76 以上版本的谷歌浏览器只能在系统静音下自动播放 解决: 音频自动播放浏览器白名单设置&…

幕墙设计乙级资质:企业技术负责人经验与教育背景

幕墙设计乙级资质中,对企业技术负责人的经验与教育背景有着明确的要求。以下是具体的解读: 一、教育背景 企业技术负责人应具备大学本科或以上学历,这是对其基本教育背景的要求。同时,这一学历背景通常需要在建筑、土木工程、结构…

一文细谈SNN的基本数学原理,LIF模型,STDP与STBP学习方法

首先本文是读完 如何看待第三代神经网络SNN?详解脉冲神经网络的架构原理、数据集和训练方法 原创-CSDN博客 一文通俗入门脉冲神经网络(SNN)第三代神经网络-CSDN博客 两篇文章的总结,文章仅用于学习。 本文主要讨论STDP和STBP方法。 我们都知道&…

YoloV9改进策略:Block篇|FFA-Net:用于单图像去雾的特征融合注意力网络(独家原创)

摘要 本文使用FFA-Net的Block改进YoloV9,使用Block替换RepNCSP中的RepNRes,非常简单!Block由卷积、通道注意力、像素注意力组成。结构图如下: 论文翻译:《FFA-Net:用于单图像去雾的特征融合注意力网络》…

夺冠了!U19国足是什么?这场夺冠对于中国足球意味着什么?

夺冠了!U19国足是什么?这场夺冠对于中国足球意味着什么? 在2024年“丝绸之路华山杯”渭南国际足球邀请赛中,中国U19国家男子足球队以出色的表现,力压群雄,最终夺得冠军。这一成绩不仅是对U19国足队员们辛勤…

ROS1配置husky仿真环境遇到的一些问题+方法论

ROS 系列学习教程(总目录) 本文目录 一、问题描述二、问题分析2.1 分析日志2.2 尝试一(失败)2.3 尝试二(成功) 三、husky仿真需要安装的软件包四、总结 - 方法论4.1 文件路径不合法4.2 文件内容不合法4.3 ROS 环境变量4.3.1 方法一…

Spring Boot集成tablesaw插件快速入门Demo

1.什么是tablesaw? Tablesaw是一款Java的数据可视化库,主要包括两部分: 数据解析库,主要用于加载数据,对数据进行操作(转化,过滤,汇总等),类比Python中的Pandas库;数据…

idea鼠标滚轮滚动放大缩小字体

在idea中的【file】->【settings】菜单,弹出settings窗口,点击窗口中的【Editor】->【General】,在右侧窗口中,选中【Change font size with CtrlMouse Wheel in All editors】即可。

Apollo9.0 PNC源码学习之Control模块(二)

前面文章:Apollo9.0 PNC源码学习之Control模块(一) 本文将对具体控制器以及原理做一个剖析 1 PID控制器 1.1 PID理论基础 如下图所示,PID各参数(Kp,Ki,Kd)的作用: 任何闭环控制系统的首要任务是要稳、准、快的响…

AdroitFisherman模块测试日志(2024/6/10)

测试内容 测试AdroitFisherman分发包中SHAUtil模块。 测试用具 Django5.0.3框架,AdroitFisherman0.0.31 项目结构 路由设置 总路由 from django.contrib import admin from django.urls import path,include from Base64Util import urls urlpatterns [path(ad…

教育的数字化转型——Kompas.ai如何变革学习体验

引言 在现代教育中,数字化转型逐渐成为提升学习效果的重要手段。随着科技的进步,人工智能(AI)在教育领域的应用越来越广泛。本文将探讨教育数字化转型的发展趋势,并介绍Kompas.ai如何通过AI技术变革学习体验。 教育数…