

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kueri prediksi tautan Gremlin menggunakan model prediksi tautan di Neptunus ML
<a name="machine-learning-gremlin-link-prediction-queries"></a>

Model prediksi link dapat memecahkan masalah seperti berikut:
+ **Prediksi head-node**: Mengingat simpul dan tipe tepi, dari simpul apa yang mungkin ditautkan oleh simpul itu?
+ **Prediksi ekor-simpul**: Diberikan simpul dan label tepi, simpul apa yang mungkin ditautkan oleh simpul itu?

**catatan**  
Prediksi edge belum didukung di Neptune ML.

Untuk contoh di bawah ini, pertimbangkan grafik sederhana dengan simpul `User` dan `Movie` yang dihubungkan oleh tepi. `Rated`

Berikut adalah contoh kueri prediksi head-node, yang digunakan untuk memprediksi lima pengguna teratas yang paling mungkin menilai film,,`"movie_1"`, `"movie_2"` dan: `"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")
```

Berikut ini adalah yang serupa untuk prediksi simpul ekor, yang digunakan untuk memprediksi lima film teratas yang kemungkinan akan `"user_1"` dinilai pengguna:

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

Baik label tepi dan label simpul yang diprediksi diperlukan. Jika salah satu dihilangkan, maka akan melempar. Sebagai contoh, kueri berikut tanpa label vertex yang diprediksi melempar pengecualian:

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

Demikian pula, kueri berikut tanpa label edge melempar pengecualian:

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

Untuk pesan kesalahan spesifik yang ditampilkan pengecualian ini, lihat [daftar pengecualian Neptunus ML](machine-learning-gremlin-exceptions.md).

## Kueri prediksi link lainnya
<a name="machine-learning-gremlin-other-link-prediction-queries"></a>

Anda dapat menggunakan langkah `select()` dengan langkah `as(`) untuk mengirim vertex yang diprediksi bersama-sama dengan vertex 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")
```

Anda dapat membuat kueri tak terbatas, seperti berikut ini:

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

## Menggunakan inferensi induktif dalam kueri prediksi tautan
<a name="machine-learning-gremlin-link-predict-inductive"></a>

Misalkan Anda menambahkan simpul baru ke grafik yang ada, di buku catatan Jupyter, seperti ini:

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

Anda kemudian dapat menggunakan kueri inferensi induktif untuk memprediksi node kepala, dengan mempertimbangkan node baru:

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

Hasil:

```
==>V[2]
```

Demikian pula, Anda dapat menggunakan kueri inferensi induktif untuk memprediksi simpul ekor, dengan mempertimbangkan simpul baru:

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

Hasil:

```
==>V[1]
```