1.背景
DeepWalk中根据边的权重进行随机游走,而node2vec加了一个权重调整参数,最终生成的随机序列是一种DFS和BFS的结合;模型仍使用skip gram去训练。
2.原理
2.1 Random Walks
给定一个起始节点,我们模拟一个固定长度的随机游走,表示行走中的第个节点,起始节点:。节点走到节点概率定义为:
2.2 Search bias α
假设已知游走路径已从走到,从节点 走到下一个节点按照转移概率选择对应的节点;
其中:
2.2.1 参数p
- 表示访问已遍历节点的可能性;
- :表示在连续两步,越小的可能访问已遍历节点;这种策略鼓励适度的探索,并避免了距离为2的节点抽样中的冗余
- :表示遍历的节点接近起始节点;
2.2.2 参数q
- 允许搜索区分“向内”和“向外”节点;
- : 表示越大的可能抽样节点靠近;可以获得与遍历中的开始节点相关的底层图的局部视图,与BFS类似;
- : 表示越大的可能抽样节点远离; 与DFS类似;
- 就是deepwalk
3. algorithm
3.源码
py版本代码结构: