图嵌入方法基础学习之Node2vec
图嵌入方法之Node2vec
(Ⅰ)主要思想
node2vec的思想同DeepWalk一样:生成随机游走,对随机游走采样得到(节点,上下文)的组合,然后用处理词向量的方法对这样的组合建模得到网络节点的表示。不过在生成随机游走过程中做了一些创新。
DeepWalk介绍见我另一篇博客
(Ⅱ)核心介绍
Node2vec是DeepWalk的一个改进,只是随机游走的差异很小。它有参数P和Q。参数Q定义了random walk发现图中未发现部分的概率,而参数P定义了random walk返回到前一个节点的概率。参数P控制节点周围微观视图的发现。参数Q控制较大邻域的发现。它可以推断出社区和复杂的依赖关系。
下图中显示了Node2vec中一个随机行走步长的概率。我们只是从红结点走了一步到绿结点。返回到红色节点的概率是1/P,而返回到与前一个(红色)节点没有连接的节点的概率是1/Q。到红结点相邻结点的概率是1。
所以node2vec节点采样的概率如上所示。
参数p、q的意义分别如下:
返回概率p:
- 如果 p > max(q,1) ,那么采样会尽量不往回走,对应上图的情况,就是下一个节点不太可能是上一个访问的节点t。
- 如果 p < max(q,1) ,那么采样会更倾向于返回上一个节点,这样就会一直在起始点周围某些节点来回转来转去。
出入参数q:
- 如果 q > 1 ,那么游走会倾向于在起始点周围的节点之间跑,可以反映出一个节点的BFS特性。
- 如果 q < 1 ,那么游走会倾向于往远处跑,反映出DFS特性。
当p=1,q=1时,游走方式就等同于DeepWalk中的随机游走。
(Ⅲ)伪代码赏析
首先看一下算法的参数,图G、表示向量维度d、每个节点生成的游走个数r,游走长度l,上下文的窗口长度k,以及之前提到的p、q参数。
- 根据p、q和之前的公式计算一个节点到它的邻居的转移概率。
- 将这个转移概率加到图G中形成G’。
- walks用来存储随机游走,先初始化为空。
- 外循环r次表示每个节点作为初始节点要生成r个随机游走。
- 然后对图中每个节点。
- 生成一条随机游走walk。
- 将walk添加到walks中保存。
- 然后用SGD的方法对walks进行训练。
第6步中一条walk的生成方式如下:
- 将初始节点u添加进去。
- walk的长度为l,因此还要再循环添加l-1个节点。
- 当前节点设为walk最后添加的节点。
- 找出当前节点的所有邻居节点。
- 根据转移概率采样选择某个邻居s。
- 将该邻居添加到walk中。
https://zhuanlan.zhihu.com/p/100586855
https://zhuanlan.zhihu.com/p/46344860
图嵌入方法基础学习之Node2vec相关推荐
- 图嵌入方法基础学习之随机游走
图嵌入方法学习(二) 1. 什么是随机游走 随机游走(Random Walk,缩写为 RW),又称随机游动或随机漫步,是一种数学统计模型,它是一连串的轨迹所组成,其中每一次都是随机的.它能用来表示不规 ...
- Bioinformatics| 生物医学网络中的图嵌入方法
今天给大家介绍Bioinformatics期刊的一篇文章,"Graph embedding on biomedical networks: methods, applications and ...
- 图嵌入概述:节点、边和图嵌入方法及Python实现
转载:Deephub Imba 近年来基于图的机器学习有了很大的发展.基于图的方法在数据科学中的许多常见问题中都有应用,例如链接预测.社群发现.节点分类等.根据如何组织问题和所拥有的数据,有许多解决问 ...
- cad新手必练300图_零基础学习CAD软件难吗?超全CAD入门学习教程送给你
CAD软件作为一种制图工具,真要学起来其实并没那么困难.它好比你手中写字的笔,吃饭的筷子,拿笔拿筷子实在算不上多难的事情,且在你下定决心要进行CAD入门学习时,就已经成功了一半,难得是保持这份决心. ...
- 网页开发 与数据联动的图_零基础学习数据可视化pyecharts人物关系图开发
Pyecharts人物关系图开发 1. Pyecharts版本说明 Pyecharts的版本最新版本为1.7.0版本,此版本跟0.5版本的使用方法不一样了.很多参数方法配置不一样了.Import的内容 ...
- python入门基础代码图-Python入门基础学习一
------------恢复内容开始------------ Python简介 Python由来 Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多范罗苏姆为了再阿姆斯特丹大法时间,决 ...
- 【CS224W】(task4/5)图嵌入表示学习(Deepwalk、Node2vec)更新中
note Node embedding的基本框架:encoder+decoder 最简单encoder是embedding-lookup表:ENC(v)=zv=Z⋅v\mathrm{ENC}(v)=z ...
- 知识表示学习与图嵌入综述
文章目录 一.任务的介绍与背景 1.1 表示空间 1.2 打分函数 1.3 编码模型 1.4 结合辅助信息 1.5 图表示学习 二.典型方法 三.各方法综述和性能比较 3.1 基于矩阵特征向量计算 3 ...
- 大规模图嵌入 示例_ICLR 2020 | 基于谱方法的高效多级图嵌入框架
提高图嵌入的质量和效率是一直以来被关注的两个问题.一方面,图嵌入应该利用图的结构性特征以及节点的属性特征来提升嵌入的质量:另一方面,提高图嵌入方法的效率和可扩展性使其能够应用到超大规模的图上.这两个问 ...
- 主流图嵌入模型的原理和应用
作者:蒋铭和全聪,腾讯 PCG 应用研究员 本文梳理了近几年主流的图嵌入(Graph Embedding)模型,并辅以相应的工业界应用,旨在通过算法原理+业务应用的方式更好地帮助大家了解这一领域的发展 ...
最新文章
- 一个很适合用来套用后台的框架
- mysql The server quit without updating PID file异常解决办法
- git学习之创建版本库
- 通用无线设备对码软件_电动车上的无线电池管理系统wBMS
- java正则效率_善用Pattern提高你的应用处理正则表达式的效率(Java)
- python-数字数据类型-整数类型-浮点数类型-数据类型间的转换
- 复制release文件到另一台电脑.exe文件无法运行_电脑技巧:电脑版微信双开(或微信多开)?用start指令可以解决...
- Python poetry的使用
- java bean参数清空_给bean的属性赋值
- OpenCV-闭运算(CLOSE)
- 入手 M1 Mac 之前,你可以通过这个工具了解常用软件兼容性
- python地理数据处理相关的操作
- 基于android的线上教育app
- python判断数字在不在范围内_我的程序在python中完成数字并且不确定我是否应该在范围内使用(1,1000)或(2,n 1)...
- 2 Java并发原理精讲课程学习笔记
- 纯前端实行—简单的用户信息记录界面
- linux学习好文章,好网站
- 人工智能:Django的学习,下象棋的小游戏
- VTK-三维坐标系计算两点之间距离
- john 探测(爆破)弱口令(包含linux机器,aix小机)/linux上的shadow文件破解,亲测可用