文献阅读(26)KDD2016-node2vec: Scalable Feature Learning for Networks

本文是对《node2vec: Scalable Feature Learning for Networks》一文的浅显翻译与理解,如有侵权即刻删除。

朋友们,我们在github创建了一个图学习笔记库,总结了相关文章的论文、代码和我个人的中文笔记,能够帮助大家更加便捷地找到对应论文,欢迎star~

Chinese-Reading-Notes-of-Graph-Learning

更多相关文章,请移步:文献阅读总结:网络表示学习/图学习

Title

《node2vec: Scalable Feature Learning for Networks》

——KDD2016

Author: Aditya Grover

总结

文章在DeepWalk的基础上进行了拓展,提出了node2vec算法,是NRL领域经典算法之一。文章首先明确了优化目标,明确了优化目标。而后,提出了同质性和结构等价性,并使用随机游走模拟广度和深度优先搜索,通过调节参数来不同侧重地保留这两种性质。此外,文章提出了对边特征的学习,列举了计算两节点间表征的几种计算方式。

1 优化目标

在这里插入图片描述
文章认为这一损失函数要满足两个标准:(1)条件独立性,即节点的邻居之间相互独立,计算交互或相似的可能性时,不会互相影响;(2)特征空间对称性,即两节点对彼此的影响是相同的。因而,针对每个邻居节点,可计算如下:

在这里插入图片描述
计算节点每个邻居的可能性比较复杂,文章引入了负采样进行简化,即在正样本中只保留源节点和一个需要计算交互可能性的邻居节点,而负样本随机采样一定数量的节点,这些节点与源节点没有建立过交互,所谓负例。

2 随机游走

文章认为,一个网络中应当同时存在两种特性:一是同质性,即性质相同或相似的节点应当更倾向于聚集;二是结构相似性,即在结构上比较相似的节点也应当聚集,这种结构相似的判断主要取决于节点交互的邻居结构。文章引入经典的广度和深度优先两种方法,认为广度优先能够很好地捕捉网络中的同质性节点,而深度优先则尽可能地检索结构相似的节点。

为实现这两种算法,文章使用随机游走来进行模拟。随机游走即基于某个节点,接下来要跳到的下一个节点的选取是随机的,一般情况下按照某种概率进行选取,基础的随机游走理念如下:

在这里插入图片描述
文章在这一过程中,添加了偏置量a,即对概率的计算除了节点本身的权重外,还要受到预设参数的影响:

在这里插入图片描述
我们这样理解这一公式:d_tx为节点t和x之间的最短路径,取值范围为{0 1 2},当d为0时,意味着保持在当前节点,当d为1时,意味着只需一跳即可到达x,当d为2及以上时,意味着路径长度越来越远。注意到,d=1时,a值也为1,即此时依然只遵照基础的随机游走概率执行。

文章预设了p,用来控制节点范围上一步节点的概率,通常p会大于1,且p越大,节点返回的概率就越小。此外,预设q来控制广度和深度优先的幅度。当q大于1时,随机游走通常会在节点周围的邻居节点进行展开,也就是广度优先,当q小于1时,随机游走会倾向于选择更远距离的节点,即深度优先。

通过这种控制广度和深度优先的搜索方法,可以应对不同性质的网络,node2vec的具体算法如下:

在这里插入图片描述

3 学习边缘特征

文章提出了一种半监督的方法来学习网络的额外特征,结合链路预测任务的思想,文章选取任意节点对,来计算边的特征,列举的计算方法如下:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
node2vec是一种用于学习网络节点嵌入的工具包。它基于word2vec模型,通过在网络中执行随机游走,并使用这些游走序列来学习节点的向量表示。下面是使用node2vec的一些步骤: 1. 数据导入:首先,需要导入网络数据。网络数据可以是一个图数据,其中包含了节点和节点之间的连接关系。可以使用常见的图数据格式,如邻接矩阵或边列表。 2. 创建node2vec对象:使用node2vec工具包或库中提供的函数,创建一个node2vec对象。这个对象将包含一些必要的参数,如网络数据、游走序列的长度和数量、节点嵌入向量的维度等。 3. 进行随机游走:使用node2vec对象中的函数,执行随机游走操作。随机游走是指从一个起始节点开始,在网络中随机选择一个邻居节点进行移动,重复这个过程直到达到指定的游走序列长度。这个过程会生成一系列的游走序列。 4. 应用word2vec模型:在得到游走序列后,可以使用gensim库中的word2vec函数来学习节点的向量表示。将游走序列作为输入,使用word2vec模型来训练节点的向量表示。这些向量将会是节点在嵌入空间中的表示。 这些步骤的具体实现可以参考KDD 2016会议上的node2vec论文中的详细描述。为了更好地理解node2vec的使用,可以深入学习论文中的算法描述和代码实现。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [node2vec代码实现及详细解析](https://blog.csdn.net/Cyril_KI/article/details/122006277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [node2vec python 实现和理解](https://blog.csdn.net/qq_15192373/article/details/89845036)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值