node2vec: scalable feature learing for networks

**

仅是本人一些随笔,逻辑性不佳,仅仅为了本人自己方便记录和查阅,仅供参考,有问题处还望包涵

**!
论文地址:https://arxiv.org/abs/1607.00653
代码地址:https://github.com/aditya-grover/node2vec

0 背景知识

欧几里得数据:它是一类具有很好的平移不变性的数据。对于这类数据以其中一个像素为节点,其邻居节点的数量相同。所以可以很好的定义一个全局共享的卷积核来提取图像中相同的结构。常见这类数据有图像、文本、语言。
非欧几里得数据:它是一类不具有平移不变性的数据。这类数据以其中的一个为节点,其邻居节点的数量可能不同。常见这类数据有知识图谱、社交网络、化学分子结构等等。
解释链接
②图神经网络的解释:
解释超级到位:网址是

1、本文的contributions:

①node2vec,用于feature learning in network的有效的、salable算法:使用SGD有效优化novel网络感知和领域保持目标(neighborhood preserving objective)
②node2vec在 network science方面如何符合established principles,对于不同的equivalence的表征方面提供灵活性。
③将node2vec从节点扩展到基于边缘的预测任务的节点对。
④实验验证

2、论文的写作结构:

section2:网络特征学习的相关工作
section3:用node2vec进行特征学习
section4:实验验证、评估参数敏感性、扰动分析、可扩展性(伸缩性,scalability aspect)
section5:强调node2vec framework 以及未来的promising directions

3、论文数据集及reference:

网址http://snap.stanford.edu/node2vec

4、相关工作

① skip gram model:
它扫描文档中的单词,并将每个单词嵌入其中,以便单词的特征可以预测附近的单词。Skip-gram目标基于分布假设,即相似上下文中的单词往往具有相似的含义。(相似的单词往往出现在相似的单词邻域中)

5、feature learning framework

在这里插入图片描述
在这里插入图片描述
BFS;breadth first sampling
DFS:depth first sampling
网络节点的预测任务两种假设:同源性homophily和结构等效性structural equivalence
在这里插入图片描述
定义了bias random walk的策略生成序列,采用BFS和DFS两种游走方式,采用skip gram(学习隐藏层的权重,权重实际上是我们试图学习的“单词向量”)训练。

https://blog.csdn.net/qq_41747565/article/details/83619858

bias random walk的策略主要是调整参数q,p来保留不同的信息。
t是上一个节点,v是最新节点,x是下一步节点。从节点t走到v以后,返回t的超参数为p,到其他节点的参数为q。p和q共同控制着重新访问节点(t)、走向前面的节点x1、走向更远节点x2,x3的概率。
权重调整参数:
在这里插入图片描述

https://blog.csdn.net/weixin_42722532/article/details/110972450

nod2vec的算法流程:包括两个for循环,依次整理
1. 根据p、q和之前的公式计算一个节点到它的邻居的转移概率;
2. 将这个转移概率加到图G中形成G';
3. walks用来存储随机游走,先初始化为空;
4. 外循环r次表示每个节点作为初始节点要生成r个随机游走;
5. 开始内循环:nod2vec的walk
**. 其中,对图中每个节点生成一条随机游走walk的流程:**
	a. 将初始节点u添加进去;
	b. walk的长度为l,因此还要再循环添加l-1个节点;
	c. 当前节点设为walk最后添加的节点;
	d. 找出当前节点的所有邻居节点;
	e. 根据转移概率采样选择某个邻居s;
	f. 将该邻居添加到walk中;
6. 将walk添加到walks中保存;
7. 然后用SGD的方法对walks进行训练。

在这里插入图片描述
node2vec的三个阶段,即计算转移概率的预处理、随机游走模拟和使用SGD进行优化。
每个阶段都是可并行的,并且是异步执行的,这有助于提高node2vec的整体可伸缩性。
在这里插入图片描述
特征学习算法评估node2vec的性能:
光谱聚类:矩阵分解的方法,将图G的归一化拉普拉斯的特征向量作为节点的特征向量表示。
DEEPwalk:模拟随机均匀游走
Line:两阶段学习d维特征(BFS方式以及sampling nodes)

6、实验结果

① Micro-F1
在多分类问题中,如果要计算模型的F1-score,则有两种计算方式,分别为micro-F1和macro-F1。下面分别介绍两种计算方式的不同。

https://blog.csdn.net/qq_43190189/article/details/105778058
在这里插入图片描述
One-vs-Rest算法将一个给定的二分类算法有效地扩展到多分类问题应用中,也叫做“One-vs-All.”算法。

7、补充说明

①关键点:word2voc训练框架,基于random walk产生训练序列,alias sampling采样方法,实验设置(很关键,文中对实验设置描述的非常细节)
②创新点:bfs,dfs,q,p超参的设置,有偏的random network,实验验证非常丰富

8、代码部分环境

①主要是基于word2vec展开的,主要使用gensim库(以前简单学习CV,第一次接触NLP的东西,很多真的都不会呀)
②gensim库

  • 主要是NLP的工具库,从非结构化文本中学习文本隐藏层的主题向量表达
  • 包括TF-IDF,LSA,LDA,word2vec,doc2vec等多种模型:
  • TF-IDF
  • LSA
  • LDA,另一个通俗易懂的网址
  • word2vec
  • doc2vec
  • 安装gensim库一定要注意:注意:特别需要注意的是,安装的gensim版本必须要和要求的python版本以及numpy、SciPy一致,否则可能会导致安装失败。先装numpy\scipy再装gensim库
  • 环境:
    python3.6.10
    jupyter notebook
    networkx 2.4
    numpy1.18.1
    gensim3.8.0
pip install gensim

有错误时,使用下面的代码:

pip install -U gensim

9、代码细节:

代码表示注释掉一部分出现的warmings

import warnings
warnings.filterwarnings('ignore')

9.1读图,设置模型参数
①设置模型参数,设置图相关参数,如有向图、权重图等,还有模型系数,如p,q,enbedding长度等
②读图的方式很简单,使用networkx包直接加载edgelist
③输入输出
输入文件’…/graph/karate.edgelist’
输出文件’…/emb/karate.emb
Python 解决相对路径问题:No such file or directory
解决的网址1
wins10中地址\或者/

#绘制图节点的python代码:
import matplotlib.pyplot  as plot
import networkx as nx
nx.draw(nx_G,with_labels=True)
plt.show()
#如果不知道怎么导出nx_G的值,就直接放在main.py文件中

9.2 计算点和边得alias table

9.3有偏的随机游走生成节点序列

def simulate_walks(self,num_walks,walk_lenght):
……
def node2vec_walk(self,walk_length,start_node):
……
walks = G.simulate_walks(args.num_walks,args.walk_length)
^

**9.4利用word2vec训练模型

def learn_embeddings(walks):
……
model = learn_embedding(walks)

10、总结

1、上海交大 APEX Lab实验室
node2vec视频简单讲解
2、embedding嵌入:
是一种映射方法,实体映射到连续的向量空间中,让实体被向量表示。点嵌入,边嵌入。。。
3、NLP中对文本词进行嵌入,常用的方法是skip Gram:最大化相邻词共同出现的概率。较好的保留周围词和中心词的相关信息。在图中较好的保留中心词周围的结构信息。输入是序列化的,
4、节点的序列:利用random walk来采样生成node sequence
graph---random walk---节点序列-----skip gram对节点序列进行嵌入
graph—random walk—节点序列-----skip gram对节点序列进行嵌入
5、node2vec来control the walking procedure:BFS和DFS
引入bias random walk: p,q
自己总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值