返回

七日打卡:理解图嵌入算法 Node2vec

人工智能

图嵌入算法之 Node2vec:七日打卡

前言

图嵌入算法是一种用于将图中的节点表示为低维向量的技术。这些向量保留了节点的大部分信息,可以用于各种机器学习任务,例如节点分类、链接预测和社区检测。在本文中,我们将介绍 Node2vec,一种流行且有效的图嵌入算法,它利用随机游走生成训练数据。

Node2vec 算法

Node2vec 算法是一种基于随机游走的方法,它通过在图上执行随机游走来生成训练数据。这些游走遵循两种策略:深度优先策略和广度优先策略。深度优先策略更可能访问相邻节点,而广度优先策略更可能访问较远的节点。

为了控制随机游走的行为,Node2vec 使用了两个超参数:返回参数 p 和出入参数 q。返回参数控制随机游走返回起点的概率,而出入参数控制随机游走访问相邻节点的概率。

随机游走和负采样

在 Node2vec 算法中,随机游走用于生成训练数据。对于每个节点,执行多条随机游走,长度通常为 10-50 步。然后,使用负采样技术从每个随机游走中采样正负对。正对包含相邻节点,而负对包含随机选择的非相邻节点。

目标函数

Node2vec 算法的目标函数定义为:

loss = - ∑_i log σ(x_i^T e_j) - ∑_j log σ(-x_i^T e_j)

其中:

  • x_i 是中心节点的嵌入向量
  • e_j 是正采样节点的嵌入向量
  • σ 是 sigmoid 函数

目标函数的目的是最大化中心节点与正采样节点嵌入向量之间的相似度,同时最小化中心节点与负采样节点嵌入向量之间的相似度。

优化

Node2vec 使用负采样和随机梯度下降 (SGD) 来优化目标函数。负采样是一种减少训练数据大小的技术,它只从每个随机游走中采样少量的正负对。 SGD 是一种迭代优化算法,它逐个更新嵌入向量。

评价

Node2vec 的性能可以通过各种度量标准进行评估,例如节点分类准确度、链接预测 AUC 和社区检测模块化。在许多数据集上,Node2vec 已被证明优于其他图嵌入算法。

结论

Node2vec 是一种强大的图嵌入算法,它使用随机游走生成训练数据并通过负采样和 SGD 进行优化。该算法已在各种机器学习任务上表现出出色的性能。在进行涉及图数据的任务时,Node2vec 是一个有价值的工具,它可以生成保留节点大部分信息的低维向量。

参考