Query di regressione degli archi Gremlin in Neptune ML - Amazon Neptune

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 regressione degli archi Gremlin in Neptune ML

La regressione degli archi è simile alla classificazione degli archi, tranne per il fatto che il valore dedotto dal modello di machine learning è numerico. Per la regressione degli archi, Neptune ML supporta le stesse query utilizzate per la classificazione.

Gli aspetti principali da notare sono:

  • È necessario usare il predicato ML "Neptune#ml.regression" per configurare il passaggio properties() per questo caso d'uso.

  • I predicati "Neptune#ml.limit" e "Neptune#ml.threshold" non sono applicabili in questo caso d'uso.

  • Per filtrare in base al valore, è necessario specificare il valore come numerico.

Sintassi di una query di regressione degli archi Gremlin

Per un grafo semplice in cui User è il nodo di testa, Movie è il nodo di coda e Rated è l'arco che li collega, ecco un esempio di query di regressione degli archi che trova il valore di valutazione numerico, qui denominato punteggio, per l'arco 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")

Puoi anche filtrare in base a un valore dedotto dal modello di regressione ML. Per gli archi Rated esistenti (da User a Movie) identificati da "rating_1", "rating_2" e "rating_3", dove la proprietà dell'arco Score sia presente per queste classificazioni, è possibile usare una query come la seguente per dedurre Score per gli archi in cui è maggiore o uguale a 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))

Utilizzo dell'inferenza induttiva in una query di regressione degli archi

Si supponga di dover aggiungere un nuovo arco a un grafo esistente in un notebook Jupyter, in questo modo:

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

È quindi possibile utilizzare una query di inferenza induttiva per ottenere un punteggio che tenga conto del nuovo arco:

%%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")

Poiché la query è non deterministica, potrebbe restituire risultati leggermente diversi se la si esegue più volte, in base al neighborhood casuale:

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

Se sono necessari risultati più coerenti, puoi rendere la query deterministica:

%%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")

Ora i risultati saranno più o meno gli stessi ogni volta che si esegue la query:

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