Node2Vec算法介绍

article/2025/11/6 20:44:14

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

本文约含1K字,阅读时长约4分钟。主要分为以下部分:

  • Node2Vec 介绍
  • Node2Vec 流程

Node2Vec 介绍

相比于Deepwalk 中图的随机游走策略,Node2Vec通过调整随机游走的概率,使得graph embedding的结果在“同质性”和“结构性”中进行权衡。我们用图1来说明:其中“同质性”指的是相邻的网络节点中,embedding表达应该相似,例如us1节点。而“结构性”指的是结构相似的网络节点中需要具有相似的embedding表达,例如us6节点。为了表达图网络的结构性,我们应该采用BFS (Breadth First Search,宽度优先搜索) 的方法来进行采样。这是因为BFS可以扫描局部的结构。同时为了表达图结构的同质性,我们采用DFS (Depth First Search,深度优先搜索) 的方法来进行扫描。通过调整随机游走的概率,其扫描过程可以在BFS和DFS之间进行权衡,我们下面将详细讲述。

图1 示例图结构。

Node2Vec 流程

首先,我们设定 G = ( V , E ) G = (V, E) G=(V,E) 作为我们的图,其中 V V V为图的节点, E E E 为图的边。对于任意一个节点 u ∈ V u \in V uV,我们模拟一个长度为 l l l的随机游走。我们设定 c i c_i ci为随机游走的第 i i i个节点,以 c 0 = u c_0=u c0=u 作为起始点,其中第 i i i个节点 c i c_i ci通过下列概率分布产生:

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 P(c_i=x | c_{i-1}=v) = \left\{ \begin{aligned} &\frac{\pi_{vx}}{Z} \quad if (v,x) \in E \\ &0 \quad otherwise \end{aligned} \right. P(ci=xci1=v)=Zπvxif(v,x)E0otherwise

其中 π v x \pi_{vx} πvx为是节点 v v v和节点 x x x的非归一化转移概率,Z为归一化常数。

最简单的方法是将 π v x \pi_{vx} πvx直接设为相连边的权重,即 π v x = w v x \pi_{vx}=w_{vx} πvx=wvx。这种方式与我们上次讲述的Deepwalk方法相同。然而这种方法不能充分考虑到图结构的同质性和结构性。因此,我们通过设定 π v x = α p q ( t , x ) w v x \pi_{vx}=\alpha_{pq}(t,x)w_{vx} πvx=αpq(t,x)wvx来调整节点之间的转移概率,其中:

α 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 \alpha_{pq}(t,x)= \left\{ \begin{aligned} &\frac{1}{p} \quad if \ d_{t,x} = 0 \\ &1 \quad if \ d_{t,x} = 1 \\ &\frac{1}{q} \quad if \ d_{t,x} = 2 \\ \end{aligned} \right. αpq(t,x)=p1if dt,x=01if dt,x=1q1if dt,x=2

我们在图2中进行说明:其中 t t t 为节点 v v v的上一个节点, d t , x d_{t,x} dt,x表示节点 t t t与节点 x x x的最短距离,例如如果两个节点直接相连,那么 d t x = 1 d_{tx}=1 dtx=1。如果两个节点为相同的节点, d t x = 0 d_{tx}=0 dtx=0。如果两个节点不相连,则 d t x = 2 d_{tx}=2 dtx=2。参数 p p p 为返回参数, p p p越小,节点返回 t t t的概率越高,图的遍历越倾向于BFS,越趋向于表示图的结构性。参数 q q q则被称为进出参数, q q q越小,遍历到远处节点的概率越高,图的遍历越倾向于DFS,同时越趋向于表示图的同质性。我们可以通过设置 p , q p,q p,q的值,来权衡graph embedding表达的结果的倾向性。

图2 节点之间的转移概率。

总的来说,Node2vec的流程如下:

  1. 获取用户与物品的交互序列。

  2. 依据生成的交互序列,生成对应的物品关系图。

  3. 使用改进的随机游走的方法(BFS和DFS的混合)产生物品序列。

  4. 将生成的序列通过word2vec模型进行embedding。

由于Node2Vec embedding中表达结果的多样性,我们甚至可以把不同倾向表达结果的embedding拼接起来,得到更丰富的embedding特征。

参考资料

[1]: https://zhuanlan.zhihu.com/p/64200072

[2]:node2vec: Scalable Feature Learning for Networks

更多算法基础知识介绍,前沿论文解读,欢迎关注微信公众号:口袋AI算法
在这里插入图片描述


http://chatgpt.dhexx.cn/article/6h0ZOG8O.shtml

相关文章

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…

python 中常见的快捷方式

相信大家在写代码的时候经常会用到快捷键,这不仅使编写代码的效率提高不少,还能装 X...下面整理了部分常见快捷键,后期会接着更新。废话不多说: 1.ctrlshiftA:万能命令行 可以新建一个python文件 2. shift两次:查看资源文件 3…

python的快捷键总结

电脑是解决众多问题的工具,尤其对于程序员而言,拥有一套快捷方式,在编程时,可以事半功倍,从而高效地完成工作任务,今天就带来一套快捷方式,仅供大家参考: 常见快捷方式: …

Python快捷键

1.注释(添加/消除)(Ctrl /) 这里说下Python的单行注释是 # , 多行注释是 注释内容 , java的单行注释是 // , 多行注释 /* 注释内容 */, 文档注释 /** 注释内容 */ 这里说的注释快捷键主要用于多行注释, 当你想把一段代码暂时注释掉的时候, 可以直接选中这段代码, 利用此快…