Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Query di previsione dei collegamenti Gremlin che utilizzano modelli di previsione dei collegamenti in Neptune ML
I modelli di previsione dei collegamenti possono risolvere problemi come i seguenti:
Previsione del nodo di testa: dati un vertice e un tipo di arco, quali sono i vertici da cui provengono i collegamenti di tale vertice?
Previsione del nodo di coda: dati un vertice e un tipo di arco, quali sono i vertici a cui si collega tale vertice?
Nota
La previsione degli archi non è ancora supportata in Neptune ML.
Per gli esempi seguenti, si consideri un semplice grafo con i vertici User e Movie collegati dall'arco Rated.
Ecco un esempio di query di previsione del nodo di testa, usata per prevedere i primi cinque utenti con le maggiori probabilità di valutare i film, "movie_1", "movie_2" e "movie_3":
g.with("Neptune#ml.endpoint","node-prediction-movie-lens-endpoint") .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role") .with("Neptune#ml.limit", 5) .V("movie_1", "movie_2", "movie_3") .in("rated").with("Neptune#ml.prediction").hasLabel("user")
Eccone una simile per la previsione del nodo di coda, usata per prevedere i primi cinque film con le maggiori probabilità di essere valutati dall'utente "user_1":
g.with("Neptune#ml.endpoint","node-prediction-movie-lens-endpoint") .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role") .V("user_1") .out("rated").with("Neptune#ml.prediction").hasLabel("movie")
L'etichetta dell'arco e l'etichetta del vertice previsto sono obbligatorie. Se una delle due viene omessa, verrà generata un'eccezione. Ad esempio, la seguente query senza un'etichetta del vertice previsto genera un'eccezione:
g.with("Neptune#ml.endpoint","node-prediction-movie-lens-endpoint") .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role") .V("user_1") .out("rated").with("Neptune#ml.prediction")
Analogamente, la seguente query senza un'etichetta dell'arco genera un'eccezione:
g.with("Neptune#ml.endpoint","node-prediction-movie-lens-endpoint") .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role") .V("user_1") .out().with("Neptune#ml.prediction").hasLabel("movie")
Per i messaggi di errore specifici restituiti da queste eccezioni, consulta l'elenco delle eccezioni di Neptune ML.
Altre query di previsione dei collegamenti
Puoi usare il passaggio select() con il passaggio as() per generare i vertici previsti insieme ai vertici di input:
g.with("Neptune#ml.endpoint","node-prediction-movie-lens-endpoint") .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role") .V("movie_1").as("source") .in("rated").with("Neptune#ml.prediction").hasLabel("user").as("target") .select("source","target") g.with("Neptune#ml.endpoint","node-prediction-movie-lens-endpoint") .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role") .V("user_1").as("source") .out("rated").with("Neptune#ml.prediction").hasLabel("movie").as("target") .select("source","target")
Puoi eseguire query illimitate, come queste:
g.with("Neptune#ml.endpoint","node-prediction-movie-lens-endpoint") .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role") .V("user_1") .out("rated").with("Neptune#ml.prediction").hasLabel("movie") g.with("Neptune#ml.endpoint","node-prediction-movie-lens-endpoint") .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role") .V("movie_1") .in("rated").with("Neptune#ml.prediction").hasLabel("user")
Utilizzo dell'inferenza induttiva in una query di previsione dei collegamenti
Si supponga di dover aggiungere un nuovo nodo a un grafo esistente in un notebook Jupyter, in questo modo:
%%gremlin g.addV('label1').property(id,'101').as('newV1') .addV('label2').property(id,'102').as('newV2') .V('1').as('oldV1') .V('2').as('oldV2') .addE('eLabel1').from('newV1').to('oldV1') .addE('eLabel2').from('oldV2').to('newV2')
È quindi possibile utilizzare una query di inferenza induttiva per prevedere il nodo di testa, tenendo conto del nuovo nodo:
%%gremlin g.with("Neptune#ml.endpoint", "lp-ep") .with("Neptune#ml.iamRoleArn", "arn:aws:iam::123456789012:role/NeptuneMLRole") .V('101').out("eLabel1") .with("Neptune#ml.prediction") .with("Neptune#ml.inductiveInference") .hasLabel("label2")
Risultato:
==>V[2]
Allo stesso modo, è possibile utilizzare una query di inferenza induttiva per prevedere il nodo di coda, tenendo conto del nuovo nodo:
%%gremlin g.with("Neptune#ml.endpoint", "lp-ep") .with("Neptune#ml.iamRoleArn", "arn:aws:iam::123456789012:role/NeptuneMLRole") .V('102').in("eLabel2") .with("Neptune#ml.prediction") .with("Neptune#ml.inductiveInference") .hasLabel("label1")
Risultato:
==>V[1]