neo4j GDS 系列
Neo4j GDS-01-graph-data-science 图数据科学插件库概览
Neo4j GDS-02-graph-data-science 插件库安装实战笔记
Neo4j GDS-03-graph-data-science 简单聊一聊图数据科学插件库
Neo4j GDS-06-neo4j GDS 库中社区检测算法介绍
Neo4j GDS-07-neo4j GDS 库中社区检测算法实现
Neo4j GDS-08-neo4j GDS 库中路径搜索算法介绍
Neo4j GDS-09-neo4j GDS 库中路径搜索算法实现
Neo4j GDS-10-neo4j GDS 库中相似度算法介绍
Neo4j GDS-11-neo4j GDS 库中相似度算法实现
Neo4j GDS-12-neo4j GDS 库中节点插入(Node Embedding)算法介绍
Neo4j GDS-13-neo4j GDS 库中节点插入算法实现
Neo4j GDS-14-neo4j GDS 库中链接预测算法介绍
Neo4j GDS-15-neo4j GDS 库中链接预测算法实现
Neo4j GDS-16-neo4j GDS 库创建 graph 图投影
Neo4j GDS-17-neo4j GDS 库创建 graph 图投影更复杂的场景
图的节点插入算法
图节点嵌入算法详解
一、定义与核心目标
图节点嵌入(Node Embedding)是将图结构中的节点映射到低维向量空间的技术,旨在保留原图的结构信息(如连接性、相似性)和属性信息。其核心目标是:在低维空间中,连接紧密或结构相似的节点向量距离更近。
二、核心原理与技术分类
基于随机游走的方法
通过模拟节点间的路径生成序列,借鉴NLP中的序列建模技术(如Word2Vec):- 关键假设:共现在同一游走路径的节点具有相似性
- 优势:能捕捉局部和全局结构特征
基于矩阵分解的方法
将邻接矩阵分解为低维矩阵的乘积:- 典型算法:Laplacian Eigenmaps、Graph Factorization
- 数学基础:保留图拉普拉斯矩阵的特征
基于深度学习的方法
使用神经网络自动学习复杂结构:- 图神经网络(GNN) :通过消息传递机制聚合邻居信息(如GraphSAGE)
- 深度自编码器:重构输入图结构(如SDNE)
优化算法驱动的方法
直接定义损失函数并通过梯度下降优化:- 典型代表:LINE算法的一阶/二阶相似度优化
三、经典算法详解
1. DeepWalk
- 原理:
将随机游走生成的节点序列视为"句子",使用Skip-gram模型学习嵌入 - 步骤:
- 随机游走:每个节点生成γ条长度为t的路径
- 滑动窗口采样:构建(中心词,上下文)对
- 分层Softmax训练:优化节点共现概率
- 特点:
- 首个将NLP技术引入图嵌入
- 仅适用于静态图,无法处理新节点
2. Node2Vec
改进点:
引入有偏随机游走策略,通过参数p(返回概率)、q(探索概率)控制BFS/DFS倾向游走策略:
- 当q>1时偏向BFS(捕捉局部结构)
- 当q<1时偏向DFS(发现社区结构)
数学表达:
转移概率公式:
P ( v n e x t = x ∣ v c u r r = u ) = w u x ⋅ α ( p , q ) ∑ v ∈ N ( u ) w u v ⋅ α ( p , q ) P(v_{next}=x|v_{curr}=u) = \frac{w_{ux}\cdot \alpha(p,q)}{\sum_{v\in N(u)} w_{uv}\cdot \alpha(p,q)} P(vnext=x∣vcurr=u)=∑v∈N(u)wuv⋅α(p,q)wux⋅α(p,q)其中α控制返回/探索倾向
3. GraphSAGE
突破性:
提出归纳式学习框架(Inductive Learning),可处理动态图和新节点核心步骤:
- 邻居采样:分层采样固定数量邻居(如每层采样10个)
- 特征聚合:使用均值/LSTM/Pooling函数聚合邻居特征
- 参数更新:通过下游任务反向传播优化
数学表达:
h v k = σ ( W k ⋅ AGGREGATE ( { h u k − 1 , ∀ u ∈ N ( v ) } ) ) h_v^k = \sigma(W^k \cdot \text{AGGREGATE}(\{h_u^{k-1}, \forall u \in N(v)\})) hvk=σ(Wk⋅AGGREGATE({huk−1,∀u∈N(v)}))其中k表示网络层数