

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Neptune ML での Gremlin エッジリグレッションクエリ
エッジリグレッション

エッジリグレッションは、モデルから推測される値が数値であることを除いて、エッジ分類に似ています。エッジリグレッションの場合、Neptune ML は分類と同じクエリをサポートします。

注意すべき重要な点は次のとおりです。
+ このユースケースの `properties()` ステップを設定するために、ML 述語 `"Neptune#ml.regression"` を使用する必要があります。
+ `"Neptune#ml.limit"` および `"Neptune#ml.threshold"` 述語はこのユースケースでは適用されません。
+ 値をフィルタリングするには、値を数値として指定する必要があります。

## Gremlin エッジリグレッションクエリの構文
エッジリグレッション構文

`User` は先頭ノード、`Movie` は末尾ノード、`Rated` はそれらを接続するエッジである単純なグラフの場合、エッジ `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")
```

ML リグレッションモデルから推論された値でフィルタリングすることもできます。`"rating_1"`、`"rating_2"`、`"rating_3"` によって識別される既存の `Rated` エッジ (`User` から `Movie` へ) である、ここで、エッジプロパティ `Score` はこれらの評価には存在しません。9 以上のエッジに対して、次のようなクエリを使用して `Score` を推論できます。

```
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))
```

## エッジリグレッションクエリでの帰納的推論の使用
帰納的推論の使用

Jupyter ノートブックの既存のグラフに、次のように新しいエッジを追加するとします。

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

この場合、帰納的推論クエリを使用して、新しいエッジを考慮したスコアを取得できます。

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

このクエリは決定論的ではないため、複数回実行すると、ランダム近傍によって多少異なる結果が返される可能性があります。

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

# Second time
==>ep[score->91]
```

より一貫性のある結果が必要な場合は、クエリを決定論的にすることもできます。

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

これで、クエリを実行するたびに結果がほぼ同じになります。

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

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