详解Graph Embedding经典方法:算法原理、代码实现与应用样例

本文详细介绍了几种经典的图嵌入方法,包括DeepWalk、LINE、node2vec和SDNE,涵盖了算法原理、代码实现和应用案例。DeepWalk使用随机游走模拟节点之间的关联;LINE则通过一阶和二阶相似度来捕获局部和全局结构;node2vec结合DFS和BFS策略进行有偏采样;SDNE利用深度学习保留图的局部和全局结构。文章提供GitHub链接以获取完整的代码实现,并展示了在Wiki数据集上的节点分类和可视化实验结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://github.com/shenweichen/GraphEmbedding

G = nx.read_edgelist(‘…/data/wiki/Wiki_edgelist.txt’,create_using=nx.DiGraph(),nodetype=None,data=[(‘weight’,int)])

model = DeepWalk(G,walk_length=10,num_walks=80,workers=1)

model.train(window_size=5,iter=3)

embeddings = model.get_embeddings()

evaluate_embeddings(embeddings)

plot_embeddings(embeddings)

 分类任务结果


micro-F1 : 0.6674

macro-F1 : 0.5768

 可视化结果



LINE


之前介绍过DeepWalk,DeepWalk使用DFS随机游走在图中进行节点采样,使用word2vec在采样的序列学习图中节点的向量表示。

LINE也是一种基于邻域相似假设的方法,只不过与DeepWalk使用DFS构造邻域不同的是,LINE可以看作是一种使用BFS构造邻域的算法。此外,LINE还可以应用在带权图中(DeepWalk仅能用于无权图)。

之前还提到不同的graph embedding方法的一个主要区别是对图中顶点之间的相似度的定义不同,所以先看一下LINE对于相似度的定义。

 LINE 算法原理


1. 一种新的相似度定义



✎  first-order proximity


1阶相似度用于描述图中成对顶点之间的局部相似度,形式化描述为若之间存在直连边,则边权即为两个顶点的相似度,若不存在直连边,则1阶相似度为0。如上图,6和7之间存在直连边,且边权较大,则认为两者相似且1阶相似度较高,而5和6之间不存在直连边,则两者间1阶相似度为0。

  second-order proximity


仅有1阶相似度就够了吗?显然不够,如上图,虽然5和6之间不存在直连边,但是他们有很多相同的邻居顶点(1,2,3,4),这其实也可以表明5和6是相似的,而2阶相似度就是用来描述这种关系的。形式化定义为,令表示顶点与所有其他顶点间的1阶相似度,则的2阶相似度可以通过的相似度表示。若之间不存在相同的邻居顶点,则2阶相似度为0。

2. 优化目标


  1st-order


对于每一条无向边,定义顶点之间的联合概率为:

为顶点的低维向量表示。(可以看作一个内积模型,计算两个item之间的匹配程度)

同时定义经验分布:

,

优化目标为最小化:

是两个分布的距离,常用的衡量两个概率分布差异的指标为KL散度,使用KL散度并忽略常数项后有:

1st order 相似度只能用于无向图当中。


  2nd-order


这里对于每个顶点维护两个embedding向量,一个是该顶点本身的表示向量,一个是该点作为其他顶点的上下文顶点时的表示向量。

对于有向边,定义给定顶点条件下,产生上下文(邻居)顶点的概率为:

,其中为上下文顶点的个数。

优化目标为:

,其中为控制节点重要性的因子,可以通过顶点的度数或者PageRank等方法估计得到。

经验分布定义为:

是边的边权,是顶点的出度,对于带权图,使用KL散度并设,忽略常数项,有


3. 优化技巧


  Negative sampling


由于计算2阶相似度时,softmax函数的分母计算需要遍历所有顶点,这是非常低效的,论文采用了负采样优化的技巧,目标函数变为:

是负边的个数。

论文使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值