图论-图论算法之Node2Vec
Node2Vec算法简介
在上一篇文章里,我们介绍了最简单也是最基础的图嵌入方法DeepWalk,其实就是适用于大数据情况下的多轮次完全随机游走,找到点之间的多阶关联信息。而在本文之中,我们将会介绍Node2Vec方法,这种方法是在DeepWalk的基础上进行改进,引入了深度优先搜索DFS和广度优先搜索BFS算法的思路,通过构造每一次游走的概率来刻画对于“向远处走”和“在附近游荡”这两种方式,下面我们来介绍这种算法。
首先是这种Node2Vec算法的损失函数是max∑logPr(N(v)|f(v)) 的形式,这个公式里f(v)就是当前节点,N(v)就是邻居节点,通过这种条件概率的形式来刻画这种游走的目标,当然还有两个假设,第一个是条件独立性,也就是当前节点的所有邻居节点是互相独立的,所以说当计算所有邻居的概率的时候只需要把采样得到的邻居的概率相乘,不需要考虑节点互相之间的影响。但在真实场景里,这种假设是不完全合理的,因为周围很有可能会存在一些相关性,比如和“橘子”相连的可能是“柚子”和“芦柑”,但是后面两者显然也是有一定相关性的,所以这种假设会导致损失一定的准确性。而第二个条件是特征空间的对称性,其实就是两个点互相的影响是一样的,所以这种情况必须要求图是无向图。
而其实Node2Vec算法是通过构造概率分布函数来结合这两种搜索方法来进行游走的,在上面的图可以发现,之前采样了节点t,现在正在节点v上面,那么下面要采样的节点是哪个X节点,而Node2Ve