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'étapeproperties()
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]