【论文精读】node2vec: Scalable Feature Learning for Networks

article/2025/11/6 20:54:57

node2vec: Scalable Feature Learning for Networks

可扩展的 图嵌入 表示学习算法

可扩展:算法可用于互联网规模级别的数据,在有限的时间和空间中

图嵌入:将图的连接信息嵌入到连续、低维、稠密的D维空间中

表示学习:用数据驱动方式,机器学习构造特征,不是人工构造特征。

Abstract

之前的DeepWalk只能将相邻的节点信息捕捉,对于距离较远的节点不能捕捉信息。这是因为DeepWalk的游走长度和游走策略的限制。

Node2Vec不是完全的随机游走,虽然是随机选择起始节点,但对于下一个节点的选择则是由权重决定。对于节点的选择有两种极端方案:

  • DFS(Macro-view of neighbourhood):下图中q值较小,p值较大,当前节点V更倾向于向外走
  • BFS(Micro-view of neighbourhood):p值较小,q值较大,更愿意返回上一个节点 t t t

在这里插入图片描述

这里用广度优先和深度优先来近似表示这两种方案

  • DFS更倾向于表示节点的同质性(Homophily),即相近节点的Embedding应该相似,在下图中,节点 u u u s 1 , s 2 , s 3 , s 4 s1,s2,s3,s4 s1,s2,s3,s4的embedding应该是相似的。因为DFS有可能通过多次跳转,游走到更远的节点上,但无论怎样,DFS生成的游走序列仍然是在一个大的集团的内部进行,这就是大的社群内节点的Embedding更为相似;
  • BFS倾向于捕捉节点间的结构性(Structural Equivalence),即结构上相似的节点的Embedding应该尽量接近。例如下图中的节点 u u u s 6 s_6 s6。因为BFS会更多地在当前节点的邻域中进行游走遍历,对当前节点周围的网络结构进行一次扫描。

Node2Vec可以通过调参在两种极端方案之间平滑的变化。
在这里插入图片描述

特点(优点):

  • 通过调节p、q值,实现有偏的随机游走,探索节点社群、功能等不同属性。DeepWalk可以看做是Node2Vec在p=1,q=1的特例。

  • 首次把Node Embedding用于Link Prediction

  • 可解释性、可扩展性号

缺点:

  • 和DeepWalk一样,仍然需要大量的随机游走序列训练,是管中窥豹
  • 随机游走序列有长度限制,距离较远的两个节点无法直接相互影响,看不到全图信息(图神经网络)
  • 无监督学习,仅编码图的连接信息,没有利用节点的属性特征(图卷积)
  • 没有真正用到神经网络和深度学习

Introduction

很多重要的任务都与预测网络的节点和边有关。在经典的节点分类任务中,我们希望预测节点的最有可能的标签。例如,在社交网络中,我们可能预测用户的兴趣或者在蛋白质相互作用网络中,我们可能预测蛋白质的功能。

在连接预测中,我们也希望预测图中的两个节点之间是否存在相连的边,连接预测在很多领域都是适用的。例如在基因组学中,它帮助我们预测基因之间未经发现的相互连接;在社交网络中,它可以识别两个用户之间的联系。

下面提出一些方案,并给出其缺陷之处,最后引出自己提出的方案

任何监督学习的机器学习算法都需要许多内含丰富语义的、有分类区分性的、彼此相互独立的特征。在图的预测任务中,这要给节点和边构建特征向量。

传统的解决方案是根据专家知识人工设计特征。这样做的弊端,即使不考虑人工设计特征的繁琐,这样的方案只能是为专门的任务设计,并不能适用于大多数预测任务。

一个替代方案是通过求解一个优化问题来学习图中节点和边的特征表示。这里的关键是定义一个合适的目标函数,它涉及到在计算效率和预测精度之间的平衡。

  • 只看预测精度:如果直接求解使得在下游任务上取得最好表现的特征表示;虽然可以取得好的精度,但由于参数数量的激增使得需要花费的训练时间激增
  • 如果将目标和函数定义为与下游任务无关并且用无监督学习方法来学习特征表示,这样产生的特征表示与监督学习方法产生的特征在预测精度上相媲美。

然而,当前的技术还不能定义和优化网络中可扩展的、无监督的特征学习方法所需的合理目标。

基于线性和非线性降维技术(如主成分分析、多维缩放及其扩展)的经典方法优化了一个目标,该目标转换网络的代表性数据矩阵,从而使数据表示的方差最大化。由于计算的复杂性,这种涉及到**特征值缩减(eigendecomposition)**的方法是不适用于真实世界的大规模图数据,并且得到的特征表示在多个预测任务上表现不佳。


