node2vec

1.背景

DeepWalk中根据边的权重进行随机游走,而node2vec加了一个权重调整参数,最终生成的随机序列是一种DFS和BFS的结合;模型仍使用skip gram去训练。

2.原理

2.1 Random Walks

给定一个起始节点,我们模拟一个固定长度的随机游走,表示行走中的第个节点,起始节点:。节点走到节点概率定义为:


是节点之间非归一化概率;
是节点之间概率的和,用于归一化使用;

2.2 Search bias α

假设已知游走路径已从走到,从节点 走到下一个节点按照转移概率选择对应的节点;



其中:
的最近的距离,在论文中
的取值为

这两个参数决定离开起始节点的速度;

2.2.1 参数p

  1. 表示访问已遍历节点的可能性;
  2. :表示在连续两步,越小的可能访问已遍历节点;这种策略鼓励适度的探索,并避免了距离为2的节点抽样中的冗余
  3. :表示遍历的节点接近起始节点;

2.2.2 参数q

  1. 允许搜索区分“向内”和“向外”节点;
  2. : 表示越大的可能抽样节点靠近;可以获得与遍历中的开始节点相关的底层图的局部视图,与BFS类似;
  3. : 表示越大的可能抽样节点远离; 与DFS类似;
  4. 就是deepwalk

3. algorithm

3.源码

py版本代码结构:


4.参考文献

  1. 论文地址:https://arxiv.org/abs/1607.00653
  2. 代码地址:https://github.com/aditya-grover/node2vec
  3. 别名采样算法:https://hips.seas.harvard.edu/blog/2013/03/03/the-alias-method-efficient-sampling-with-many-discrete-outcomes/
  4. 别名采样算法:https://blog.csdn.net/lee813/article/details/51497012

你可能感兴趣的:(node2vec)