

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

# Neptune ML での Gremlin ノードリグレッションクエリ
<a name="machine-learning-gremlin-vertex-regression-queries"></a>

ノードリグレッションは、各ノードのリグレッションモデルから推測される値が数値であることを除いて、ノード分類に似ています。次の違いを除いて、ノード分類の場合と同じ Gremlin クエリをノードリグレッションに使用できます。
+ 繰り返しますが、Neptune ML では、ノードは頂点を指します。
+ `properties()` ステップは `properties().with("Neptune#ml.classification")` の代わりに `properties().with("Neptune#ml.regression")` 形式を取ります。
+ `"Neptune#ml.limit`" と `"Neptune#ml.threshold"` 述語は適用されません。
+ 値をフィルタリングするときは、数値を指定する必要があります。

頂点分類クエリの例を次に示します。

```
g.with("Neptune#ml.endpoint","node-regression-movie-lens-endpoint")
 .with("Neptune#ml.iamRoleArn", "arn:aws:iam::0123456789:role/sagemaker-role")
 .V("movie_1","movie_2","movie_3")
 .properties("revenue").with("Neptune#ml.regression")
```

次の例に示すように、リグレッションモデルを使用して推論された値をフィルタリングできます。

```
g.with("Neptune#ml.endpoint","node-regression-movie-lens-endpoint")
 .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role")
 .V("movie_1","movie_2","movie_3")
 .properties("revenue").with("Neptune#ml.regression")
 .value().is(P.gte(1600000))

g.with("Neptune#ml.endpoint","node-regression-movie-lens-endpoint")
 .with("Neptune#ml.iamRoleArn","arn:aws:iam::0123456789:role/sagemaker-role")
 .V("movie_1","movie_2","movie_3")
 .properties("revenue").with("Neptune#ml.regression")
 .hasValue(P.lte(1600000D))
```

## ノードリグレッションクエリでの帰納的推論の使用
<a name="machine-learning-gremlin-node-regress-inductive"></a>

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

```
%%gremlin
g.addV('label1').property(id,'101').as('newV')
 .V('1').as('oldV1')
 .V('2').as('oldV2')
 .addE('eLabel1').from('newV').to('oldV1')
 .addE('eLabel2').from('oldV2').to('newV')
```

その場合、帰納的推論クエリを使用して、新しいノードを考慮した評価を得ることができます。

```
%%gremlin
g.with("Neptune#ml.endpoint", "nr-ep")
 .with("Neptune#ml.iamRoleArn", "arn:aws:iam::123456789012:role/NeptuneMLRole")
 .V('101').properties("rating")
 .with("Neptune#ml.regression")
 .with("Neptune#ml.inductiveInference")
```

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

```
# First time
==>vp[rating->9.1]

# Second time
==>vp[rating->8.9]
```

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

```
%%gremlin
g.with("Neptune#ml.endpoint", "nc-ep")
 .with("Neptune#ml.iamRoleArn", "arn:aws:iam::123456789012:role/NeptuneMLRole")
 .V('101').properties("rating")
 .with("Neptune#ml.regression")
 .with("Neptune#ml.inductiveInference")
 .with("Neptune#ml.deterministic")
```

これで、結果は毎回ほぼ同じになります。

```
# First time
==>vp[rating->9.1]

# Second time
==>vp[rating->9.1]
```