我们可以设计一种目标函数,保存节点的局部邻域信息。这个目标函数可以使用随机梯度下降有效优化,类似于只有单层的神经网络中的反向传播算法。在这个方向上的研究,例如DeepWalk和LINE,他们虽然可以有效得到特征表示,但其依赖于僵硬的模式,对图特有的连接模式不敏感(总的来说就是不能捕捉全图连接模式,只能捕捉局部信息)。

图中节点的组织有两大类思路:

  • 根据其所属的社群
  • 根据其在网络中扮演的角色

在下图中,节点 u u u s 1 s_1 s1属于同一社群,节点 u u u s 6 s_6 s6在图中具有相近的功能角色,都是各自子图的枢纽。而真实世界的网络是这两种模式的混合。

在这里插入图片描述

因此,需要一种更灵活的算法,能将距离或功能角色相近的节点嵌入到距离相近的向量中。


这里作者引出了自己的工作

Present Work

我们通常了node2vec,一种可扩展的半监督学习算法在图的特征学习上。我们使用SGD优化了一个自定义的基于图的目标函数,该方法是源于Word2vec在自然语言处理领域的启发。直观上看,我们的方法返回的特征表示最大化了在d维空间中保留节点的网络邻域信息的似然概率。我们使用二阶随机游走去采样节点的相邻节点。

二阶随机游走(二阶马尔可夫性):下一节点不仅与当前节点有关,还与上一节点有关。

key contribution

  • 定义了一种灵活的节点采样策略。

    基于此,node2vec学习到的特征可以将节点根据其所属邻域和功能角色所划分。相比较与DeepWalk和LINE,该算法是灵活的,根据可以调节的参数来控制随机游走搜索的空间。该参数对于随机游走搜索的空间有一个直观的解释,这些参数也可以通过一小部分有标注的数据用半监督学习的方法学习得到。

  • 将节点的特征表示延伸到了边的特征表示,通过对已经学到的一对节点的特征表示进行二元操作,这些可用于边的预测。

代码实战

悲惨世界人物关系-Node2Vec图嵌入

参考资料

同济子豪兄

Darts, Dice, and Coins: Sampling from a Discrete Distribution

Alias Method: 非均匀随机抽样算法

DBSCAN聚类算法——机器学习(理论+图解+python代码)


http://chatgpt.dhexx.cn/article/w5qD65h2.shtml

相关文章

Graph Embedding(DeepWalk,LINE,Node2vec)

为什么要对图进行嵌入? 直接在这种非结构的,数量不定(可能数目非常多),属性复杂的 图 上进行机器学习/深度学习是很困难的,而如果能处理为向量将非常的方便。但评价一个好的嵌入需要: 保持图属…

深度学习 - 33.GraphEmbedding Node2vec 图文详解

一.引言 前面介绍了如何生成带权的图: GraphEmbedding - networkx获取图结构 从带权的图随机游走生成序列: GraphEmbedding - DeepWalk 随机游走 embedding 向量的评估与可视化: GraphEmbedding - embedding 向量的降维与可视化 以及复杂度O(1)的采样算法 Alias: GraphEmbe…

Node2Vec算法介绍

