Sampling API

此文档主要详细介绍了Sampling API的使用说明

1. 概述

本手册介绍使用TuGraph的Sampling API接口。

2. 图数据预处理

在采样操作之前,根据图数据路径加载图数据,并映射成olapondb图分析类,代码如下:

galaxy = PyGalaxy(args.db_path) # 根据路径创建一个galaxy实例
galaxy.SetCurrentUser(args.username, args.password) # 设置当前用户
db = galaxy.OpenGraph('default', False) # 打开图数据库指定db
txn = db.CreateReadTxn() # 创建一个事务实例
olapondb = PyOlapOnDB('Empty', db, txn) # 根据图加载方式、图数据库实例、事务实例实例化OlapOnDB
del txn
del db
del galaxy

3. 图采样算子介绍

图采样算子在cython层实现,用于对输入的图进行采样处理,生成的NodeInfo用于保存feature属性、label属性等点信息,EdgeInfo用于保存边信息,这些元数据信息可以被用于特征抽取、网络嵌入等任务中。目前TuGraph图学习模块支持GetDB、NeighborSampling、EdgeSampling、RandomWalkSampling、NegativeSampling、Node2VecSampling六种采样算子。

3.1.RandomWalk算子:

在给定的采样点周围进行指定次数的随机游走,得到采样子图。

Process(db_: lgraph_db_python.PyGraphDB, olapondb: lgraph_db_python.PyOlapOnDB, feature_num: size_t, sample_node: list, step: size_t, NodeInfo: list, EdgeInfo: list)

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,feature特征向量的长度。 sample_node: list类型,采样点列表。 step: size_t类型,采样步数。 NodeInfo: list类型,点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,边属性字典的列表,表示边的元数据信息。 返回值: 无。

3.2.NeighborSample算子:

在给定采样点的一度邻居中采样一定数量的点,得到采样子图。

Process(db_: lgraph_db_python.PyGraphDB, olapondb: lgraph_db_python.PyOlapOnDB, feature_num: size_t, sample_node: list, nei_num: size_t, NodeInfo: list, EdgeInfo: list)

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,feature特征向量的长度。 sample_node: list类型,采样点列表。 nei_num: size_t类型,邻居采样点数。 NodeInfo: list类型,点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,边属性字典的列表,表示边的元数据信息。 返回值: 无。

3.3.Nagetive算子:

采用负采样算法,生成不存在边的子图。

Process(db_: lgraph_db_python.PyGraphDB, olapondb: lgraph_db_python.PyOlapOnDB, feature_num: size_t, num_samples: size_t, NodeInfo: list, EdgeInfo: list)

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,feature特征向量的长度。 num_samples: size_t类型,生成不存在边的数量。 NodeInfo: list类型,点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,边属性字典的列表,表示边的元数据信息。 返回值: 无。

3.4.EdgeSampling算子:

根据边采样率,生成采样边的子图。

Process(db_: lgraph_db_python.PyGraphDB, olapondb:lgraph_db_python.PyOlapOnDB, feature_num: size_t, sample_rate: double, NodeInfo: list, EdgeInfo: list,EdgeInfo: list)

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,feature特征向量的长度。 sample_rate: double类型,采样率。 NodeInfo: list类型,一个点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,一个边属性字典的列表,表示边的元数据信息。 返回值: 无。

3.5.GetDB算子:

从数据库中获取图数据并转换成所需数据结构。

Process(db_: lgraph_db_python.PyGraphDB, olapondb:lgraph_db_python.PyOlapOnDB, feature_num: size_t, NodeInfo: list, EdgeInfo: list)

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,feature特征向量的长度。 NodeInfo: list类型,一个点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,一个边属性字典的列表,表示边的元数据信息。 返回值: 无。

3.6.Node2VecSampling算子:

Node2Vec 是一种图嵌入算法,通过随机游走生成节点序列,并使用 Word2Vec 算法将节点嵌入到低维空间中。它结合了 DFS 和 BFS 的思想,通过参数 𝑝 和𝑞 控制随机游走的跳跃概率,从而平衡捕捉社区结构(局部)和结构等价性(全局)信息。嵌入向量可以用于下游任务如节点分类、聚类或链接预测。

def Process(db_: lgraph_db_python.PyGraphDB, olapondb:lgraph_db_python.PyOlapOnDB, feature_num: size_t, p:cython.double , q:cython.double, walk_length: size_t, num_walks: size_t, sample_node:list, NodeInfo: list, EdgeInfo: list):

参数列表: db_: 图数据库实例。 olapondb: 图分析类。 feature_num: size_t类型,生成的node 向量的长度。 p: double类型,Node2Vec算法参数,控制返回前一个节点的偏好。 q: double类型,Node2Vec算法参数,控制探索外部节点的偏好。 walk_length: size_t类型,随机游走的长度。 num_walks: size_t类型,随机游走的次数。 sample_node: list类型,采样点列表。 NodeInfo: list类型,一个点属性字典的列表,表示点的元数据信息。 EdgeInfo: list类型,一个边属性字典的列表,表示边的元数据信息。 返回值: 无。

4. 用户自定义采样算法

用户也可以通过TuGraph Olap接口实现自定义采样算法,接口文档参见此处,该文档主要介绍图采样算法使用的相关函数的接口设计。