论文阅读:node2vec: Scalable Feature Learning for Networks

article/2025/11/6 17:49:58

node2vec: Scalable Feature Learning for Networks

摘要

基于网络中节点和边的预测任务中的特征工程总是很麻烦的。虽然表示学习的自动学习特征已经有很大的帮助,但现有的特征学习方式无法对网络中连接模式的多样性进行足够的捕捉。

node2vec是本论文提出的一种对网络中的节点学习连续特征表达的框架。通过将节点映射到maximizes the likelihood of preserving network neighborhoods of nodes的低维特征空间。

1.Intro

许多问题都需要对网络节点和边的预测。比如
* 社交网络中,预测用户的兴趣;或者在蛋白质网络中预测蛋白质的功能
* 预测两节点间是否有边相连,在基因工程中预测基因间的连接或社交网络中识别二人是否是朋友。

一般处理这种问题需要手工提特征,但是需要domain knowledge和人工,而且没有泛化性。

另一种方式是通过解一个优化问题学习一个特征表示(如word2vec)。挑战是怎么设目标函数,需要权衡计算复杂度和预测准确率。

现阶段方式缺少一种能学习可控长度特征的合理的目标函数。传统的PCA,多维缩放等降维方法通过maximize转特征空间后数据的方差,缺点是需要特征值分解,而且得到的样本表示在多种预测任务上的效果还不好。

所以定义一个目标函数来保存节点的局部邻居结构是一种方法。本论文的目标是提出一个灵活的学习节点表示的算法,既能将属于相同的社区的节点学习得到相近的嵌入;又能对有相似功能的节点(如在社区中的连接结构相似)学得相似的嵌入。

本文借鉴word2vec提出了node2vec,通过maximize the likelihood of preserving network neighborhoods of nodes in a d-dimensional feature space得到特征表示。利用二阶随机游走产生节点社区。

很明显,如何定义社区是关键。本文通过定义一系列的(biased)随机游走,探索一个节点的不同社区。这样算法是灵活的,同时参数不是固定的,而且比较好理解并能直到随机游走得到不同的探索网络方式。同时参数可以通过半监督学习得到。(Q:怎么样的随机游走,怎么半监督学习得到参数)

介绍一下论文实验场景:
1. multi-label classif i cation task, where every node is assigned one or more class labels
2. link prediction task, where we predict the existence of an edge given a pair of nodes.

实验结果:outperform SOTA by 10-20%,易并行。

2. 介绍相关工作

其实从这个框架命名上就可以看出,node2vec是借鉴了word2vec的。基本的idea相似,提取连续的特征表示,一个是从网络提取,一个是从document中提取。

正好之前读过word2vec的论文,附上笔记链接,其中的skip-gram是主要思路来源。相似的词总是出现在相近的位置,网络中相似的节点也有这种特点。

类比:网络就像一个document。document是有序的词序列,通过对一系列节点进行采样将网络序列化。不同的采样方法得到不同的特征表示。实验表明,没有一个特定的采样策略能对所有网络或者任务都适用。这一缺点论文通过设计目标函数可以借鉴。

3.node2vec

设定目标函数

maxfuVlogP(NS(u)|f(u)) m a x f ∑ u ∈ V l o g P ( N S ( u ) | f ( u ) )

其中

P(NS(u)|f(u))=niNS(u)P(ni|f(u)) P ( N S ( u ) | f ( u ) ) = ∏ n i ∈ N S ( u ) P ( n i | f ( u ) )

V V 是网络中节点的集合,f将节点映射到特征空间,可以理解为一个 Embedding E m b e d d i n g , S S 指得到节点邻居N的策略.

这个优化问题要做的就是maximizes the log-probability of observing a network neighborhood NS(u) N S ( u ) for a node u u conditioned on its feature representation, given by f.

这个目标函数和skip-gram如出一辙,用softmax算概率,negative sampling加速。

和skip-gram只用选择window size不同,node2vec需要考虑不同方式对节点采样得到其邻居。

