node2vec

本节引用自:

a. 【论文每日读】node2vec: Scalable Feature Learning for Networks

b.  node2vec: Scalable Feature Learning for Networks

 

主要创新点

1、 将抽取网络中节点的特征转化成最优化一个“可能性”目标函数问题,再利用SGD优化,更加高效。其中,“可能性”是节点可以保存其邻居节点的信息,
2、 设计随机游走策略,可让node2vec可适应不同的网络

方法模型

定义可能性,并且给予两个条件,构成要优化的目标函数;

 

 

条件独立性:

 


节点之间对称性:

 

最后目标函数:

 

随机游走策略

文章的主要想法就是,利用SkipGram的方法,来为Networks抽取Representation。

node2vec_第1张图片

本文的特征抽取方式类似于聚类分析的非监督方法,本质上都是利用相邻节点之间的联系。文中提到了网络中的节点一般有两种相似度量:1.内容相似性,2.结构相似性。其中内容相似性主要是相邻节点之间的相似性,而结构上相似的的点并不一定是相邻的,可能隔得很远。BFS比较容易有一个Microscopic的View而DFS容易有一个Macro-view,两者都有Representative的问题。这也是文中为何要把BFS和DFS相结合来选择邻居节点的原因。

node2vec_第2张图片

文章的核心思想是采用Random Walk来代替DFS或者BFS。文章定义了一种二阶的Random Walk,拥有两个参数,来控制多大的概率反复经过一些Node和控制所谓的Inward和Outward。总之,整个Random Walk的目的就是在DFS和BFS之间采取某种平衡。

文章虽然提出的是关于Node Feature提取的算法,但是Edge Feature可对Node Feature进行二元运算而导出。

Tips

node2vec之所以是半监督方法,是因为从两个角度来分析网络中的节点,第一,内容相似性,对应于监督方式;第二,结构相似性,对应于无监督方式。


代码运行

https://github.com/aditya-grover/node2vec

Example

To run node2vec on Zachary's karate club network, execute the following command from the project home directory:

python src/main.py --input graph/karate.edgelist --output emb/karate.emd

Options

You can check out the other options available to use with node2vec using:

python src/main.py --help

 

你可能感兴趣的:(Network,Embedding)