大家好,我是Linzhuo,今天又来给大家分享graph embedding的相关知识啦。 在上一篇文章中,我们介绍了graph embedding的经典方法:Deepwalk,其通过随机游走(Random walk)的方式将Graph embedding与Word embedding的方法(w…

KDD 2016 | node2vec:Scalable Feature Learning for Networks

目录 前言Abstract1.IntroductionPresent work 2.Related Work3.Feature Learning Framework3.1 Classic search strategies3.2 node2vec3.2.1 Random Walks3.2.2 Search bias α \alpha α3.2.3 The node2vec algorithm 3.3 Learning edge features 4.Experiments4.1 Case St…

PyG基于Node2Vec实现节点分类及其可视化

文章目录 前言一、导入相关库二、加载Cora数据集三、定义Node2Vec四、定义模型五、模型训练六、可视化完整代码前言 大家好,我是阿光。 本专栏整理了《图神经网络代码实战》,内包含了不同图神经网络的相关代码实现(PyG以及自实现),理论与实践相结合,如GCN、GAT、GraphS…

浅析 v-node

浅析 v-node 🌈 本节我们来探索一下虚拟DOM,将会从以下4个方面进行阐述: 虚拟DOM的本质虚拟DOM的优势虚拟DOM转换真实DOM 过程虚拟DOM树 diff算法 虚拟DOM的本质 ⭐️虚拟DOM 本质上是一个 js 对象,用于描述页面的结构&#x…

deepwalknode2vec 代码实战

提示:笔记内容来自于B站up主同济子豪兄 文章目录 1. Embedding嵌入的艺术2. deepwalk2.1. 什么是图嵌入?2.2. deepwalk的步骤1、生成graph;2、利用random walk生成多个路径;3、训练表示向量的学习;4、为了解决分类个数…

Node2Vec

Node2Vec 论文名称:node2vec: Scalable Feature Learning for Networks 论文地址:https://www.kdd.org/kdd2016/papers/files/rfp0218-groverA.pdf Node2Vec是用于学习网络节点的连续特征表示。node2vec将节点映射为低维特征表示,最大化网…

node2vec python 实现和理解

1. 安装 pip install node2vec 2. 使用案例 import networkx as nx from node2vec import Node2Vec# Create a graph 这里可以给出自己的graph graph nx.fast_gnp_random_graph(n100, p0.5)# Precompute probabilities and generate walks - **ON WINDOWS ONLY WORKS WITH …

node2vec的一些理解

node2vec node2vec也是一种网络嵌入的表示方法,它是基于DeepWalk的基础上进行改进的。主要改进的地方在于它在随机游走的过程中加入了一个权重,使得游走可以采用深度优先和广度优先的策略进行游走。 Search bias α 使得随机游走产生片偏差的最简单的…

从word2vec到node2vec

word2vec 1. 什么是word2vec 在自然语言处理任务(NLP)中,最细粒度是词语,所以处理NLP问题,首先要处理好词语。 由于所有自然语言中的词语,都是人类的抽象总结,是符号形式的。而对于数学模型&a…

详解Node2vec以及优缺点

1. 论文介绍 首先介绍了复杂网络面对的几种任务: 网络节点的分类,通俗点说就是将网络中的节点进行聚类,我们关心的是哪些节点具有类似的属性,就将其分到同一个类别中。链接预测,就是预测网络中哪些顶点有潜在的关联。…

node2vec论文阅读

本文要阅读的论文来自数据挖掘领域的顶级会议KDD-2016. 论文介绍了一种Graph representation方法 得益于CNN以及Seq2seq等模型,深度学习在图像和自然语言处理等领域有很好的应用。然而在涉及到图(有向图,无向图)结构的应用比如社…

【Graph Embedding】node2vec:算法原理,实现和应用

前面介绍过基于DFS邻域的DeepWalk和基于BFS邻域的LINE。 DeepWalk:算法原理,实现和应用 LINE:算法原理,实现和应用 node2vec是一种综合考虑DFS邻域和BFS邻域的graph embedding方法。简单来说,可以看作是eepwalk的一…

图与推荐系统(一):Graph Embedding之node2vec (原理 + 代码实战)

文章目录 一. 介绍二. 公式三. 代码细节四. 代码 一. 介绍 node2vec是一种综合考虑DFS邻域和BFS邻域的graph embedding方法。简单来说,可以看作是deepwalk的一种扩展,是结合了DFS和BFS随机游走的deepwalk。node2vec通过调整方向的参数来控制模型更倾向B…

图神经网络之Node2Vec详解

目录 背景传统算法存在的问题算法背景动机 算法随机序列的生成Node2Vec算法算法的具体流程: 总结相关资料 背景 传统算法存在的问题 一些方法中所提出的特征需要依赖人手工定义,这需要特定领域内专业人士来完成,而且依靠人手工定义特征的有…

node2vec算法

图嵌入算法 一、背景1.提出2.应用3.特点 二、DeepWalkRandomWalk 三、node2vec引言node2walkskip-gram(用中心词预测周围词) 一、背景 1.提出 ①使用邻接矩阵表示网络时,由于矩阵中大多数元素是0,难以体现节点间关系,同时数据的稀疏性使得计…

node2vec代码实现及详细解析

目录 前言1.数据导入2.node2vecWalk2.1 归一化转移概率2.1.1 原理解析2.1.2 Alias采样2.1.3 代码实现 2.2 node2vecWalk的实现 3.LearnFeatures4.参数选择5.完整代码 前言 在KDD 2016 | node2vec:Scalable Feature Learning for Networks 中我们详细讨论了node2vec…

Node2vec原理剖析,代码实现

DeepWalk原理介绍 与词嵌入类似,图嵌入基本理念是基于相邻顶点的关系,将目的顶点映射为稠密向量,以数值化的方式表达图中的信息,以便在下游任务中运用。 Word2Vec根据词与词的共现关系学习向量的表示,DeepWalk受其启…

Python(Pycharm)常用快捷键

1. Pycharm一键给所有代码加# CtrlA或者Ctrl/ 2. Pycharm格式化代码快捷键(即标准化) CtrlAltL 【注】qq也可能有此快捷键,把qq删掉就行 其实改掉Pycharm的里面的设置也可以(这样就不会冲突了) add keyboard shor…