

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

# Pembelajaran mesin tuning berubah di AWS Glue
<a name="add-job-machine-learning-transform-tuning"></a>

Anda dapat menyetel transformasi machine learning Anda di AWS Glue untuk meningkatkan hasil tugas pembersihan data Anda untuk memenuhi tujuan Anda. Untuk meningkatkan transformasi Anda, Anda dapat mengajarinya dengan menghasilkan set pelabelan, menambahkan label, dan kemudian mengulangi langkah-langkah ini beberapa kali sampai Anda mendapatkan hasil yang diinginkan. Anda juga dapat menyetel dengan mengubah beberapa parameter machine learning. 

Untuk informasi selengkapnya tentang transformasi machine learning, lihat [Rekam pencocokan dengan AWS Lake Formation FindMatches](machine-learning.md).

**Topics**
+ [Pengukuran pembelajaran mesin](machine-learning-terminology.md)
+ [Memutuskan antara presisi dan mengingat](machine-learning-precision-recall-tradeoff.md)
+ [Memutuskan Antara Akurasi dan Biaya](machine-learning-accuracy-cost-tradeoff.md)
+ [Memperkirakan kualitas pertandingan menggunakan skor kepercayaan pertandingan](match-scoring.md)
+ [Mengajarkan transformasi Find Matches](machine-learning-teaching.md)

# Pengukuran pembelajaran mesin
<a name="machine-learning-terminology"></a>

Untuk memahami pengukuran yang digunakan untuk menyetel transformasi machine learning Anda, Anda harus terbiasa dengan terminologi berikut:

**Benar positif (TP)**  
Sebuah kecocokan dalam data yang ditemukan dengan benar oleh transformasi, kadang-kadang disebut *temuan*.

**Benar negatif (TN)**  
Sebuah ketidakcocokan dalam data yang dengan benar ditolak oleh transformasi.

**Positif palsu (FP)**  
Sebuah ketidakcocokan dalam data yang keliru diklasifikasikan sebagai kecocokan, kadang-kadang disebut *alarm palsu*.

**Negatif palsu (FN)**  
Sebuah kecocokan dalam data yang tidak ditemukan oleh transformasi, kadang-kadang disebut *meleset*.

