

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Neptune ML의 Gremlin 엣지 회귀 쿼리
<a name="machine-learning-gremlin-edge-regression"></a>

엣지 회귀는 ML 모델에서 유추된 값이 수치라는 점을 제외하면 엣지 분류와 유사합니다. 엣지 회귀의 경우 Neptune ML은 분류와 동일한 쿼리를 지원합니다.

주목해야 할 주요 사항은 다음과 같습니다.
+ 이 사용 사례에 맞게 `properties()` 단계를 구성하려면 ML 조건자 `"Neptune#ml.regression"`을 사용해야 합니다.
+ 이 사용 사례에는 `"Neptune#ml.limit"` 및 `"Neptune#ml.threshold"` 조건자를 적용할 수 없습니다.
+ 값을 필터링하려면 값을 숫자로 지정해야 합니다.

## Gremlin 엣지 회귀 쿼리 구문
<a name="machine-learning-gremlin-edge-regression-syntax"></a>

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

## 엣지 회귀 쿼리에서 유도 추론 사용
<a name="machine-learning-gremlin-edge-regression-inductive"></a>

Jupyter Notebook의 기존 그래프에 다음과 같이 새 엣지를 추가한다고 가정해 보겠습니다.

```
%%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]
```