Node2Vec算法介绍

本文深入讲解了Node2Vec,一种改进的图嵌入方法。相较于Deepwalk,Node2Vec通过调整随机游走策略,兼顾“同质性”和“结构性”,在BFS和DFS之间寻找平衡。通过参数p和q,控制图遍历的倾向,以获得更丰富的图特征表示。流程包括:构建图、随机游走、序列嵌入和最终的特征学习。
摘要由CSDN通过智能技术生成

大家好,我是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算法
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值