泛运筹理论初探——Node2Vec算法简介

图论-图论算法之Node2Vec

Node2Vec算法简介
    在上一篇文章里,我们介绍了最简单也是最基础的图嵌入方法DeepWalk,其实就是适用于大数据情况下的多轮次完全随机游走,找到点之间的多阶关联信息。而在本文之中,我们将会介绍Node2Vec方法,这种方法是在DeepWalk的基础上进行改进,引入了深度优先搜索DFS和广度优先搜索BFS算法的思路,通过构造每一次游走的概率来刻画对于“向远处走”和“在附近游荡”这两种方式,下面我们来介绍这种算法。
    首先是这种Node2Vec算法的损失函数是max∑logPr(N(v)|f(v)) 的形式,这个公式里f(v)就是当前节点,N(v)就是邻居节点,通过这种条件概率的形式来刻画这种游走的目标,当然还有两个假设,第一个是条件独立性,也就是当前节点的所有邻居节点是互相独立的,所以说当计算所有邻居的概率的时候只需要把采样得到的邻居的概率相乘,不需要考虑节点互相之间的影响。但在真实场景里,这种假设是不完全合理的,因为周围很有可能会存在一些相关性,比如和“橘子”相连的可能是“柚子”和“芦柑”,但是后面两者显然也是有一定相关性的,所以这种假设会导致损失一定的准确性。而第二个条件是特征空间的对称性,其实就是两个点互相的影响是一样的,所以这种情况必须要求图是无向图。
在这里插入图片描述
    而其实Node2Vec算法是通过构造概率分布函数来结合这两种搜索方法来进行游走的,在上面的图可以发现,之前采样了节点t,现在正在节点v上面,那么下面要采样的节点是哪个X节点,而Node2Vec就是定义了下面的概率分布函数来进行采样。公式的含义就是,当节点t和x相等,采样的概率是1/p ,当节点t与x相连,采样的概率是1,当节点t与x不相连,采样的概率是1/q ;而参数p和q的含义分别是,p代表返回概率,当p>max(q,1) 的时候,采样游走会尽量往远离当前节点的节点游走;当p<min(q,1) 的时候,采样游走会尽量在当前节点周围进行游走。而q代表的是出入参数,当q>1 的时候,采样游走会偏向于在周围节点采样,也就是所谓的BFS广度优先搜索特性;当q<1 的时候,采样游走会偏向于在远离当前节点的地方采样,也就是所谓的DFS深度优先搜索特性。而比较特殊的是,当参数p和q都是1的时候,就是DeepWalk的随机游走,所以说DeepWalk只是Node2Vec的一种特殊情况。
在这里插入图片描述
    其实对于Node2Vec算法来说,它引入了BFS广度优先搜索和DFS深度优先搜索方法是非常经典的,因为从全图的角度来说,DFS就是找到和当前节点距离比较远的节点,那么其实是一个节点邻居的潜在的、冷门的、宏观的特性;而BFS是找到距离当前节点比较近的节点,那么其实是一个节点邻居的明显的、热门的、微观的特性。因为Node2Vec巧妙的结合了这两种搜索形式,所以嵌入的效果还是非常不错的,可以得到一些很有效的特征。
在这里插入图片描述
    总的来说,这种Node2Vec图嵌入的方法是结合了深度优先搜索和广度优先搜索的思路,通过构造概率分布函数和控制参数,从而达到比较合理的图嵌入结果。对于实际推荐的场景,DFS其实是推荐比较潜在的冷门的商品、BFS其实是推荐比较热门的相似的商品,因此在使用中可以根据具体的需求来调整参数,从而得到较好的嵌入结果,合理的刻画出图的拓扑特征。这种Node2Vec非常经典,并且易于理解,算法初学者需要熟练掌握这种思路和算法。

猜你喜欢

转载自blog.csdn.net/qq_26727101/article/details/114434283
今日推荐