Requêtes de régression d'arête Gremlin dans Neptune ML - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Requêtes de régression d'arête Gremlin dans Neptune ML

La régression d'arête est similaire à la classification d'arête, si ce n'est que la valeur déduite du modèle ML est numérique. Pour la régression d'arête, Neptune ML prend en charge les mêmes requêtes que pour la classification.

Les principaux points à noter sont les suivants :

  • Vous devez utiliser le prédicat ML "Neptune#ml.regression" pour configurer l'étape properties() correspondant à ce cas d'utilisation.

  • Les prédicats "Neptune#ml.limit" et "Neptune#ml.threshold" ne sont pas applicables dans ce cas d'utilisation.

  • Pour filtrer sur la valeur, vous devez spécifier la valeur sous forme numérique.

Syntaxe d'une requête de régression d'arête Gremlin

Pour un graphe simple où User est le nœud de tête, Movie le nœud de queue et Rated l'arête qui les relie, voici un exemple de requête de régression d'arête qui recherche la valeur d'évaluation numérique, appelée score ici, pour l'arête Rated :

g.with("Neptune#ml.endpoint","edge-regression-movie-lens-endpoint") .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role") .E("rating_1","rating_2","rating_3") .properties("score").with("Neptune#ml.regression")

Vous pouvez également filtrer sur une valeur déduite du modèle de régression ML. Pour les arêtes Rated existantes (de User à Movie) identifiées par "rating_1", "rating_2" et "rating_3", pour lesquelles la propriété d'arête Score n'est pas présente pour ces notations, vous pouvez utiliser une requête comme la suivante pour déduire Score pour les arêtes où elle est supérieure ou égale à 9 :

g.with("Neptune#ml.endpoint","edge-regression-movie-lens-endpoint") .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role") .E("rating_1","rating_2","rating_3") .properties("score").with("Neptune#ml.regression") .value().is(P.gte(9))

Utilisation de l'inférence inductive dans une requête de régression d'arête

Supposons que vous ajoutiez une nouvelle arête à un graphe existant, dans un bloc-notes Jupyter, comme suit :

%%gremlin g.V('1').as('fromV') .V('2').as('toV') .addE('eLabel1').from('fromV').to('toV').property(id, 'e101')

Vous pouvez ensuite utiliser une requête d'inférence inductive pour obtenir un score prenant en compte la nouvelle arête :

%%gremlin g.with("Neptune#ml.endpoint", "er-ep") .with("Neptune#ml.iamRoleArn", "arn:aws:iam::123456789012:role/NeptuneMLRole") .E('e101').properties("score") .with("Neptune#ml.regression") .with("Neptune#ml.inductiveInference")

La requête n'étant pas déterministe, elle peut renvoyer des résultats légèrement différents si vous l'exécutez plusieurs fois, en fonction du voisinage aléatoire :

# First time ==>ep[score->96] # Second time ==>ep[score->91]

Si vous avez besoin de résultats plus cohérents, vous pouvez rendre la requête déterministe :

%%gremlin g.with("Neptune#ml.endpoint", "er-ep") .with("Neptune#ml.iamRoleArn", "arn:aws:iam::123456789012:role/NeptuneMLRole") .E('e101').properties("score") .with("Neptune#ml.regression") .with("Neptune#ml.inductiveInference") .with("Neptune#ml.deterministic")

Désormais, les résultats sont plus ou moins les mêmes chaque fois que vous exécutez la requête :

# First time ==>ep[score->96] # Second time ==>ep[score->96]