Vue d’ensemble
S'écartant du random walk classique, le Node2Vec Walk est un random walk biaisé qui peut explorer les voisinages de manière BFS ainsi que DFS. Veuillez vous référer à l'algorithme Node2Vec pour plus de détails.
Considérations
- Les boucles autocohérentes sont également admissibles pour être parcourues pendant le random walk.
- Si le parcours commence à partir d'un node isolé sans boucle autocohérente, le parcours s'arrête après le premier pas car il n'y a pas d'edges adjacentes à suivre.
- L'algorithme Node2Vec Walk ignore la direction des edges mais les considère comme des edges non dirigées.
Syntaxe
- Commande:
algo(random_walk_node2vec)
- Paramètres:
Nom |
Type |
Spécification |
Défaut |
Optionnel |
Description |
---|---|---|---|---|---|
ids / uuids | []_id / []_uuid |
/ | / | Oui | ID/UUID des nodes à partir desquels démarrer les random walks; démarrer à partir de tous les nodes si non défini |
walk_length | int | ≧1 | 1 |
Oui | Profondeur de chaque marche, c'est-à-dire le nombre de nodes à visiter |
walk_num | int | ≧1 | 1 |
Oui | Nombre de marches à effectuer pour chaque node spécifié |
edge_schema_property | []@<schema>?.<property> |
Type numérique, doit être LTE | / | Oui | Propriété(s) de l'edge à utiliser comme poids des edges, où les valeurs de plusieurs propriétés sont accumulées; les nodes ne marchent que le long des edges avec la ou les propriétés spécifiées |
p | float | >0 | 1 |
Oui | Le paramètre return; une valeur plus grande réduit la probabilité de retour |
q | float | >0 | 1 |
Oui | Le paramètre in-out; il tend à marcher au même niveau lorsque la valeur est supérieure à 1, sinon il tend à marcher loin |
limit | int | ≧-1 | -1 |
Oui | Nombre de résultats à retourner, -1 pour retourner tous les résultats |
Exemple
Le graphe d'exemple est le suivant, les chiffres sur les edges sont les valeurs de la propriété d'edge score:
File Writeback
Spécification |
Contenu |
Description |
---|---|---|
filename | _id ,_id ,... |
IDs des nodes parcourus |
algo(random_walk_node2vec).params({
walk_length: 6,
walk_num: 2,
p: 10000,
q: 0.0001
}).write({
file:{
filename: 'walks'
}})
Résultats: Fichier walks
J,G,H,I,H,G,
I,H,G,F,E,C,
H,G,H,G,F,E,
G,H,G,H,I,H,
F,G,E,C,D,F,
E,F,E,F,G,H,
D,C,D,C,E,F,
C,D,A,B,A,C,
B,A,C,D,F,E,
A,B,A,B,A,C,
J,G,F,D,C,A,
I,H,G,F,E,C,
H,I,H,I,H,G,
G,F,D,C,E,F,
F,E,C,A,B,A,
E,F,E,F,D,C,
D,F,D,F,E,C,
C,D,A,B,A,C,
B,A,C,E,F,G,
A,C,A,C,E,F,
Direct Return
Ordinal Alias | Type | Description |
Colonnes |
---|---|---|---|
0 | []perWalk | Tableau d'UUID des nodes parcourus | [_uuid, _uuid, ...] |
algo(random_walk_node2vec).params({
ids: ['J'],
walk_length: 6,
walk_num: 3,
p: 2000,
q: 0.001
}) as walks
return walks
Résultats: walks
[10, 7, 6, 5, 3, 1] |
[10, 7, 6, 5, 3, 1] |
[10, 7, 8, 9, 8, 7] |
Stream Return
Ordinal Alias | Type | Description |
Colonnes |
---|---|---|---|
0 | []perWalk | Tableau d'UUID des nodes parcourus | [_uuid, _uuid, ...] |
algo(random_walk_node2vec).params({
ids: ['A'],
walk_length: 5,
walk_num: 10,
p: 1000,
q: 1,
edge_schema_property: 'score'
}).stream() as walks
return walks
Résultats: walks
[1, 3, 4, 6, 5] |
[1, 2, 1, 3, 5] |
[1, 2, 1, 3, 4] |
[1, 3, 4, 6, 7] |
[1, 3, 4, 6, 7] |
[1, 3, 5, 6, 7] |
[1, 3, 5, 6, 4] |
[1, 2, 1, 3, 5] |
[1, 3, 4, 6, 7] |
[1, 3, 4, 6, 5] |