概述
不同于经典的随机游走,Node2Vec 游走采用二阶随机游走方式,并通过参数控制游走偏向于 BFS 还是 DFS。Node2Vec 随机游走是 Node2Vec 图嵌入算法工作框架的一部分,详见《Node2Vec》一章。
结果和统计值
在下图进行 3 次 Node2Vec 随机游走,从 3 号点出发,游走深度为 5,所有边权重为 1,设定 p 为 10000,q 为 0.01:
算法结果:在返回的 walks
列下包含有 3 个节点数组
walks |
---|
[3, 5, 3, 1, 2] |
[3, 4, 6, 7, 8] |
[3, 1, 2, 1, 3] |
算法统计值:无
命令和参数配置
- 命令:
algo(random_walk_node2vec)
params()
参数配置如下:
名称 | 类型 | 默认值 |
规范 |
描述 |
---|---|---|---|---|
ids 或 uuids | []_id 或 []_uuid |
/ | / | 起点的 ID 或 UUID;忽略表示选择全部点 |
walk_length | int | 1 | >=1 | 每次游走的深度,即游走访问的节点数量 |
walk_num | int | 1 | >=1 | 游走次数 |
p | float | 1 | >0 | return 参数;值越大,向回走的概率越小 |
q | float | 1 | >0 | in-out 参数;>1 代表倾向在同级游走,<1 代表倾向向远处游走 |
edge_schema_property | []@<schema>?.<property> |
/ | 数值类的边属性,需LTE | 边权重的一个或多个属性名称,带不带 schema 均可;节点只会沿着带有这些属性的边游走,且经过这些边的概率与边权重成正比;如果边带有多个指定属性,权重值为这些属性值的和;忽略表示所有边权重为 1 |
buffer_size | int | 1000 | / | 需要返回的结果条数,< 0 表示返回所有结果,≧ 0 表示返回部分结果 |
示例:选择图中 UUID = 1,2,...,10 节点进行 3 次 Node2Vec 随机游走,每次游走深度为 5,p 为 10000,q 为 0.01
algo(random_walk_node2vec).params({
uuids: [1,2,3],
walk_num: 3,
walk_length: 5,
p: 10000,
q: 100
}) as walk
return walk
算法执行
任务回写
1. 文件回写
配置项 |
各列数据 |
描述 |
---|---|---|
filename | _id ,_id ,... |
从起点出发随机游走依次经过的节点的 ID |
示例:选择图中 UUID = 1,2,3 节点进行 3 次 Node2Vec 随机游走,每次游走深度为 5,p 为 10000,q 为 0.01,将算法结果回写至名为 path 的文件
algo(random_walk_node2vec).params({
uuids: [1,2,3],
walk_num: 3,
walk_length: 5,
p: 10000,
q: 100
}).write({
file:{
filename: "path"
}})
2. 属性回写
算法不支持属性回写。
3. 统计回写
算法无统计值。
直接返回
别名序号 |
类型 |
描述 | 列名 |
---|---|---|---|
0 | []perWalk | 每次游走路径的所有节点的 UUID 构成的数组 | [_uuid, _uuid, ...] |
示例:在全图进行 10 次 Node2Vec 随机游走,每次游走深度为 6,p 为 2,q 为 100,将算法结果定义为别名 paths 并返回
algo(random_walk_node2vec).params({
walk_num: 10,
walk_length: 6,
p: 2,
q: 100
}) as paths return paths
流式返回
别名序号 |
类型 |
描述 | 列名 |
---|---|---|---|
0 | []perWalk | 每次游走路径的所有节点的 UUID 构成的数组 | [_uuid, _uuid, ...] |
示例:示例:在全图进行 10 次 Node2Vec 随机游走,每次游走深度为 6,p 为 2,q 为 100,返回游走深度大于 5 的结果
algo(random_walk_node2vec).params({
walk_num: 10,
walk_length: 6,
p: 2,
q: 100,
edge_schema_property: @follow.level
}).stream() as walk
where size(walk) > 5
return walk
实时统计
算法无统计值。