node2vec python_论文笔记 | node2vec
论文笔记 | node2vec: Scalable Feature Learning for networks
论文【node2vec: Scalable Feature Learning for networks】为可度量的网络特征学习,是由斯坦福大学的Aditya Grover和Jure Leskovec在2016年提出的,它实际上是对DeepWalk的改进,是基于DeepWalk的升华。所以在了解node2vec之前,可以先看对DeepWalk的解读。安小飞:论文笔记 | DeepWalkzhuanlan.zhihu.com
简介
DeepWalk是图特征学习的开山之作,它的主要是思想是借助了在处理文本任务中词向量的处理方法来解决图特征学习的问题,主要方法是随机漫步+语言模型,先通过随机漫步找出N个经过路径节点的有序序列,再对序列进行skip gram训练,得到对应的向量。但是该方法也有一些缺陷或者不严谨的地方,第一是随机漫步可以理解为简单的深度优先搜索,深度往往增加了算法和模型的复杂度,但并没有考虑到广度优先带来的周围邻居结构的影响;第二是,文中并没有给出一个明确的优化目标函数。
node2vec在DeepWalk的基础上提出了更加合理的图特征学习方法,提出了用于网络中可伸缩特征学习的半监督算法,使用SGD优化一个自定义的基于图的目标函数,该方法可以最大化的在D维特征空间保留节点的网络领域信息;在随机游走的基础上设计了一种二阶随机游走的过程,相当于对DeepWalk算法的一种扩展,它保留了邻居节点的图特征。
节点相似性度量
网络节点相似性度量的依据:内容相似性:相邻节点之间的相似性,人以群分,我们往往和我们直接关联的人存在着相似;
结构相似性:网络局部拓扑结构上的相似性,中介和中介存在结构上的相似性;
重要假设:同质性假设:连通的节点并且属于相似网络簇或者社群的节点应该相似;
结构等价假设:具有相似结构角色的节点应该相似;
如上图所示,结点
和结点s6在局部网络结构中具有相似的结构角色,所以应该具有相似性,虽然两个结点之间并没有直接相连。又如,结点s1和
属于同一个网络簇(直连),所以更应该相似。
学习框架
将网络中的特征学习问题描述为一个极大似然优化问题,设
为给定网络,设
为节点到特征表征的映射函数,我们的目标是学习一个后续节点的预测任务,这里
是一个参数,指定特征表示的维数,
是一个
参数的矩阵,为每个源节点
,定义
的网络邻居节点的社区抽样策略。
目标优化函数如下,该目标函数根据节点
的特征表示,最大化节点
的网络观测邻域
,
:
为了让优化任务易于处理,做了两点假设:条件独立性假设:即假设结点间相互独立,简单来说就是,对于某一个源结点,其采用到的邻居结点是独立的,采用其中一个邻居结点不会对其他邻居结点造成影响。
特征空间对称假设:源结点和邻居结点的特征空间有一个对称性影响。简单来说就是,一个源结点和其某一个邻居结点有关系,那么对于这个邻居结点来说,这个源结点也是其邻居结点,影响是相互的。
根据以上两个假设,最终目标函数
可以优化为以下形式:
每个节点分割函数
,对于大型网络来说,计算成本很高,所以采用负采样来近似它,在定义特征函数
模型参数上,采用随机梯度上升法对公式(4)进行优化。
经典搜索策略
可以将采样源节点邻域问题视为一种网络局部搜索问题,所熟知的无非就是广度优先遍历(BFS)和深度优先遍历(DFS),广度优先更容易采样邻居节点,从而获得每个节点邻居的微观视图,这更容易表示结构的相似性,比如限制一个
邻居域,节点
的BFS就会对s1,s2,s3采样,广度优先遍历采样邻居节点往往重复对此采样,这有利于减少偏差。对深度优先遍历来说,它尽可能深的遍历网络,采样节点更准确的反映了邻居节点的宏观情况,这更容易表示内容相似性,即验证同质性假设,而
使用DFS就会对s4,s5,s6进行采样。
Node2Vec
基于上面的问题,Node2Vec提出了参数化的游走方式。具体来说,Node2Vec提出了两个重要参数
和
用于控制游走。
论文定义了一个二阶的随机游走策略,
是转移概率。返回概率参数(Return parameter)
,对应BFS,
控制回到原来节点的概率,如图中从t跳到v以后,有
的概率在节点v处再跳回到t。
离开概率参数(In out parameter)
,对应DFS,
控制跳到其他节点的概率。
p用来控制重新访问Walk的的结点的可能性,p越大,可能性越小。同理,q越大,加入q>1,那么随机游走就用参数控制游走的结点更结点结点t(降低了往外游走的概率)。如果q<1,则游走方式更大概率探索远离结点t的结点。
总的来说,整个策略是在DFS和BFS之间采取某种平衡,也提供了参数化的控制方式,可以根据不同的需求进行调参,增大了普适性。
总结
总的来说,论文做了以下事情:
1、提出了一种高效的可伸缩网络特征学习算法,该算法使用SGD实现网络感知领域保持的优化目标;
2、寻找一种在广度优先遍历和深度优先遍历之间的平衡点;
3、基于邻域保留目标的特征学习方法扩展到节点和边的预测任务;
4、对多个真实的数据集进行了实证评估;
备注:具体其他的内容可以参考原始论文,更具论文题目可以很轻松的找到原论文,且原论文还提供的Node2vec的源码。
Python版:【https://github.com/aditya-grover/node2vec】(源码中在保存模型的地方存在部分的问题,需要自行修改一下,且源码是基于python2实现的),当然该算法的源码速度上只能计算百万级节点网络,对于超大型网络来说需要在spark上进行实现。
备注2:这篇文章是用Typora写的,格式非常的好看,导入到知乎后格式乱的和屎一样,真的难看,懒的调了,想看原始文章的可以到这里下载下来,用Typora看(Typora真的非常之好用,写作起来也非常的顺畅)。anfei123/bolgs-plangithub.com
参考
【1】Aditya Grover and Jure Leskovec.node2vec: Scalable Feature Learning for Networks
【2】Bryan Perozzi,Rami Al-Rfou and Steven Skiena.DeepWalk: Online Learning of Social Representations
node2vec python_论文笔记 | node2vec相关推荐
- 笔记︱基于网络节点的node2vec、论文、算法python实现
看到一个很有意思的算法,而且腾讯朋友圈lookalike一文中也有提及到,于是蹭一波热点,学习一下.论文是也发KDD2016 . . 一.主要论文:node2vec: Scalable Feature ...
- Graph Embedding模型【Node2Vec】学习笔记
声明:本文写于2020-09-22,于2021-05-26修改.仅增加了一些模型细节和改了一些排版 概要 本文的内容主要是阅读Node2Vec论文<Node2Vec: Scalable Feat ...
- 论文|Node2vec算法原理、代码实战和在微信朋友圈的应用
1 概述 Node2vec是2016年斯坦福教授 Jure Leskovec.Aditya Grover提出的论文,论文的下载链接为:https://arxiv.org/pdf/1607.00653. ...
- 论文阅读|node2vec: Scalable Feature Learning for Networks
论文阅读|node2vec: Scalable Feature Learning for Networks 文章目录 论文阅读|node2vec: Scalable Feature Learning ...
- ORB-SLAM3 论文笔记
ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...
- 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION
一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...
- 最新图神经网络论文笔记汇总(附pdf下载)
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]近年来,图神经网络变得非常火热,每年顶会在该领域内都会出现大量的研究论文,本文为大家提 ...
- [论文笔记] Fast Quality Driven Selection of Composite Web Services (ECOWS, 2006)
Time: 4.0 hours Jae-Ho Jang, Dong-Hoon Shin, Kyong-Ho Lee, "Fast Quality Driven Selection of Co ...
- 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning
论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning 2017-06-06 21: ...
- 光流 速度_[论文笔记] FlowNet 光流估计
[论文笔记] FlowNet: Learning Optical Flow with Convolutional Networks 说在前面 个人心得: 1. CNN的光流估计主要是速度上快,之后的v ...
最新文章
- java和jvm_Java、JVM和操作系统之间的关系,写给新人,
- mongodb 字符串转bson_BSON及mongoDB数据类型
- Android笔记:Fragment与Activity之间的交互,onAttach,退出最后一个 fragment
- System Center产品相关开发(1)-SCOM和SCVMM简介
- 四人团-江南行-乌镇东栅旅游
- Spring 更好地处理 Struts 动作
- wxWidgets:wxTipProvider概述
- shell编程系列26--大型脚本工具开发实战
- oracle数据库两表数据比较
- SQL Server 2012新增的内置函数尝试
- 动态为GridView控件创建列
- Filezilla server连接Ubuntu被服务器拒绝及中文乱码问题解决
- UVA - 558 Wormholes (SPEA算法模板题)
- 基于 Docker 的 Slurm 作业管理系统
- 登录onedrive显示无法连接服务器,Win10打不开OneDrive提示“连接到onedrive时出现问题”解决方法...
- (42)[ICCV17] Mask R-CNN
- OllyDbg的基本使用
- 文理学院的数学计算机方向夏校,【陈老师说】计算机名校冲刺计划
- python js 性能_lua与python性能测试比较
- 第八篇《颅骨穿孔——前篇》