Untuk informasi lebih lanjut tentang terminologi yang digunakan dalam machine learning, lihat [matriks kebingungan](https://en.wikipedia.org/wiki/Confusion_matrix) di Wikipedia.

Untuk menyetel transformasi machine learning Anda, Anda dapat mengubah nilai pengukuran berikut di **Properti lanjutan** dari transformasi tersebut.
+ **Precision** mengukur seberapa baik transformasi menemukan benar positif di antara jumlah total catatan yang diidentifikasi sebagai positif (benar positif dan positif palsu). Untuk informasi selengkapnya, lihat [Precision dan recall](https://en.wikipedia.org/wiki/Precision_and_recall) di Wikipedia.
+ **Recall** mengukur seberapa baik transformasi menemukan benar positif dari total catatan dalam data sumber. Untuk informasi selengkapnya, lihat [Precision dan recall](https://en.wikipedia.org/wiki/Precision_and_recall) di Wikipedia.
+ **Akurasi ** mengukur seberapa baik transformasi menemukan benar positif dan benar negatif. Peningkatan akurasi memerlukan lebih banyak sumber daya dan biaya mesin. Tetapi, itu juga menghasilkan peningkatan recall. Untuk informasi selengkapnya, lihat [Accuracy dan precision](https://en.wikipedia.org/wiki/Accuracy_and_precision#In_information_systems) di Wikipedia.
+ **Biaya** mengukur berapa banyak sumber daya komputasi (dan uang) yang digunakan untuk menjalankan transformasi.

# Memutuskan antara presisi dan mengingat
<a name="machine-learning-precision-recall-tradeoff"></a>

Setiap transformasi `FindMatches` berisi parameter `precision-recall`. Anda menggunakan parameter tersebut untuk menentukan salah satu hal berikut ini:
+ Jika Anda lebih peduli tentang transformasi yang keliru melaporkan bahwa dua catatan cocok ketika mereka sebenarnya tidak cocok, maka Anda harus menekankan pada *precision*. 
+ Jika Anda lebih peduli tentang transformasi yang gagal untuk mendeteksi catatan yang sebenarnya cocok, maka Anda harus menekankan pada *recall*.

Anda dapat melakukan trade-off ini di konsol AWS Glue atau menggunakan operasi API machine learning AWS Glue.

**Kapan harus mendukung presisi**  
Dukung precision jika Anda lebih peduli tentang risiko jika `FindMatches` menghasilkan sepasang catatan yang cocok ketika mereka sebenarnya tidak cocok. Untuk mendukung precision, pilih nilai trade-off dari precision-recall yang *lebih tinggi*. Dengan nilai yang lebih tinggi, transformasi `FindMatches` akan membutuhkan lebih banyak bukti untuk memutuskan bahwa sepasang catatan harus dicocokkan. Transformasi disetel untuk cenderung ke arah yang mengatakan bahwa catatan tidak cocok.

Misalnya, bayangkan bahwa Anda menggunakan `FindMatches` untuk mendeteksi item duplikat dalam katalog video, dan Anda memberikan nilai precision-recall yang lebih tinggi untuk transformasi tersebut. Jika transformasi Anda salah mendeteksi bahwa *Star Wars: A New Hope* adalah sama dengan *Star Wars: The Empire Strikes Back*, maka seorang pelanggan yang ingin *A New Hope* mungkin ditampilkan *The Empire Strikes Back*. Ini akan menjadi pengalaman pelanggan yang buruk. 

Namun, jika transformasi tersebut gagal untuk mendeteksi bahwa *Star Wars: A New Hope* dan *Star Wars: Episode IV—A New Hope* adalah item yang sama, maka pelanggan mungkin bingung pada awalnya tapi mungkin akhirnya mengenali mereka sebagai video yang sama. Hal itu akan menjadi kesalahan, tapi tidak seburuk skenario sebelumnya.

**Kapan harus mengingat kembali**  
Dukung recall jika Anda lebih peduli tentang risiko yang diakibatkan transformasi `FindMatches` jika ia gagal untuk mendeteksi sepasang catatan yang sebenarnya cocok. Untuk mendukung recall, pilih nilai trade-off dari precision-recall menjadi *lebih rendah*. Dengan nilai yang lebih rendah, transformasi `FindMatches` akan membutuhkan lebih sedikit bukti untuk memutuskan bahwa sepasang catatan harus dicocokkan. Transformasi disetel untuk cenderung ke arah yang mengatakan bahwa catatan cocok.

Sebagai contoh, hal ini mungkin menjadi prioritas untuk organisasi keamanan. Misalkan Anda mencocokkan pelanggan terhadap daftar penipu yang sudah dikenal, dan penting untuk menentukan apakah seorang pelanggan adalah seorang penipu. Anda menggunakan `FindMatches` untuk mencocokkan daftar penipu dengan daftar pelanggan. Setiap kali `FindMatches` mendeteksi kecocokan antara dua daftar tersebut, maka auditor manusia ditugaskan untuk memverifikasi bahwa orang tersebut, pada kenyataannya, adalah seorang penipu. Organisasi Anda mungkin lebih memilih untuk memilih recall dari pada precision. Dengan kata lain, Anda lebih suka membuat auditor meninjau dan menolak secara manual beberapa kasus ketika pelanggan tersebut bukan seorang penipu daripada gagal untuk mengidentifikasi bahwa seorang pelanggan, pada kenyataannya, ada dalam daftar penipu.

**Bagaimana mendukung presisi dan ingatan**  
Cara terbaik untuk meningkatkan precision dan recall adalah dengan memberi labeli pada lebih banyak data. Saat Anda melabeli lebih banyak data, maka keakuratan transformasi `FindMatches` secara keseluruhan meningkat, sehingga hal itu juga meningkatkan precision dan recall. Namun demikian, bahkan dengan transformasi yang paling akurat sekalipun, selalu ada area abu-abu di mana Anda perlu bereksperimen dengan mendukung precision atau recall, atau memilih nilai di tengah. 

# Memutuskan Antara Akurasi dan Biaya
<a name="machine-learning-accuracy-cost-tradeoff"></a>

Setiap transformasi `FindMatches` berisi sebuah parameter `accuracy-cost`. Anda dapat menggunakan parameter tersebut untuk menentukan salah satu hal berikut ini:
+ Jika Anda lebih peduli dengan transformasi yang secara akurat melaporkan bahwa dua catatan cocok, maka Anda harus menekankan pada *accuracy*.
+ Jika Anda lebih peduli dengan biaya atau kecepatan menjalankan transformasi, maka Anda harus menekankan pada *biaya lebih rendah*.

Anda dapat melakukan trade-off ini di konsol AWS Glue atau menggunakan operasi API machine learning AWS Glue.

**Kapan harus mendukung akurasi**  
Dukung accuracy jika Anda lebih peduli tentang risiko yang diakibatkan `find matches` jika hasilnya tidak akan berisi kecocokan. Untuk mendukung accuracy, pilih nilai trade-off accuracy-cost yang *lebih tinggi*. Dengan nilai yang lebih tinggi, transformasi `FindMatches` memerlukan lebih banyak waktu untuk melakukan pencarian yang lebih menyeluruh untuk melakukan pencocokan catatan dengan benar. Perhatikan bahwa parameter ini tidak mengurangi kemungkinan keliru memanggil pasangan catatan yang tidak cocok sebagai pasangan yang cocok. Transformasi disetel untuk bias ke arah menghabiskan lebih banyak waktu untuk menemukan kecocokan.

**Kapan harus mendukung biaya**  
Dukung cost jika Anda lebih peduli tentang biaya menjalankan transformasi `find matches` dan kurang peduli tentang berapa banyak kecocokan yang ditemukan. Untuk mendukung cost, pilih nilai trade-off dari accuracy-cost yang *lebih rendah*. Dengan nilai yang lebih rendah, transformasi `FindMatches` memerlukan lebih sedikit sumber daya untuk dijalankan. Transformasi disetel untuk bias ke arah menemukan kecocokan lebih sedikit. Jika hasilnya dapat diterima ketika mendukung biaya yang lebih rendah, gunakan pengaturan ini.

**Bagaimana mendukung akurasi dan biaya yang lebih rendah**  
Dibutuhkan lebih banyak waktu mesin untuk memeriksa lebih banyak pasangan catatan untuk menentukan apakah mereka mungkin pasangan yang cocok. Jika Anda ingin mengurangi biaya tanpa mengurangi kualitas, berikut adalah beberapa langkah yang dapat Anda lakukan: 
+ Hilangkan catatan di sumber data yang tidak Anda pedulikan dalam pencocokan.
+ Hilangkan kolom dari sumber data yang Anda yakin tidak berguna untuk membuat keputusan kecocokan/ketidakcocokan. Cara yang baik untuk memutuskan ini adalah dengan menghilangkan kolom yang menurut Anda tidak mempengaruhi keputusan Anda sendiri tentang apakah satu set catatan adalah “sama.”

# Memperkirakan kualitas pertandingan menggunakan skor kepercayaan pertandingan
<a name="match-scoring"></a>

Skor kepercayaan kecocokan memberikan perkiraan kualitas kecocokan yang ditemukan oleh FindMatches untuk membedakan antara catatan yang cocok di mana model pembelajaran mesin sangat percaya diri, tidak pasti, atau tidak mungkin. Skor kepercayaan pertandingan akan antara 0 dan 1, di mana skor yang lebih tinggi berarti kesamaan yang lebih tinggi. Memeriksa skor kepercayaan kecocokan memungkinkan Anda membedakan antara kelompok kecocokan di mana sistem sangat percaya diri (yang mungkin Anda putuskan untuk digabungkan), kelompok yang sistemnya tidak pasti (yang mungkin Anda putuskan untuk ditinjau oleh manusia), dan cluster yang dianggap tidak mungkin (yang mungkin Anda putuskan untuk ditolak).

Anda mungkin ingin menyesuaikan data latihan Anda dalam situasi di mana Anda melihat skor kepercayaan pertandingan yang tinggi, tetapi tentukan tidak ada pertandingan, atau di mana Anda melihat skor rendah tetapi tentukan ada, pada kenyataannya, pertandingan.

Skor kepercayaan sangat berguna ketika ada kumpulan data industri berukuran besar, di mana tidak mungkin untuk meninjau setiap keputusan. FindMatches 

Skor kepercayaan pertandingan tersedia dalam AWS Glue versi 2.0 atau yang lebih baru.

## Menghasilkan skor kepercayaan pertandingan
<a name="specifying-match-scoring"></a>

Anda dapat menghasilkan skor kepercayaan kecocokan dengan menyetel nilai Boolean `computeMatchConfidenceScores` ke True saat memanggil `FindIncrementalMatches` API `FindMatches` atau.

AWS Gluemenambahkan yang baru `column match_confidence_score` ke output.

## Contoh penilaian pertandingan
<a name="match-scoring-examples"></a>

Misalnya, pertimbangkan catatan yang cocok berikut ini:

**Skor >= 0,9**  
Ringkasan catatan yang cocok:

```
  primary_id  |   match_id  | match_confidence_score

3281355037663    85899345947   0.9823658302132061
1546188247619    85899345947   0.9823658302132061
```

Rincian:

![\[Sebuah contoh tabel rute dengan gateway internet.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/match_score1.png)


Dari contoh ini, kita dapat melihat bahwa dua catatan sangat mirip dan berbagi`display_position`,`primary_name`, dan`street name`. 

**Skor >= 0.8 dan skor <0.9**  
Ringkasan catatan yang cocok:

```
  primary_id  |   match_id  | match_confidence_score

309237680432     85899345928   0.8309852373674638
3590592666790    85899345928   0.8309852373674638
343597390617     85899345928   0.8309852373674638
249108124906     85899345928   0.8309852373674638
463856477937     85899345928   0.8309852373674638
```

Rincian:

![\[Sebuah contoh tabel rute dengan gateway internet.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/match_score2.png)


Dari contoh ini, kita dapat melihat bahwa catatan ini berbagi hal yang sama`primary_name`, dan`country`.

**Skor >= 0.6 dan skor <0.7**  
Ringkasan catatan yang cocok:

```
  primary_id  |   match_id  | match_confidence_score

2164663519676    85899345930   0.6971099896480333
 317827595278    85899345930   0.6971099896480333
 472446424341    85899345930   0.6971099896480333
3118146262932    85899345930   0.6971099896480333
 214748380804    85899345930   0.6971099896480333
```

Rincian:

![\[Sebuah contoh tabel rute dengan gateway internet.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/match_score3.png)


Dari contoh ini, kita dapat melihat bahwa catatan ini hanya berbagi hal yang sama`primary_name`.

Untuk informasi lebih lanjut, lihat:
+ [Langkah 5: Tambahkan dan jalankan pekerjaan dengan transformasi pembelajaran mesin Anda](machine-learning-transform-tutorial.md#ml-transform-tutorial-add-job)
+ PySpark: [FindMatches kelas](aws-glue-api-crawler-pyspark-transforms-findmatches.md)
+ PySpark: [FindIncrementalMatches kelas](aws-glue-api-crawler-pyspark-transforms-findincrementalmatches.md)
+ Scala: [FindMatches kelas](glue-etl-scala-apis-glue-ml-findmatches.md)
+ Scala: [FindIncrementalMatches kelas](glue-etl-scala-apis-glue-ml-findincrementalmatches.md)

# Mengajarkan transformasi Find Matches
<a name="machine-learning-teaching"></a>

Setiap transformasi `FindMatches` harus diajari apa yang harus dianggap kecocokan dan apa yang seharusnya tidak dianggap sebagai kecocokan. Anda mengajarkan transformasi Anda dengan menambahkan label ke sebuah file dan mengunggah pilihan Anda ke AWS Glue. 

Anda dapat mengatur pelabelan ini pada konsol AWS Glue atau menggunakan operasi API machine learning AWS Glue.

**Berapa kali saya harus menambahkan label? Berapa banyak label yang saya butuhkan?**  
Jawaban atas pertanyaan-pertanyaan ini sebagian besar terserah Anda. Anda harus mengevaluasi apakah `FindMatches` memberikan tingkat akurasi yang Anda butuhkan dan apakah menurut Anda upaya melakukan pelabelan ekstra sepadan untuk Anda. Cara terbaik untuk memutuskan hal ini adalah dengan melihat metrik “Precision,” “Recall,” dan “Area di bawah kurva precision-recall” yang dapat Anda hasilkan saat Anda memilih **Estimasi kualitas** pada konsol AWS Glue. Setelah Anda memberikan label pada kumpulan tugas lainnya, jalankan kembali metrik ini dan verifikasi apakah telah ada peningkatan. Jika, setelah memberikan label pada beberapa kumpulan tugas tersebut, Anda tidak melihat peningkatan pada metrik yang Anda fokuskan, maka kualitas transformasi mungkin telah mencapai kualitas tertingginya.

**Mengapa label positif dan negatif sejati dibutuhkan?**  
Transformasi `FindMatches` membutuhkan contoh baik positif dan negatif untuk mempelajari apa yang menurut Anda adalah sebuah kecocokan. Jika Anda melabeli data pelatihan yang dihasilkan oleh `FindMatches` (sebagai contoh, menggunakan opsi **Saya tidak memiliki label**), maka `FindMatches` mencoba untuk menghasilkan satu set “label set id” untuk Anda. Dalam setiap tugas, Anda memberikan “label” yang sama untuk beberapa catatan dan “label” yang berbeda untuk catatan lain. Dengan kata lain, tugas secara umum adalah tidak semua sama atau semua berbeda (tapi tidak apa-apa jika tugas tertentu adalah semua “sama” atau semua “tidak sama”).

Jika Anda mengajari transformasi `FindMatches` Anda menggunakan opsi **Unggah label dari S3**, coba untuk menyertakan kedua contoh kecocokan dan ketidakcocokan. Hanya memiliki satu jenis saja bisa diterima. Label ini membantu Anda membangun transformasi `FindMatches` yang lebih akurat, tetapi Anda masih perlu memberikan label pada beberapa catatan yang Anda hasilkan dengan menggunakan opsi **Buat file pelabelan**.

**Bagaimana saya bisa menegakkan bahwa transformasi cocok persis seperti yang saya ajarkan?**  
Transformasi `FindMatches` belajar dari label yang Anda berikan, sehingga dapat menghasilkan pasangan catatan yang tidak mematuhi label yang disediakan. Untuk menegakkan bahwa `FindMatches` transformasi menghormati label Anda, pilih **EnforceProvidedLabels**di. **FindMatchesParameter**

**Teknik apa yang dapat Anda gunakan ketika transformasi MLmengidentifikasi item sebagai kecocokan yang bukan kecocokan sejati?**  
Anda dapat menggunakan teknik berikut:
+ Meningkatkan `precisionRecallTradeoff` ke nilai yang lebih tinggi. Hal ini pada akhirnya akan menghasilkan lebih sedikit kecocokan, tetapi juga harus memecah klaster besar Anda ketika mencapai nilai yang cukup tinggi. 
+ Ambil baris output yang sesuai dengan hasil yang salah dan lakukan format ulang padanya sebagai set pelabelan (menghapus kolom `match_id` dan menambahkan kolom `labeling_set_id` dan `label`). Jika perlu, pecah (bagi) menjadi beberapa set pelabelan untuk memastikan bahwa pemberi label dapat mengingat setiap label saat menetapkan label. Kemudian, beri label dengan benar pada set yang cocok dan unggah file label dan tambahkan ke label yang ada. Hal ini mungkin akan cukup mengajarkan transformasi Anda tentang apa yang dicari untuk memahami polanya. 
+ (Lanjutan) Akhirnya, lihat data tersebut untuk melihat apakah ada pola yang dapat Anda deteksi yang tidak diperhatikan oleh sistem tersebut. Lakukan pra-proses pada data tersebut dengan menggunakan fungsi AWS Glue standar untuk *menormalkan* data. Sorot apa yang ingin Anda pelajari dari algoritme dengan memisahkan data yang Anda ketahui sebagai hal penting yang berbeda ke dalam kolom tersendiri. Atau bangun kolom gabungan dari kolom yang data-nya Anda ketahui sebagai data terkait. 