目录
- 前言
- Abstract
- 1.Introduction
-
- Present work
- 2.Related Work
- 3.Feature Learning Framework
-
- 3.1 Classic search strategies
- 3.2 node2vec
-
- 3.2.1 Random Walks
- 3.2.2 Search bias α \alpha α
- 3.2.3 The node2vec algorithm
- 3.3 Learning edge features
- 4.Experiments
-
- 4.1 Case Study: Les Misérables network
- 4.2 Experimental setup
- 4.3 Multi-label classification
- 4.4 Parameter sensitivity
- 4.5 Perturbation Analysis
- 4.6 Scalability
- 4.7 Link prediction
- 5.Discussion and Conclusion
前言
题目:node2vec:学习网络的可扩展特征 会议:KDD2016 论文地址:node2vec: Scalable Feature Learning for Networks
本文将解读斯坦福大学的Aditya Grover和Jure Leskovec在KDD2016年发表的论文《Scalable Feature Learning for Networks》。本文提出了一种高效的网络扩展特征学习方法–node2vec。
这篇文章有很多实验,所以全文略长。
Abstract
目前的特征学习方法不足以表达。
因此,本文提出node2vec方法:一种用于学习网络算法框架node2vec 中,
node2vec核心是定义节点网络邻域的灵活概念,设计有偏差的随机游走过程,有效探索不同的邻域。
1.Introduction
网络分析中的许多重要任务都涉及到对节点和边缘的预测。
在一个中,我们可以该网络中最有可能的节点标签。例如,在社交网络中,我们可以预测用户可能感兴趣的对象;或者在蛋白质-蛋白质网络中,我们可以预测蛋白质的功能标签。
如果是,我们可以预测网络中的两个节点是否应该连接起来。例如,在社交网络中两个用户是否是朋友。
显然,任何监督机器学习算法都需要一组特征。 典型的手工构建方法是基于专家知识,但显然不能在不同的预测任务中推广。
另一种方法是解决一个问题实现特征表示。然而,目前的技术无法很好地定义和优化一个合理的目标,以实现网络中可伸缩的无监督学习。
线性和非线性降维技术等经典方法有很大的局限性:
- 如主成分分析、多维扩展等都涉及到,就现实生活中的大数据而言,。
- 此外,具体任务中采用传统方法学习的特征。
PCA可参考降维基础知识(样本均值、样本方差、中心矩阵)和数学过程PCA(最大投影方差,最小重构成本,SVD分解)
除了传统的方法,我们还可以设计优化目标来寻求保存,目标可以通过SGD优化。但这种方法依赖于严格的网络邻域概念,这在很大程度上导致了这些方法。具体来说,网络中的节点可以根据其所属节点组织(即同质性);在其他情况下,可以基于网络中的节点进行组织。 例如在图1中:节点 u u u和 s 1 s_1 s1属于同一个节点社区,节点紧密结合 u u u和 s 6 s_6 s6在两个不同的社区中都扮演着中枢节点的角色。
Present work
本文的主要贡献是定义了一个灵活的。通过一个有偏随机游走来有效地探索给定节点的不同社区,然后返回一个游走序列。
算法是,可以通过可调参数控制搜索空间,而不是像之前的方法那样死板。
搜索什么?我们需要学到一个节点的特征向量表示,在此之前,我们首先要找到该节点的邻域节点,这些节点可以通过某种方法来生成,而这也是本文的重点。
有了节点的特征表示后,通过将两个节点的特征表示进行某种组合,就能这对节点的特征表示,也就是边的特征表示,进而就能进行边的预测。
本文的实验部分主要进行了在网络中两个比较常见的预测任务:
- 多标签分类任务:预测某个节点的标签
- 链接预测任务:预测两个节点间是否存在边。
总结本文贡献:
- 提出了一种高效的网络的可拓展特征学习方法:node2vec。
- 展示了node2vec如何符合现有网络预测中已有的原则,但同时又有灵活性在里面。
- 扩展了node2vec和其他基于邻域的特征学习方法,从节点到节点对,用于基于边的预测任务。
- 对node2vec在多个真实数据集上的多标签分类和链接预测进行了评估。
2.Related Work
这一节简单回顾了网络特征学习的相关工作。
通常利用图的各种矩阵表示的性质,特别是拉普拉斯矩阵和邻接矩阵来进行特征学习。这点有在前文中提到,计算代价很大,并且效果也不是很好。
nlp中表示学习的最新进展为词汇等离散对象的特征学习开辟了新途径。Skip-gram模型旨在通过优化邻域保持似然目标来学习单词的连续特征表示。
skip-gram可以参考:论文阅读:Efficient Estimation of Word Representations in Vector Space
对于基于节点和基于边的预测任务,最近也有很多新的工作,这些体系结构使用多层非线性转换直接最小化下游预测任务的损失函数,从而获得较高的精度,但由于。
3.Feature Learning Framework
这部分介绍node2vec的细节。 将网络中的特征学习定义为一个最大似然优化问题。 G = ( V , E ) G=(V,E) G=(V,E)表示网络。 f : V → R d f:V \to R^d f:V→Rd表示节点到其特征表示的映射函数, d d d是特征表示的维度, f f f是一个大小为 ∣ V ∣ × d |V| \times d ∣V∣×d的矩阵, ∣ V ∣ |V| ∣V∣是节点个数,也就是说每个节点的特征表示都是一个 d d d维的向量。
对每一个节点 u u u,定义 N s ( u ) N_s(u) Ns(u)是通过邻域抽样策略 S S S生成的节点 u u u的网络邻域, N s ( u ) N_s(u) Ns(u)是原始图中结点集 V V V的子集。
将nlp中的skim-gram架构扩展到网络学习中:优化以下目标函数()
P r ( N s ( u ) ∣ f ( u ) ) P_r(N_s(u)|f(u)) Pr(Ns(u)∣f(u))表示根据一个节点的特征表示来观察其邻域的对数概率。最大化该概率的意义是什么?个人理解:
为了使上述优化问题易于处理,作者给出了两点假设:
- 有条件的独立。我们通过假设观察一个邻域节点的可能性与观察任何其他邻域节点的可能性是的: 很好理解!
- 特征空间的对称性。源节点和邻域节点在特征空间中具有对称效应。据此,我们将每个源-邻域节点对的条件似然建模为softmax单元:
在上述两个假设下,公式1中的优化问题可以简化为: 其中 Z u Z_u Zu的表达式如下所示: Z u = ∑ v ∈ V e x p ( f ( u ) ⋅ f ( v ) ) Z_u=\sum_{v \in V}exp(f(u)\cdot f(v)) Zu=v∈V∑exp(f(u)⋅f(v))
对于大型网络,每个节点的 Z u Z_u Zu的计算代价很高,因此使用负采样来近似它。
那怎么得到 N s ( u ) N_s(u) Ns(u)呢?下面将一一介绍!
3.1 Classic search strategies
对节点的邻域进行采样的经典策略主要包括两种:BFS和DFS,如下所示: 给定一个源节点 u u u,我们的任务是找到它的邻域节点集合 N s ( u ) N_s(u) Ns(u),假设我们需要采样 k k k个节点。
- BFS:只能采样与 u u u相邻的节点,例如上图中要寻找节点 u u u的大小为3的邻域集合,则可以选择 s 1 , s 2 , s 3 s_1,s_2,s_3 s1,s2,s3三个节点。
- DFS:按照距离源节点距离依次增加的顺序进行采样,比如说对于节点 u u u可以选择 s 4 , s 5 , s 6 s_4,s_5,s_6 s4,s5,s6三个节点。
根据,属于相似网络集群的高度互联节点应该嵌入到一起,比如上图中的 u u u和 s 1 s_1 s1,它们就属于同一网络集群。
而根据结构等价假设,在网络中具有相似结构角色的节点应该嵌入到一起,比如。
结构等价不同于同质性,它,它们可能距离很远,这一点很重要。
BFS仅限于与源节点相连的节点,倾向于在初始节点的周围游走,可以反映出一个节点的邻居的。
而DFS(可以重复访问)一般会跑得离源节点越来越远,可以反映出一个节点邻居的。
两种方法的局限都很明显:。
3.2 node2vec
DFS和BFS都有各自的优缺点,于是本文提出了node2vec。下面介绍node2vec的细节。
3.2.1 Random Walks
给定一个源节点 u u u,我们需要获得一个采样序列,序列长度为 l l l。节点由以下分布生成: 其中 c i c_i ci表示第 i i i个采样的节点。可以看出,第 i i i个采样的节点与第 i − 1 i-1 i−1个采样的节点有着密切关系。 π v x \pi_{vx} πvx表示两个节点间的, Z Z Z是归一化常数。
当第 i i i个节点是 v v v时(初始为 u u u),我们采样下一个节点时,先找出所有与 v v v相连的结点,然后算出 v v v与这些结点间的非归一化转移概率,随后再进行采样。
3.2.2 Search bias α \alpha α
上图中,对于一个随机游走,如果已经采样了 ( t , v ) (t, v) (t,v) ,也就是说现在停留在节点 v v v上,那么下一个要采样的节点 x x x是哪个?作者定义了一个概率分布,也就是一个节点到它的不同邻居的转移概率: 简单解释一下:
- 如果 t t t与 x x x相等,那么 x x x被采样的概率是 1 / p 1/p 1/p
- 如果 t t t与 x x x相邻,那么 x x x被采样的概率是1
- 如果 t t t与 x x x距离为2,那么 x x x被采样的概率是 1 / q 1/q 1/q
要注意这里 t t t已经被采样了!!
本文提出了返回参数 p p p和出入参数 q q q:参数用于控制随机游走产生的方式。需要说明的是,距离取值只能为 0 , 1 , 2 0,1,2 0,1,2。
3.2.3 The node2vec algorithm
看一下算法的参数:图 G G G、节点特征向量的维度 d d d、每个节点生成的游走个数 r r r,游走长度 l l l,上下文的窗口长度 k k k,以及之前提到的 p 、 q p、q p、q参数。
首先根据 p 、 q p、q p、q和之前的公式计算一个节点到它的邻居的转移概率,此时形成了新的图 G ′ G^{'} G′。
- walks用来存储随机游走,先初始化为空
- 一共要进行 r r r次循环,每一次循环要为图中每个节点都生成一个长度为 l l l的游走序列
- 第 r r r次循环中对所有节点都利用node2vec算法生成一个随机游走walk,然后将其加入walks
- 得到所有节点的 r r r个游走序列后,根据上下文和该节点的游走序列利用SGD方法得到每一个。
具体的node2vec算法:。描述如下:
- 将初始节点 u u u加入到walk中
- 当前节点curr为walk中最后一个节点
- 根据curr和其对周围节点的转移概率选择下一个节点 s s s,并加入walk
- 当walk长度为 l l l时采集结束
3.3 Learning edge features
node2vec算法可以得到网络中节点的特征向量表示。为了进行链路预测,也就是判断两个节点之间是否相连,我们。具体做法就是在两个节点特征向量的基础上构造一个,比如平均,相加或者相减: 其中 f ( u ) f(u) f(u)和 f ( v ) f(v) f(v)表示两个节点的特征向量表示。经过上述运算后,就能得到节点对 ( u , v ) (u, v) (u,v)的特征向量表示。
4.Experiments
4.1 Case Study: Les Misérables network
网络来自于小说《Les Misérables network》中的人物关系。该网络有77个节点和254条边,令 d = 16 d=16 d=1 标签: vec2r7505qg超级电容