Search strategies

为方便讨论,限制邻居集大小k=3,考虑两种极致:
* BFS 宽搜,如图中红色箭头,u的邻居包括 s1,s2,s3 s 1 , s 2 , s 3
* DFS 深搜,蓝色箭头,邻居 s4,s5,s6 s 4 , s 5 , s 6

这里写图片描述
对网络节点的预测也要考虑两种相似性,homophilystructural equivalence。homophily,同质性,属于同一社区,相连比较紧密的节点应该有相似的嵌入,比如图中的u和 s1 s 1 ; structural equivalence同构,结构相似的节点应该有相似的嵌入,如u和 s6 s 6

特别的,同构的节点不强调连接线。有的节点距离很远但是在网络中结构相同。网络通常显示两种特点因为其中有表现同质性的节点也有表现同构的节点。

观察到,宽搜能捕捉同构性节点,深搜能捕捉同质性节点。

node2vec

a flexible biased random walk procedure that can explore neighborhoods in a BFS as well as DFS fashion
Random Walks

给源节点 u u ,模拟一个长为l的随机游走。设 ci c i 为游走的第 i i 个节点,起始节点c0=u。节点 ci c i 服从一下分布:

P(ci=x|ci1=v)={πvxZ0if(v,x)Eotherwise P ( c i = x | c i − 1 = v ) = { π v x Z i f ( v , x ) ∈ E 0 o t h e r w i s e

其中 πvx π v x 是没有标准化的节点v到x的转移概率,Z用于标准化。

Search Bias α α

直接设转移概率为边的权重 πvx=wvx π v x = w v x 不能有效考虑网络结构和搜索不同的邻居空间,所以本论文是这样设置bias的.

该随机游走有两个参数p和q。考虑刚刚遍历了边 (t,v) ( t , v ) ,现在在节点v要根据转移概率 πvx π v x 觉得下一个节点x。设 πvx=αpq(t,x)wvx π v x = α p q ( t , x ) ⋅ w v x ,其中

αpq(t,x)=1p11qif dtx=0if dtx=1if dtx=2 α p q ( t , x ) = { 1 p i f d t x = 0 1 i f d t x = 1 1 q i f d t x = 2

dtx d t x 表示节点t和x间最短距离( 注意是t到x的距离,不是v到x的距离),只能属于 {0,1,2} { 0 , 1 , 2 } 。参数 p p q相当于调节BFS和DFS的程度。

这里写图片描述
p p 称为Return parameter,决定再访问节点的可能性。若p值调高 ()>max(q,1)) ( ) > m a x ( q , 1 ) ) ,可以保证在两步内采样已访问过的节点的可能性比较低;若 p p 调低(<min(q,1)),会使得游走变得比较拘于局部。

q q 称为In-out parameterq>1游走会选择里t近的节点,以此达到接近BFS的效果; q<1 q < 1 游走会选择离t更远的节点,达到类似DFS的效果。

随机游走的优点:时间复杂度和空间复杂度优于DFS/BFS.

The node2vec algorithm

这里写图片描述
伪代码比较好懂,转移概率矩阵可以提前算好,对图中的每个节点,进行r次随机游走得到r个长为l的walk。可以理解成每个给每个节点造句,r个l长的句子,全部节点的游走合起来就得到了这个网络的语料库,经过类似skip-gram的训练可得节点的Embedding.

4.实验

本论文实验部分做的非常详尽。有节点分类和边预测两个任务,各在3各数据集上做实验,同时和谱聚类,DeepWalk,LINE3种算法做严格的对比实验。还对node2vec做了敏感度分析,抗干扰分析,以及scalability.

实验部分值得学习的地方在于他们实验真的做的很全面,在和其他算法对比的时候,控制变量做的很严谨,尽量使各算法在同一起跑线,做到比较公正。其次是对参数p和q的调试也做到了比较完整的探讨。所以能得到node2vec全面优于被比较的算法也是比较可信的。

5.总结与收获

算法对比实验中,除了谱聚类,其他的算法都使用了Embedding这种连续的特征表示,而且实验结果一致的好于谱聚类。这说明Embedding这种方式如在nlp中一样,对网络相关的任务也带来了好处。

和nlp的语料库不同的是,网络中每个节点的邻居集如何选择会很大程度的影响Embedding的效果。本论文的创新之处就在于提出了一种灵活的选择节点邻居的方法,并通过实验证明比其他的方法更有效。

另外有一个地方值得注意,link prediction中,在判断两节点是否有边相连的时候,论文讨论了如何结合两节点的特征人(如下表)。实验中Hadamard操作符(i.e., element-wise multiply)在node2vec上表现最好。为什么会出现这种情况是值得深入研究的.

这里写图片描述

连续特征表示是一个非常底层的技术,就如word embedding相当于nlp的基石,在上面可以有各种应用,如机器翻译,阅读理解等等。node2vec也是相当于在各种网络问题上面加一层特征转化,以方便之后的各种任务。


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

相关文章

node2vec笔记

node2vec论文&#xff1a;https://dl.acm.org/citation.cfm?id2939754 node2vec作者KDD口头报告视频&#xff1a;https://www.youtube.com/watch?v1_QH5BEP5BM node2vec是deepwalk的一个扩展&#xff0c;主要考虑了两点&#xff1a;(1)邻近性&#xff0c;即节点在图上的距离…

图嵌入 Node2Vec

文章目录 图嵌入之 Node2Vec1 两个概念2 两种节点采样方法3 Node2Vec 中的二阶 Random Walk3.1 Random Walks 的定义3.2 搜索偏置 α \alpha α 4 二阶 Random Walk 的优势5 算法步骤 图嵌入之 Node2Vec 论文地址 https://arxiv.org/pdf/1607.00653.pdf 对 Random Walk 中随机…

node2vec的一些思考

概述 论文主要观点 本文将抽取网络中节点的特征转化成最优化一个“可能性”目标函数问题&#xff0c;这个“可能性”是该节点可以保存其邻居节点的信息。 成果 node2vec&#xff0c;如上述&#xff0c;利用SGD优化&#xff0c;高效“随机选择邻居”算法&#xff0c;可让node2v…

Node(二)

一、node的文件系统 1、二进制文件的读写&#xff08;按字节读写&#xff1a;一个字节是8个二进制位&#xff09; &#xff08;1&#xff09;读二进制文件 fs.read(fd&#xff0c;buffer&#xff0c;offset&#xff0c;length&#xff0c;position&#xff0c;callback) fd…

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

node2vec: Scalable Feature Learning for Networks 可扩展的 图嵌入 表示学习算法 可扩展&#xff1a;算法可用于互联网规模级别的数据&#xff0c;在有限的时间和空间中 图嵌入&#xff1a;将图的连接信息嵌入到连续、低维、稠密的D维空间中 表示学习&#xff1a;用数据驱…

Graph Embedding(DeepWalk,LINE,Node2vec)

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

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

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

Node2Vec算法介绍

大家好&#xff0c;我是Linzhuo&#xff0c;今天又来给大家分享graph embedding的相关知识啦。 在上一篇文章中&#xff0c;我们介绍了graph embedding的经典方法&#xff1a;Deepwalk&#xff0c;其通过随机游走(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 &#x1f308; 本节我们来探索一下虚拟DOM&#xff0c;将会从以下4个方面进行阐述&#xff1a; 虚拟DOM的本质虚拟DOM的优势虚拟DOM转换真实DOM 过程虚拟DOM树 diff算法 虚拟DOM的本质 ⭐️虚拟DOM 本质上是一个 js 对象&#xff0c;用于描述页面的结构&#x…

deepwalknode2vec 代码实战

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

Node2Vec

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

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

从word2vec到node2vec

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

详解Node2vec以及优缺点

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

node2vec论文阅读

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

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

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

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

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