

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Machine learning
<a name="machine_learning"></a>

Amazon Redshift machine learning (Amazon Redshift ML) adalah layanan berbasis cloud yang kuat yang memudahkan analis dan ilmuwan data dari semua tingkat keahlian untuk menggunakan teknologi pembelajaran mesin. Amazon Redshift ML menggunakan model untuk menghasilkan hasil. Anda dapat menggunakan model dengan cara berikut:
+ Anda dapat memberikan data yang ingin Anda latih model, dan metadata yang terkait dengan input data ke Amazon Redshift. Kemudian Amazon Redshift MLmembuat model di Amazon SageMaker AI yang menangkap pola dalam data input. Dengan menggunakan data Anda sendiri untuk model, Anda dapat menggunakan Amazon Redshift MLuntuk mengidentifikasi tren dalam data, seperti prediksi churn, nilai masa pakai pelanggan, atau prediksi pendapatan. Anda dapat menggunakan model ini untuk menghasilkan prediksi untuk data input baru tanpa menimbulkan biaya tambahan.
+ Anda dapat menggunakan salah satu Model Foundation (FM) yang disediakan oleh Amazon Bedrock, seperti Claude atau Amazon Titan. Menggunakan Amazon Bedrock, Anda dapat menggabungkan kekuatan model bahasa besar (LLMs) dengan data analitik Anda di Amazon Redshift dalam beberapa langkah. Dengan menggunakan Large Language Model (LLM) eksternal, Anda dapat menggunakan Amazon Redshift untuk melakukan Natural Language Processing (NLP) pada data Anda. Anda dapat menggunakan NLP untuk aplikasi seperti pembuatan teks, analisis sentimen, atau terjemahan. Untuk informasi tentang menggunakan Amazon Bedrock dengan Amazon [Integrasi Amazon Redshift MLL dengan Amazon Bedrock](machine-learning-br.md) Redshift, lihat.

**catatan**  
**Memilih untuk tidak menggunakan data Anda untuk peningkatan layanan**  
Jika Anda menggunakan model Amazon Bedrock, kami mendorong Anda untuk membaca AWS kebijakan tentang cara layanan Amazon Bedrock menangani data Anda. Anda harus menentukan apakah Anda perlu menggunakan kebijakan opt-out untuk mencegah layanan menggunakan data Anda untuk peningkatan model atau layanan, jika Amazon Bedrock menerapkan fungsionalitas tersebut di masa mendatang. Untuk memastikan bahwa layanan tidak menggunakan data Anda untuk tujuan tersebut, gunakan kebijakan AWS opt-out umum.   
Untuk informasi selengkapnya, lihat berikut ini:  
[Kebijakan opt-out layanan AI](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out.html)
[Amazon Bedrock FAQs](https://aws.amazon.com/bedrock/faqs/)

**catatan**  
 LLMs dapat menghasilkan informasi yang tidak akurat atau tidak lengkap. Kami merekomendasikan untuk memverifikasi informasi yang LLMs dihasilkan untuk memastikan bahwa itu akurat dan lengkap.

**Bagaimana Amazon Redshift ML bekerja dengan Amazon AI SageMaker **

Amazon Redshift bekerja dengan Amazon SageMaker AI Autopilot untuk secara otomatis mendapatkan model terbaik dan membuat fungsi prediksi tersedia di Amazon Redshift.

Diagram berikut mengilustrasikan cara kerja Amazon Redshift ML.

![\[Alur kerja untuk Amazon Redshift MLyang terintegrasi dengan SageMaker Amazon AI Autopilot.\]](http://docs.aws.amazon.com/id_id/redshift/latest/dg/images/machine_learning_overview.png)


Alur kerja umum adalah sebagai berikut:

1. Amazon Redshift mengekspor data pelatihan ke Amazon S3. 

1. Amazon SageMaker AI Autopilot memproses data pelatihan. *Preprocessing* melakukan fungsi-fungsi penting, seperti memasukkan nilai yang hilang. Ini mengakui bahwa kolom tertentu bersifat kategoris (seperti kode pos), memformatnya dengan benar untuk pelatihan, dan melakukan banyak tugas lainnya. Memilih preprosesor terbaik untuk diterapkan pada kumpulan data pelatihan adalah masalah tersendiri, dan Amazon SageMaker AI Autopilot mengotomatiskan solusinya.

1. Amazon SageMaker AI Autopilot menemukan algoritma dan algoritma hyperparameters yang memberikan model dengan prediksi paling akurat.

1. Amazon Redshift mendaftarkan fungsi prediksi sebagai fungsi SQL di cluster Amazon Redshift Anda.

1. Saat Anda menjalankan pernyataan CREATE MODEL, Amazon Redshift menggunakan Amazon SageMaker AI untuk pelatihan. Oleh karena itu, ada biaya terkait untuk melatih model Anda. Ini adalah item baris terpisah untuk Amazon SageMaker AI di AWS tagihan Anda. Anda juga membayar penyimpanan yang digunakan di Amazon S3 untuk menyimpan data pelatihan Anda. Inferensi menggunakan model yang dibuat dengan CREATE MODEL yang dapat Anda kompilasi dan jalankan di klaster Redshift Anda tidak dikenakan biaya. Tidak ada biaya Amazon Redshift tambahan untuk menggunakan Amazon Redshift Ml.

**Topics**
+ [Ikhtisar pembelajaran mesin](machine_learning_overview.md)
+ [Pembelajaran mesin untuk pemula dan ahli](novice_expert.md)
+ [Biaya untuk menggunakan Amazon Redshift ML](cost.md)
+ [Memulai dengan Amazon Redshift Ml](getting-started-machine-learning.md)
+ [Tutorial untuk Amazon Redshift ML](tutorials_for_amazon_redshift_ml.md)
+ [Integrasi Amazon Redshift MLL dengan Amazon Bedrock](machine-learning-br.md)

# Ikhtisar pembelajaran mesin
<a name="machine_learning_overview"></a>

Dengan Amazon Redshift, Anda dapat memanfaatkan kemampuan pembelajaran mesin untuk mendapatkan wawasan berharga dari data Anda. Ikhtisar Machine Learning (ML) ini menunjukkan kepada Anda cara mengeksplorasi, memvisualisasikan, dan menyiapkan data Anda untuk pelatihan dan penerapan model ML. Bagian berikut akan memandu Anda melalui proses memanfaatkan Amazon Redshift MLuntuk membuka potensi data Anda melalui pembelajaran mesin.

Dengan menggunakan Amazon Redshift ML, Anda dapat melatih model pembelajaran mesin menggunakan pernyataan SQL dan memanggilnya dalam kueri SQL untuk prediksi.

Untuk membantu Anda mempelajari cara menggunakan Amazon Redshift ML, Anda dapat menonton video berikut. 

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/pJF2kYGtO4A/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/pJF2kYGtO4A)


Untuk informasi tentang prasyarat untuk menyiapkan klaster Redshift atau grup kerja Tanpa Server, izin, dan kepemilikan untuk menggunakan Amazon Redshift MS, baca bagian berikut. Bagian-bagian ini juga menjelaskan cara kerja pelatihan dan prediksi sederhana di Amazon Redshift Ml.

## Bagaimana pembelajaran mesin dapat memecahkan masalah
<a name="solve_problem"></a>

Model pembelajaran mesin menghasilkan prediksi dengan menemukan pola dalam data pelatihan Anda dan kemudian menerapkan pola-pola ini ke data baru. Dalam pembelajaran mesin, Anda melatih model-model ini dengan mempelajari pola yang paling menjelaskan data Anda. Kemudian Anda menggunakan model untuk membuat prediksi (juga disebut inferensi) pada data baru. Pembelajaran mesin biasanya merupakan proses berulang di mana Anda dapat terus meningkatkan akurasi prediksi dengan mengubah parameter dan meningkatkan data pelatihan Anda. Jika data berubah, pelatihan ulang model baru dengan dataset baru terjadi. 

Untuk mengatasi berbagai tujuan bisnis, ada pendekatan pembelajaran mesin dasar yang berbeda.

### Pembelajaran yang diawasi di Amazon Redshift ML
<a name="supervised_learning"></a>

Amazon Redshift mendukung pembelajaran yang diawasi, yang merupakan pendekatan paling umum untuk analisis perusahaan tingkat lanjut. Pembelajaran yang diawasi adalah pendekatan pembelajaran mesin yang disukai ketika Anda memiliki kumpulan data yang mapan dan pemahaman tentang bagaimana data input spesifik memprediksi berbagai hasil bisnis. Hasil ini kadang-kadang disebut label. Secara khusus, dataset Anda adalah tabel dengan atribut yang terdiri dari fitur (input) dan target (output). Misalnya, Anda memiliki tabel yang memberikan usia dan kode pos untuk pelanggan masa lalu dan sekarang. Misalkan Anda juga memiliki bidang “aktif” yang berlaku untuk pelanggan saat ini dan palsu untuk pelanggan yang telah menangguhkan keanggotaan mereka. Tujuan dari pembelajaran mesin yang diawasi adalah untuk menemukan pola usia dan kode pos yang mengarah ke churn pelanggan, sebagaimana diwakili oleh pelanggan yang targetnya “Salah.” Anda dapat menggunakan model ini untuk memprediksi pelanggan yang cenderung melakukan churn, seperti menangguhkan keanggotaan mereka, dan berpotensi menawarkan insentif retensi.

Amazon Redshift mendukung pembelajaran terawasi yang mencakup regresi, klasifikasi biner, dan klasifikasi multikelas. Regresi mengacu pada masalah memprediksi nilai kontinu, seperti total pengeluaran pelanggan. Klasifikasi biner mengacu pada masalah memprediksi salah satu dari dua hasil, seperti memprediksi apakah pelanggan melakukan churns atau tidak. Klasifikasi multiclass mengacu pada masalah memprediksi salah satu dari banyak hasil, seperti memprediksi item yang mungkin diminati pelanggan. Analis data dan ilmuwan data dapat menggunakannya untuk melakukan pembelajaran yang diawasi untuk mengatasi masalah mulai dari peramalan, personalisasi, atau prediksi churn pelanggan. Anda juga dapat menggunakan pembelajaran yang diawasi dalam masalah seperti prediksi penjualan mana yang akan ditutup, prediksi pendapatan, deteksi penipuan, dan prediksi nilai seumur hidup pelanggan. 

### Pembelajaran tanpa pengawasan di Amazon Redshift ML
<a name="unsupervised_learning"></a>

Pembelajaran tanpa pengawasan menggunakan algoritma pembelajaran mesin untuk menganalisis dan mengelompokkan data pelatihan yang tidak berlabel. Algoritma menemukan pola atau pengelompokan tersembunyi. Tujuannya adalah untuk memodelkan struktur atau distribusi yang mendasari dalam data untuk mempelajari lebih lanjut tentang data.

Amazon Redshift mendukung algoritma pengelompokan K-Means untuk memecahkan masalah pembelajaran tanpa pengawasan. Algoritma ini memecahkan masalah pengelompokan di mana Anda ingin menemukan pengelompokan dalam data. Algoritma K-Means mencoba untuk menemukan pengelompokan diskrit dalam data. Data yang tidak diklasifikasikan dikelompokkan dan dipartisi berdasarkan persamaan dan perbedaannya. Dengan pengelompokan, algoritma K-Means secara iteratif menentukan centroid terbaik dan menetapkan setiap anggota ke centroid terdekat. Anggota terdekat dengan centroid yang sama termasuk dalam kelompok yang sama. Anggota kelompok semirip mungkin dengan anggota lain dalam kelompok yang sama, dan berbeda mungkin dari anggota kelompok lain. Misalnya, algoritma pengelompokan K-Means dapat digunakan untuk mengklasifikasikan kota yang terkena dampak pandemi atau mengklasifikasikan kota berdasarkan popularitas produk konsumen.

Saat menggunakan algoritma K-Means, Anda menentukan input `k` yang menentukan jumlah cluster yang akan ditemukan dalam data. Output dari algoritma ini adalah satu set k centroid. Setiap titik data milik salah satu kluster k yang paling dekat dengannya. Setiap cluster dijelaskan oleh centroid-nya. Centroid dapat dianggap sebagai rata-rata multi-dimensi cluster. Algoritma K-Means membandingkan jarak untuk melihat betapa berbedanya cluster satu sama lain. Jarak yang lebih besar umumnya menunjukkan perbedaan yang lebih besar antara cluster.

Preprocessing data penting untuk K-Means, karena memastikan bahwa fitur model tetap pada skala yang sama dan menghasilkan hasil yang andal. Amazon Redshift mendukung beberapa preprosesor K-Means untuk pernyataan CREATE MODEL, seperti StandardScaler,, dan. MinMax NumericPassthrough Jika Anda tidak ingin menerapkan pra-pemrosesan apa pun untuk K-mean, pilih NumericPassthrough secara eksplisit sebagai transformator. Untuk informasi selengkapnya tentang parameter K-Means, lihat[BUAT MODEL dengan parameter K-MEANS](r_create_model_use_cases.md#r_k-means-create-model-parameters).

Untuk membantu Anda mempelajari cara melakukan pelatihan tanpa pengawasan dengan pengelompokan K-Means, Anda dapat menonton video berikut. 

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/TFKgl5d0U_0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/TFKgl5d0U_0)


## Syarat dan konsep untuk Amazon Redshift ML
<a name="terminology"></a>

Istilah-istilah berikut digunakan untuk menggambarkan beberapa konsep Amazon Redshift MS:
+ *Pembelajaran mesin* di Amazon Redshift melatih model dengan satu perintah SQL. Amazon Redshift ML dan Amazon SageMaker AI mengelola semua konversi data, izin, penggunaan sumber daya, dan penemuan model yang tepat. 
+ *Pelatihan* adalah fase ketika Amazon Redshift membuat model pembelajaran mesin dengan menjalankan subset data tertentu ke dalam model. Amazon Redshift secara otomatis meluncurkan pekerjaan pelatihan di Amazon SageMaker AI dan menghasilkan model. 
+ *Prediksi* (juga disebut *inferensi*) adalah penggunaan model dalam kueri Amazon Redshift SQL untuk memprediksi hasil. Pada waktu inferensi, Amazon Redshift menggunakan fungsi prediksi berbasis model sebagai bagian dari kueri yang lebih besar untuk menghasilkan prediksi. Prediksi dihitung secara lokal, di cluster Redshift, sehingga memberikan throughput tinggi, latensi rendah, dan biaya tambahan nol.
+ Dengan *bring your own model (BYOM)*, Anda dapat menggunakan model yang dilatih di luar Amazon Redshift dengan Amazon AI untuk inferensi dalam database secara lokal di SageMaker Amazon Redshift. Amazon Redshift MLmendukung penggunaan BYOM dalam inferensi lokal.
+ *Inferensi lokal* digunakan saat model dilatih sebelumnya di Amazon SageMaker AI, dikompilasi oleh Amazon SageMaker AI Neo, dan dilokalkan di Amazon Redshift Ml. Untuk mengimpor model yang didukung untuk inferensi lokal ke Amazon Redshift, gunakan perintah CREATE MODEL. Amazon Redshift mengimpor model AI yang telah dilatih sebelumnya dengan memanggil Amazon SageMaker AI Neo. SageMaker Anda mengkompilasi model di sana dan mengimpor model yang dikompilasi ke Amazon Redshift. Gunakan inferensi lokal untuk kecepatan yang lebih cepat dan biaya yang lebih rendah.
+ *Inferensi jarak jauh* digunakan saat Amazon Redshift memanggil titik akhir model yang digunakan di AI. SageMaker Inferensi jarak jauh memberikan fleksibilitas untuk menggunakan semua jenis model khusus dan model pembelajaran mendalam, seperti TensorFlow model yang Anda buat dan gunakan di Amazon AI. SageMaker 

Yang juga penting adalah sebagai berikut:
+ *Amazon SageMaker AI* adalah layanan pembelajaran mesin yang dikelola sepenuhnya. Dengan Amazon SageMaker AI, ilmuwan dan pengembang data dapat dengan mudah membangun, melatih, dan langsung menerapkan model ke dalam lingkungan host yang siap produksi. Untuk informasi tentang Amazon SageMaker AI, lihat [Apa itu Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) di *Panduan Pengembang Amazon SageMaker AI*.
+ *Amazon SageMaker AI Autopilot* adalah rangkaian fitur yang secara otomatis melatih dan menyetel model pembelajaran mesin terbaik untuk klasifikasi atau regresi, berdasarkan data Anda. Anda mempertahankan kontrol dan visibilitas penuh. Amazon SageMaker AI Autopilot mendukung data input dalam format tabel. Amazon SageMaker AI Autopilot menyediakan pembersihan dan pra-pemrosesan data otomatis, pemilihan algoritme otomatis untuk regresi linier, klasifikasi biner, dan klasifikasi multiclass. Ini juga mendukung optimasi hyperparameter otomatis (HPO), pelatihan terdistribusi, instance otomatis, dan pemilihan ukuran cluster. *Untuk informasi tentang Amazon SageMaker AI Autopilot, lihat [Mengotomatiskan pengembangan model dengan Amazon SageMaker AI Autopilot di Panduan Pengembang Amazon AI](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html). SageMaker *
+ *Amazon Bedrock* adalah layanan yang dikelola sepenuhnya yang menawarkan pilihan model fondasi berkinerja tinggi (FMs) dari perusahaan AI terkemuka seperti AI21 Labs, Anthropic, Cohere, Meta, Mistral AI, Stability AI, dan Amazon melalui satu API, bersama dengan serangkaian luas kemampuan yang diperlukan untuk membangun aplikasi AI generatif.

# Pembelajaran mesin untuk pemula dan ahli
<a name="novice_expert"></a>

Dengan Amazon Redshift, Anda dapat memanfaatkan kemampuan Machine Learning (ML/Machine Learning) untuk mendapatkan wawasan dari data Anda, baik Anda pemula maupun ahli di bidang ML. Machine Learning adalah fitur Amazon Redshift yang memungkinkan Anda membuat, melatih, dan menerapkan model ML menggunakan perintah SQL, tanpa memerlukan keahlian MS yang luas atau rekayasa data yang kompleks.

Bagian berikut memandu Anda melalui proses pemanfaatan Machine Learning, memberdayakan Anda untuk membuka potensi penuh data Anda dengan Amazon Redshift.

Amazon Redshift MLmemungkinkan Anda untuk melatih model dengan satu perintah SQL CREATE MODEL tunggal. Perintah CREATE MODEL membuat model yang digunakan Amazon Redshift untuk menghasilkan prediksi berbasis model dengan konstruksi SQL yang sudah dikenal.

Amazon Redshift ML sangat berguna ketika Anda tidak memiliki keahlian dalam pembelajaran mesin, alat, bahasa, algoritme, dan. APIs Dengan Amazon Redshift ML, Anda tidak perlu melakukan pengangkatan berat tanpa diferensiasi yang diperlukan untuk berintegrasi dengan layanan pembelajaran mesin eksternal. Amazon Redshift menghemat waktu Anda untuk memformat dan memindahkan data, mengelola kontrol izin, atau membuat integrasi, alur kerja, dan skrip khusus. Anda dapat dengan mudah menggunakan algoritme pembelajaran mesin populer dan menyederhanakan kebutuhan pelatihan yang memerlukan iterasi sering dari pelatihan hingga prediksi. Amazon Redshift secara otomatis menemukan algoritme terbaik dan menyetel model terbaik untuk masalah Anda. Anda dapat membuat prediksi dari dalam cluster Amazon Redshift tanpa perlu memindahkan data dari Amazon Redshift atau berinteraksi dengan dan membayar layanan lain.

Amazon Redshift ML mendukung analis data dan ilmuwan data dalam menggunakan pembelajaran mesin. Ini juga memungkinkan para ahli pembelajaran mesin untuk menggunakan pengetahuan mereka untuk memandu pernyataan CREATE MODEL untuk hanya menggunakan aspek yang mereka tentukan. Dengan demikian, Anda dapat mempercepat waktu yang dibutuhkan CREATE MODEL untuk menemukan kandidat terbaik, meningkatkan akurasi model, atau keduanya. 

Pernyataan CREATE MODEL menawarkan fleksibilitas dalam bagaimana Anda dapat menentukan parameter untuk pekerjaan pelatihan. Dengan menggunakan fleksibilitas ini, baik pemula atau ahli pembelajaran mesin dapat memilih preprosesor, algoritma, jenis masalah, dan hiperparameter pilihan mereka. Misalnya, pengguna yang tertarik dengan churn pelanggan mungkin menentukan untuk pernyataan CREATE MODEL bahwa jenis masalahnya adalah klasifikasi biner, yang berfungsi dengan baik untuk churn pelanggan. Kemudian pernyataan CREATE MODEL mempersempit pencariannya untuk model terbaik menjadi model klasifikasi biner. Bahkan dengan pilihan pengguna dari jenis masalah, masih ada banyak opsi yang dapat digunakan oleh pernyataan CREATE MODEL. Misalnya, CREATE MODEL menemukan dan menerapkan transformasi preprocessing terbaik dan menemukan pengaturan hyperparameter terbaik.

Amazon Redshift MLmempermudah pelatihan dengan secara otomatis menemukan model terbaik menggunakan Amazon SageMaker AI Autopilot. Di balik layar, Amazon SageMaker AI Autopilot secara otomatis melatih dan menyetel model pembelajaran mesin terbaik berdasarkan data yang Anda berikan. Amazon SageMaker AI Neo kemudian mengkompilasi model pelatihan dan membuatnya tersedia untuk prediksi di cluster Redshift Anda. Saat Anda menjalankan kueri inferensi pembelajaran mesin menggunakan model terlatih, kueri dapat menggunakan kemampuan pemrosesan paralel besar-besaran Amazon Redshift. Pada saat yang sama, kueri dapat menggunakan prediksi berbasis pembelajaran mesin. 
+ Sebagai *pemula pembelajaran mesin*, dengan pengetahuan umum tentang berbagai aspek pembelajaran mesin seperti preprosesor, algoritma, dan hiperparameter, gunakan pernyataan CREATE MODEL hanya untuk aspek yang Anda tentukan. Kemudian Anda dapat mempersingkat waktu yang dibutuhkan CREATE MODEL untuk menemukan kandidat terbaik atau meningkatkan akurasi model. Selain itu, Anda dapat meningkatkan nilai bisnis prediksi dengan memperkenalkan pengetahuan domain tambahan seperti jenis masalah atau tujuan. Misalnya, dalam skenario churn pelanggan, jika hasil “pelanggan tidak aktif” jarang terjadi, maka tujuan F1 sering lebih disukai daripada tujuan Akurasi. Karena model Akurasi tinggi mungkin memprediksi “pelanggan aktif” sepanjang waktu, ini menghasilkan akurasi tinggi tetapi nilai bisnis kecil. Untuk informasi tentang tujuan F1, lihat [MLJobTujuan Otomatis](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_AutoMLJobObjective.html) di *Referensi API Amazon SageMaker AI*.

  Untuk informasi selengkapnya tentang opsi dasar untuk pernyataan CREATE MODEL, lihat[Model Buat Sederhana](r_create_model_use_cases.md#r_simple_create_model).
+ Sebagai *praktisi tingkat lanjut pembelajaran mesin*, Anda dapat menentukan jenis masalah dan preprosesor untuk fitur tertentu (tetapi tidak semua). Kemudian CREATE MODEL mengikuti saran Anda pada aspek yang ditentukan. Pada saat yang sama, CREATE MODEL masih menemukan preprocessors terbaik untuk fitur yang tersisa dan hyperparameter terbaik. Untuk informasi selengkapnya tentang bagaimana Anda dapat membatasi satu atau lebih aspek dari jalur pelatihan, lihat[BUAT MODEL dengan panduan pengguna](r_create_model_use_cases.md#r_user_guidance_create_model).
+ Sebagai *ahli pembelajaran mesin*, Anda dapat mengendalikan sepenuhnya pelatihan dan penyetelan hyperparameter. Kemudian pernyataan CREATE MODEL tidak mencoba menemukan preprocessors, algoritma, dan hyperparameters yang optimal karena Anda membuat semua pilihan. Untuk informasi selengkapnya tentang cara menggunakan CREATE MODEL dengan AUTO OFF, lihat[BUAT XGBoost model dengan AUTO OFF](r_create_model_use_cases.md#r_auto_off_create_model).
+ Sebagai *insinyur data*, Anda dapat membawa XGBoost model yang telah dilatih sebelumnya di Amazon SageMaker AI dan mengimpornya ke Amazon Redshift untuk inferensi lokal. Dengan bring your own model (BYOM), Anda dapat menggunakan model yang dilatih di luar Amazon Redshift dengan Amazon AI untuk inferensi dalam database secara lokal di SageMaker Amazon Redshift. Amazon Redshift MLmendukung penggunaan BYOM baik dalam inferensi lokal maupun jarak jauh.

  Untuk informasi selengkapnya tentang cara menggunakan pernyataan CREATE MODEL untuk inferensi lokal atau jarak jauh, lihat[Bawa model Anda sendiri (BYOM) - inferensi lokal](r_create_model_use_cases.md#r_byom_create_model). 

Sebagai pengguna Amazon Redshift MS, Anda dapat memilih salah satu opsi berikut untuk melatih dan menerapkan model Anda:
+ Jenis masalah, lihat[BUAT MODEL dengan panduan pengguna](r_create_model_use_cases.md#r_user_guidance_create_model).
+ Tujuan, lihat [BUAT MODEL dengan panduan pengguna](r_create_model_use_cases.md#r_user_guidance_create_model) atau[BUAT XGBoost model dengan AUTO OFF](r_create_model_use_cases.md#r_auto_off_create_model).
+ Jenis model, lihat[BUAT XGBoost model dengan AUTO OFF](r_create_model_use_cases.md#r_auto_off_create_model).
+ Preprosesor, lihat[BUAT MODEL dengan panduan pengguna](r_create_model_use_cases.md#r_user_guidance_create_model).
+ Hyperparameter, lihat[BUAT XGBoost model dengan AUTO OFF](r_create_model_use_cases.md#r_auto_off_create_model).
+ Bawa model Anda sendiri (BYOM), lihat. [Bawa model Anda sendiri (BYOM) - inferensi lokal](r_create_model_use_cases.md#r_byom_create_model)

# Biaya untuk menggunakan Amazon Redshift ML
<a name="cost"></a>

Dengan Amazon Redshift, Anda dapat memanfaatkan kemampuan pembelajaran mesin untuk mendapatkan wawasan dari data Anda tanpa perlu keahlian rekayasa data atau pembelajaran mesin yang ekstensif. Bagian berikut menjelaskan biaya yang terkait dengan penggunaan Amazon Redshift ML, membantu Anda merencanakan dan mengoptimalkan pengeluaran sambil memanfaatkan integrasi pembelajaran mesin yang kuat ini.

## Biaya untuk menggunakan Amazon Redshift MLdengan AI SageMaker
<a name="cost_sm"></a>

Amazon Redshift MLfor SageMaker AI menggunakan sumber daya cluster yang ada untuk prediksi sehingga Anda dapat menghindari biaya tambahan Amazon Redshift. Tidak ada biaya Amazon Redshift tambahan untuk membuat atau menggunakan model. Prediksi terjadi secara lokal di cluster Redshift Anda, jadi Anda tidak perlu membayar ekstra kecuali Anda perlu mengubah ukuran cluster Anda. Amazon Redshift MLmenggunakan Amazon SageMaker AI untuk melatih model Anda, yang memang memiliki biaya terkait tambahan.

Tidak ada biaya tambahan untuk fungsi prediksi yang berjalan di dalam klaster Amazon Redshift Anda. Pernyataan CREATE MODEL menggunakan Amazon SageMaker AI dan menimbulkan biaya tambahan. Biaya meningkat dengan jumlah sel dalam data pelatihan Anda. Jumlah sel adalah produk dari jumlah catatan (dalam kueri pelatihan atau waktu tabel) dikalikan jumlah kolom. Misalnya, ketika kueri SELECT dari pernyataan CREATE MODEL membuat 10.000 catatan dan 5 kolom, maka jumlah sel yang dibuatnya adalah 50.000.

Dalam beberapa kasus, data pelatihan yang dihasilkan oleh kueri SELECT CREATE MODEL melebihi batas MAX\$1CELLS yang Anda berikan (atau default 1 juta jika Anda tidak memberikan batas). Dalam kasus ini, CREATE MODEL secara acak memilih kira-kira MAX\$1CELLS (yaitu catatan “jumlah kolom” dari kumpulan data pelatihan). CREATE MODEL kemudian melakukan pelatihan menggunakan tupel yang dipilih secara acak ini. Pengambilan sampel acak memastikan bahwa kumpulan data pelatihan yang dikurangi tidak memiliki bias apa pun. Dengan demikian, dengan mengatur MAX\$1CELLS, Anda dapat mengontrol biaya pelatihan Anda.

Saat menggunakan pernyataan CREATE MODEL, Anda dapat menggunakan opsi MAX\$1CELLS dan MAX\$1RUNTIME untuk mengontrol biaya, waktu, dan akurasi model potensial. 

MAX\$1RUNTIME menentukan jumlah waktu maksimum yang dapat diambil pelatihan dalam SageMaker AI saat opsi AUTO ON atau OFF digunakan. Pekerjaan pelatihan sering selesai lebih cepat dari MAX\$1RUNTIME, tergantung pada ukuran kumpulan data. Setelah model dilatih, Amazon Redshift melakukan pekerjaan tambahan di latar belakang untuk mengkompilasi dan menginstal model Anda di cluster Anda. Dengan demikian, CREATE MODEL dapat memakan waktu lebih lama dari MAX\$1RUNTIME untuk menyelesaikannya. Namun, MAX\$1RUNTIME membatasi jumlah perhitungan dan waktu yang digunakan dalam SageMaker AI untuk melatih model Anda. Anda dapat memeriksa status model Anda kapan saja menggunakan SHOW MODEL.

Saat Anda menjalankan CREATE MODEL dengan AUTO ON, Amazon Redshift MLmenggunakan SageMaker AI Autopilot untuk secara otomatis dan cerdas menjelajahi berbagai model (atau kandidat) untuk menemukan yang terbaik. MAX\$1RUNTIME membatasi jumlah waktu dan perhitungan yang dihabiskan. Jika MAX\$1RUNTIME disetel terlalu rendah, mungkin tidak ada cukup waktu untuk menjelajahi bahkan satu kandidat. Jika Anda melihat kesalahan “Kandidat Autopilot tidak memiliki model,” jalankan kembali CREATE MODEL dengan nilai MAX\$1RUNTIME yang lebih besar. Untuk informasi selengkapnya tentang parameter ini, lihat [MaxAutoMLJobRuntimeInSeconds](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobCompletionCriteria.html)di *Referensi Amazon SageMaker AI API*.

Saat Anda menjalankan CREATE MODEL dengan AUTO OFF, MAX\$1RUNTIME sesuai dengan batas berapa lama pekerjaan pelatihan dijalankan di AI. SageMaker Pekerjaan pelatihan sering selesai lebih cepat, tergantung pada ukuran kumpulan data dan parameter lain yang digunakan, seperti num\$1rounds di MODEL\$1TYPE XGBOOST.

Anda juga dapat mengontrol biaya atau mengurangi waktu pelatihan dengan menentukan nilai MAX\$1CELLS yang lebih kecil saat Anda menjalankan CREATE MODEL. *Sel* adalah entri dalam database. Setiap baris sesuai dengan sel sebanyak kolom, yang dapat memiliki lebar tetap atau bervariasi. MAX\$1CELLS membatasi jumlah sel, dan dengan demikian jumlah contoh pelatihan yang digunakan untuk melatih model Anda. Secara default, MAX\$1CELLS diatur ke 1 juta sel. Mengurangi MAX\$1CELLS mengurangi jumlah baris dari hasil kueri SELECT di CREATE MODEL yang diekspor Amazon Redshift dan dikirim SageMaker ke AI untuk melatih model. Mengurangi MAX\$1CELLS dengan demikian mengurangi ukuran kumpulan data yang digunakan untuk melatih model baik dengan AUTO ON dan AUTO OFF. Pendekatan ini membantu mengurangi biaya dan waktu untuk melatih model. Untuk melihat informasi tentang pelatihan dan waktu penagihan dari pekerjaan pelatihan tertentu, pilih **Pekerjaan pelatihan** di Amazon SageMaker AI.

Meningkatkan MAX\$1RUNTIME dan MAX\$1CELLS sering meningkatkan kualitas model dengan memungkinkan SageMaker AI untuk mengeksplorasi lebih banyak kandidat. Dengan cara ini, SageMaker AI dapat mengambil lebih banyak waktu untuk melatih setiap kandidat dan menggunakan lebih banyak data untuk melatih model yang lebih baik. Jika Anda ingin iterasi atau eksplorasi kumpulan data yang lebih cepat, gunakan MAX\$1RUNTIME dan MAX\$1CELLS yang lebih rendah. Jika Anda ingin meningkatkan akurasi model, gunakan MAX\$1RUNTIME dan MAX\$1CELLS yang lebih tinggi.

Untuk informasi selengkapnya tentang biaya yang terkait dengan berbagai nomor sel dan detail uji coba gratis, lihat [harga Amazon Redshift](https://aws.amazon.com/redshift/pricing).

## Biaya untuk menggunakan Amazon Redshift MLdengan Amazon Bedrock
<a name="cost_sm"></a>

Menggunakan Amazon Redshift MLdengan Amazon Bedrock menimbulkan biaya tambahan. Untuk informasi selengkapnya, lihat [Harga Amazon Bedrock](https://aws.amazon.com/bedrock/pricing/).

# Memulai dengan Amazon Redshift Ml
<a name="getting-started-machine-learning"></a>

Amazon Redshift ML memudahkan pengguna SQL untuk membuat, melatih, dan menerapkan model pembelajaran mesin menggunakan perintah SQL yang sudah dikenal. Dengan Amazon Redshift ML, Anda dapat menggunakan data di klaster Redshift untuk melatih model dengan Amazon AI. SageMaker Kemudian, model dilokalkan dan prediksi dapat dibuat dalam database Amazon Redshift. Amazon Redshift ML saat ini mendukung algoritme pembelajaran mesin: XGBoost (AUTO ON dan OFF) dan perceptron multilayer (AUTO ON), K-Means (AUTO OFF), dan Linear Learner.

**Topics**
+ [Cluster dan konfigurasikan pengaturan untuk administrasi Amazon Redshift ML.](#admin-setup)
+ [Menggunakan penjelasan model dengan Amazon Redshift ML.](#clarify)
+ [Metrik probabilitas Amazon Redshift MS](#probability_metrics)

## Cluster dan konfigurasikan pengaturan untuk administrasi Amazon Redshift ML.
<a name="admin-setup"></a>

Sebelum Anda bekerja dengan Amazon Redshift ML, selesaikan penyiapan klaster dan konfigurasikan izin untuk menggunakan Amazon Redshift ML.

### Penyiapan klaster untuk menggunakan Amazon Redshift ML
<a name="cluster-setup"></a>

Sebelum Anda bekerja dengan Amazon Redshift ML, lengkapi prasyarat berikut.

Sebagai administrator Amazon Redshift, lakukan penyiapan satu kali berikut untuk menggunakan kluster yang disediakan Amazon Redshift. Untuk menggunakan Amazon Redshift MLdengan Amazon Redshift Serverless, lihat [Memulai](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html) Amazon Redshift Serverless.

Untuk melakukan penyiapan cluster satu kali untuk Amazon Redshift ML. 

1. Buat cluster Redshift menggunakan Konsol Manajemen AWS atau AWS Command Line Interface ()AWS CLI. Pastikan untuk melampirkan kebijakan AWS Identity and Access Management (IAM) saat membuat cluster. Untuk informasi selengkapnya tentang izin yang diperlukan untuk menggunakan Amazon Redshift MLdengan SageMaker Amazon AI, [lihat Izin yang diperlukan untuk menggunakan pembelajaran mesin Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#iam-permission-ml?) (ML) 

1. Buat peran IAM yang diperlukan untuk menggunakan Amazon Redshift MLdengan salah satu cara berikut:
   + Untuk menggunakan SageMaker AI dengan Amazon Redshift ML, buat peran dan kebijakan IAM. `AmazonS3FullAccess` `AmazonSageMakerFullAccess` Jika Anda berencana juga membuat model Forecast, lampirkan `AmazonForecastFullAccess` kebijakan tersebut ke peran Anda juga.
   + Untuk menggunakan Amazon Bedrock dengan Amazon Redshift ML, buat peran `AmazonS3FullAccess` dan kebijakan IAM. `AmazonBedrockFullAccess`
   + Sebaiknya Anda membuat peran IAM melalui konsol Amazon Redshift yang memiliki `AmazonRedshiftAllCommandsFullAccess` kebijakan dengan izin untuk menjalankan perintah SQL, seperti CREATE MODEL. Amazon Redshift menggunakan mekanisme berbasis API yang mulus untuk membuat peran IAM secara terprogram atas nama Anda. Akun AWS Amazon Redshift secara otomatis melampirkan kebijakan AWS terkelola yang ada ke peran IAM. Pendekatan ini berarti Anda dapat tetap berada di dalam konsol Amazon Redshift dan tidak perlu beralih ke konsol IAM untuk pembuatan peran. Untuk informasi selengkapnya, lihat [Membuat peran IAM sebagai default untuk Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/default-iam-role.html).

     Saat peran IAM dibuat sebagai default untuk klaster Anda, sertakan `redshift` sebagai bagian dari nama sumber daya atau gunakan tag khusus RedShift untuk menandai sumber daya tersebut.

     Untuk menggunakan model foundation Amazon Bedrock, tambahkan bagian berikut:

     ```
     // Required section if you use Bedrock models.
     {
        "Effect": "Allow",
        "Action": "bedrock:InvokeModel",
        "Resource": [
            "arn:aws:bedrock:<region>::foundation-model/*"
        ]
     }
     ```
   + Jika Anda ingin membuat peran IAM dengan kebijakan yang lebih ketat, Anda dapat menggunakan kebijakan berikut ini. Anda juga dapat mengubah kebijakan ini untuk memenuhi kebutuhan Anda.

     Bucket Amazon S3 `redshift-downloads/redshift-ml/` adalah lokasi di mana data sampel yang digunakan untuk langkah dan contoh lain disimpan. Anda dapat menghapusnya jika Anda tidak perlu memuat data dari Amazon S3. Atau, ganti dengan bucket Amazon S3 lain yang Anda gunakan untuk memuat data ke Amazon Redshift. 

     Nilai*`your-account-id`*,*`your-role`*, dan adalah `amzn-s3-demo-bucket` nilai yang Anda tentukan sebagai bagian dari perintah CREATE MODEL Anda.

     (Opsional) Gunakan bagian AWS KMS kunci dari kebijakan sampel jika Anda menentukan AWS KMS kunci saat menggunakan Amazon Redshift ML. *`your-kms-key`*Nilai adalah kunci yang Anda gunakan sebagai bagian dari perintah CREATE MODEL Anda.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
                     "cloudwatch:PutMetricData",
                     "ecr:BatchCheckLayerAvailability",
                     "ecr:BatchGetImage",
                     "ecr:GetAuthorizationToken",
                     "ecr:GetDownloadUrlForLayer",
                     "logs:CreateLogGroup",
                     "logs:CreateLogStream",
                     "logs:DescribeLogStreams",
                     "logs:PutLogEvents",
                     "sagemaker:*Job*",
                     "sagemaker:AddTags",
                     "sagemaker:CreateModel",
                     "sagemaker:CreateEndpoint",
                     "sagemaker:CreateEndpointConfig",
                     "sagemaker:DeleteEndpoint",
                     "sagemaker:DeleteEndpointConfig",
                     "sagemaker:DeleteModel"
                 ],
                 "Resource": "*"
             },
             {
                 "Effect": "Allow",
                 "Action": [
                     "iam:PassRole",
                     "s3:AbortMultipartUpload",
                     "s3:GetObject",
                     "s3:DeleteObject",
                     "s3:PutObject"
                 ],
                 "Resource": [
                     "arn:aws:iam::111122223333:role/<your-role>",
                     "arn:aws:s3:::amzn-s3-demo-bucket/*",
                     "arn:aws:s3:::redshift-downloads/*"
                 ]
             },
             {
                 "Effect": "Allow",
                 "Action": [
                     "s3:GetBucketLocation",
                     "s3:ListBucket"
                 ],
                 "Resource": [
                     "arn:aws:s3:::amzn-s3-demo-bucket",
                     "arn:aws:s3:::redshift-downloads"
                 ]
             },
             {
                 "Effect": "Allow",
                 "Action": [
                     "kms:CreateGrant",
                     "kms:Decrypt",
                     "kms:DescribeKey",
                     "kms:Encrypt",
                     "kms:GenerateDataKey*"
                  ],
                  "Resource": [
                     "arn:aws:kms:us-east-1:111122223333:key/<your-kms-key>"
                  ]
             }
         ]
     }
     ```

------

1. Untuk memungkinkan Amazon Redshift dan SageMaker AI untuk mengambil peran untuk berinteraksi dengan layanan lain, tambahkan kebijakan kepercayaan berikut ke peran IAM.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "redshift.amazonaws.com",
             "sagemaker.amazonaws.com",
             "forecast.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. (Opsional) Buat bucket Amazon S3 dan kunci. AWS KMS Ini untuk Amazon Redshift untuk digunakan untuk menyimpan data pelatihan yang dikirim ke Amazon SageMaker AI dan menerima model terlatih dari Amazon SageMaker AI.

1. (Opsional) Buat kombinasi yang berbeda dari peran IAM dan bucket Amazon S3 untuk mengontrol akses ke grup pengguna yang berbeda.

1. Saat Anda mengaktifkan perutean VPC yang disempurnakan, lalu lintas antara Redshift ML dan bucket S3 Anda melewati VPC pribadi Anda. Untuk informasi selengkapnya tentang perutean VPC, lihat [Perutean VPC](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html) yang ditingkatkan di Amazon Redshift.

   Untuk informasi selengkapnya tentang izin yang diperlukan untuk menentukan VPC pribadi untuk pekerjaan penyetelan hiperparameter Anda, [lihat Izin yang diperlukan untuk menggunakan Amazon Redshift MLdengan Amazon AI](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html). SageMaker 
**catatan**  
Panggilan inferensi yang dilakukan ke model SageMaker AI jarak jauh tidak melalui VPC Anda.

Untuk informasi tentang cara menggunakan pernyataan CREATE MODEL untuk mulai membuat model untuk kasus penggunaan yang berbeda, lihat[BUAT MODEL](r_CREATE_MODEL.md).

### Mengelola izin dan kepemilikan
<a name="permissions-ownership"></a>

Sama seperti objek database lainnya, seperti tabel atau fungsi, Amazon Redshift mengikat pembuatan dan menggunakan model ML untuk mengakses mekanisme kontrol. Ada izin terpisah untuk membuat model yang menjalankan fungsi prediksi. 

Contoh berikut menggunakan dua grup pengguna, `retention_analyst_grp` (pembuat model) dan `marketing_analyst_grp` (pengguna model) untuk menggambarkan bagaimana Amazon Redshift mengelola kontrol akses. Analis retensi membuat model pembelajaran mesin yang dapat digunakan oleh pengguna lain melalui izin yang diperoleh. 

Superuser dapat MEMBERIKAN izin PENGGUNA atau GRUP untuk membuat model pembelajaran mesin menggunakan pernyataan berikut.

```
GRANT CREATE MODEL TO GROUP retention_analyst_grp;
```

Pengguna atau grup dengan izin ini dapat membuat model dalam skema apa pun di cluster jika pengguna memiliki izin CREATE biasa pada SCHEMA. Model pembelajaran mesin adalah bagian dari hierarki skema dengan cara yang mirip dengan tabel, tampilan, prosedur, dan fungsi yang ditentukan pengguna. 

Dengan asumsi skema `demo_ml` sudah ada, berikan dua grup pengguna izin pada skema sebagai berikut.

```
GRANT CREATE, USAGE ON SCHEMA demo_ml TO GROUP retention_analyst_grp;
```

```
GRANT USAGE ON SCHEMA demo_ml TO GROUP marketing_analyst_grp;
```

Untuk mengizinkan pengguna lain menggunakan fungsi inferensi pembelajaran mesin Anda, berikan izin EXECUTE. Contoh berikut menggunakan izin EXECUTE untuk memberikan marketing\$1analyst\$1grp GROUP izin untuk menggunakan model.

```
GRANT EXECUTE ON MODEL demo_ml.customer_churn_auto_model TO GROUP marketing_analyst_grp;
```

Gunakan pernyataan REVOKE dengan CREATE MODEL dan EXECUTE untuk mencabut izin tersebut dari pengguna atau grup. Untuk informasi selengkapnya tentang perintah kontrol izin, lihat [HIBAH](r_GRANT.md) dan[MENCABUT](r_REVOKE.md).

## Menggunakan penjelasan model dengan Amazon Redshift ML.
<a name="clarify"></a>

Dengan penjelasan model di Amazon Redshift ML, Anda menggunakan nilai kepentingan fitur untuk membantu memahami bagaimana setiap atribut dalam data pelatihan berkontribusi pada hasil yang diprediksi. 

Keterjelasan model membantu meningkatkan model pembelajaran mesin (ML) Anda dengan menjelaskan prediksi yang dibuat model Anda. Keterjelasan model membantu menjelaskan bagaimana model ini membuat prediksi menggunakan pendekatan atribusi fitur. 

Amazon Redshift MLmenggabungkan kemampuan penjelasan model untuk memberikan fungsionalitas penjelasan model kepada pengguna Amazon Redshift ML. Untuk informasi lebih lanjut tentang penjelasan model, lihat [Apa Itu Keadilan dan Penjelasan Model untuk Prediksi Machine](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-fairness-and-explainability.html) Learning? di *Panduan Pengembang SageMaker AI Amazon*.

Keterjelasan model juga memantau kesimpulan yang dibuat model dalam produksi untuk penyimpangan atribusi fitur. Ini juga menyediakan alat untuk membantu Anda menghasilkan laporan tata kelola model yang dapat Anda gunakan untuk menginformasikan tim risiko dan kepatuhan, serta regulator eksternal.

Saat Anda menentukan opsi AUTO ON atau AUTO OFF saat menggunakan pernyataan CREATE MODEL, setelah pekerjaan pelatihan model selesai, SageMaker AI membuat keluaran penjelasan. Anda dapat menggunakan fungsi EXPLAIN\$1MODEL untuk menanyakan laporan penjelasan dalam format JSON. Untuk informasi selengkapnya, lihat [Fungsi pembelajaran mesin](ml-function.md).

## Metrik probabilitas Amazon Redshift MS
<a name="probability_metrics"></a>

 Dalam masalah pembelajaran yang diawasi, label kelas adalah hasil prediksi yang menggunakan data input. Misalnya, jika Anda menggunakan model untuk memprediksi apakah pelanggan akan berlangganan kembali ke layanan streaming, kemungkinan label mungkin dan tidak mungkin. Redshift ML menyediakan kemampuan metrik probabilitas, yang menetapkan probabilitas untuk setiap label untuk menunjukkan kemungkinannya. Ini membantu Anda membuat keputusan yang lebih tepat berdasarkan hasil yang diprediksi. Di Amazon Redshift ML, metrik probabilitas tersedia saat membuat model AUTO ON dengan jenis masalah klasifikasi biner atau klasifikasi multiclass. Jika Anda menghilangkan parameter AUTO ON, Redshift MLmengasumsikan bahwa model harus memiliki AUTO ON. 

### Buat model
<a name="probability_metrics_create_model"></a>

 Saat membuat model, Amazon Redshift secara otomatis mendeteksi jenis model dan jenis masalah. Jika ini adalah masalah klasifikasi, Redshift secara otomatis membuat fungsi inferensi kedua yang dapat Anda gunakan untuk menghasilkan probabilitas relatif terhadap setiap label. Nama fungsi inferensi kedua ini adalah nama fungsi inferensi yang Anda tentukan diikuti oleh string. `_probabilities` Misalnya, jika Anda menamai fungsi inferensi Anda sebagai`customer_churn_predict`, maka nama fungsi inferensi kedua adalah. `customer_churn_predict_probabilities` Anda kemudian dapat menanyakan fungsi ini untuk mendapatkan probabilitas setiap label. 

```
CREATE MODEL customer_churn_model
FROM customer_activity
    PROBLEM_TYPE BINARY_CLASSIFICATION
TARGET churn
FUNCTION customer_churn_predict
IAM_ROLE {default}
AUTO ON
SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket'
```

### Dapatkan probabilitas
<a name="probability_metrics_create_model_get_probability"></a>

 Setelah fungsi probabilitas siap, menjalankan perintah mengembalikan [tipe SUPER](https://docs.aws.amazon.com/redshift/latest/dg/r_SUPER_type.html) yang berisi array dari probabilitas yang dikembalikan dan label terkait. Misalnya, hasilnya `"probabilities" : [0.7, 0.3], "labels" : ["False.", "True."]` berarti bahwa label False memiliki probabilitas 0,7, dan label True memiliki probabilitas 0,3. 

```
SELECT customer_churn_predict_probabilities(Account_length, Area_code, 
            VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, 
            Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, 
            Intl_charge, Cust_serv_calls) 
FROM customer_activity;
            
customer_churn_predict_probabilities
 --------------------
 {"probabilities" : [0.7, 0.3], "labels" : ["False.", "True."]} 
 {"probabilities" : [0.8, 0.2], "labels" : ["False.", "True."]}
 {"probabilities" : [0.75, 0.25], "labels" : ["True.", "False"]}
```

 Probabilitas dan label array selalu diurutkan berdasarkan probabilitasnya dalam urutan menurun. Anda dapat menulis kueri untuk mengembalikan hanya label yang diprediksi dengan probabilitas tertinggi dengan melepaskan hasil SUPER yang dikembalikan dari fungsi probabilitas. 

```
SELECT prediction.labels[0], prediction.probabilities[0]
            FROM (SELECT customer_churn_predict_probabilities(Account_length, Area_code, 
            VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, 
            Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, 
            Intl_charge, Cust_serv_calls) AS prediction
FROM customer_activity);

  labels   | probabilities
-----------+--------------
 "False."  | 0.7
 "False."  | 0.8
 "True."   | 0.75
```

Untuk membuat kueri lebih sederhana, Anda dapat menyimpan hasil fungsi prediksi dalam tabel.

```
CREATE TABLE churn_auto_predict_probabilities AS 
             (SELECT customer_churn_predict_probabilities(Account_length, Area_code, 
             VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, 
             Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins,
             Intl_calls, Intl_charge, Cust_serv_calls) AS prediction
FROM customer_activity);
```

Anda dapat menanyakan tabel dengan hasil untuk mengembalikan hanya prediksi yang memiliki probabilitas lebih tinggi dari 0,7.

```
SELECT prediction.labels[0], prediction.probabilities[0]
FROM churn_auto_predict_probabilities
WHERE prediction.probabilities[0] > 0.7;

  labels   | probabilities
-----------+--------------
 "False."  | 0.8
 "True."   | 0.75
```

Menggunakan notasi indeks, Anda bisa mendapatkan probabilitas label tertentu. Contoh berikut mengembalikan probabilitas dari semua label. `True.`

```
SELECT label, index, p.prediction.probabilities[index]
FROM churn_auto_predict_probabilities p, p.prediction.labels AS label AT index
WHERE label='True.';

  label  | index | probabilities
---------+-------+---------------
 "True." |     0 | 0.3
 "True." |     0 | 0.2
 "True." |     0 | 0.75
```

 Contoh berikut mengembalikan semua baris yang memiliki label`True`. dengan probabilitas lebih besar dari 0,7, menunjukkan bahwa pelanggan cenderung churn. 

```
SELECT prediction.labels[0], prediction.probabilities[0]
FROM churn_auto_predict_probabilities
WHERE prediction.probabilities[0] > 0.7 AND prediction.labels[0] = "True.";

labels     | probabilities
-----------+--------------
 "True."   | 0.75
```

# Tutorial untuk Amazon Redshift ML
<a name="tutorials_for_amazon_redshift_ml"></a>

Anda dapat menggunakan Amazon Redshift ML untuk melatih model pembelajaran mesin menggunakan pernyataan SQL, lalu memanggil model dalam kueri SQL untuk prediksi. Pembelajaran mesin di Amazon Redshift melatih model dengan satu perintah SQL. Amazon Redshift secara otomatis meluncurkan pekerjaan pelatihan di Amazon SageMaker AI dan menghasilkan model. Setelah model dibuat, Anda dapat melakukan prediksi di Amazon Redshift menggunakan fungsi prediksi model.

Ikuti langkah-langkah dalam tutorial ini untuk mempelajari tentang fitur Amazon Redshift ML:
+ [Tutorial: Membangun model churn pelanggan](tutorial_customer_churn.md)— Dalam tutorial ini, Anda menggunakan Amazon Redshift MLuntuk membuat model churn pelanggan dengan perintah CREATE MODEL, dan menjalankan query prediksi untuk skenario pengguna. Kemudian, Anda mengimplementasikan kueri menggunakan fungsi SQL yang dihasilkan oleh perintah CREATE MODEL.
+ [Tutorial: Membangun model pengelompokan K-means](tutorial_k-means_clustering.md)[— Dalam tutorial ini, Anda menggunakan Amazon Redshift MLuntuk membuat, melatih, dan menerapkan model pembelajaran mesin berdasarkan algoritma K-means.](url-sm-dev;k-means.html)
+ [Tutorial: Membangun model klasifikasi multi-kelas](tutorial_multi-class_classification.md)— Dalam tutorial ini, Anda menggunakan Amazon Redshift MLuntuk membuat model pembelajaran mesin yang memecahkan masalah klasifikasi multi-kelas. Algoritma klasifikasi multi-kelas mengklasifikasikan titik data menjadi salah satu dari tiga kelas atau lebih. Kemudian, Anda mengimplementasikan kueri menggunakan fungsi SQL yang dihasilkan oleh perintah CREATE MODEL. 
+ [Tutorial: Membangun XGBoost model](tutorial_xgboost.md)— Dalam tutorial ini, Anda membuat model dengan data dari Amazon S3 dan menjalankan kueri prediksi dengan model menggunakan Amazon Redshift ML. XGBoost Algoritma ini adalah implementasi yang dioptimalkan dari algoritma pohon yang ditingkatkan gradien. 
+ [Tutorial: Membangun model regresi](tutorial_regression.md)— Dalam tutorial ini, Anda menggunakan Amazon Redshift MLuntuk membuat model regresi pembelajaran mesin dan menjalankan kueri prediksi pada model. Model regresi memungkinkan Anda memprediksi hasil numerik, seperti harga rumah, atau berapa banyak orang yang akan menggunakan layanan penyewaan sepeda kota. 
+ [Tutorial: Membangun model regresi dengan pelajar linier](tutorial_linear_learner_regression.md)— Dalam tutorial ini, Anda membuat model pembelajar linier dengan data dari Amazon S3 dan menjalankan kueri prediksi dengan model menggunakan Amazon Redshift ML. Algoritma pembelajar linier SageMaker AI memecahkan masalah regresi atau klasifikasi multi-kelas. 
+ [Tutorial: Membangun model klasifikasi multi-kelas dengan pelajar linier](tutorial_linear_learner_multi-class_classification.md)— Dalam tutorial ini, Anda membuat model pembelajar linier dengan data dari Amazon S3, dan kemudian menjalankan kueri prediksi dengan model menggunakan Amazon Redshift ML. Algoritma pembelajar linier SageMaker AI memecahkan masalah regresi atau klasifikasi. 

# Tutorial: Membangun model churn pelanggan
<a name="tutorial_customer_churn"></a>

Dalam tutorial ini, Anda menggunakan Amazon Redshift MLuntuk membuat model churn pelanggan dengan perintah CREATE MODEL, dan menjalankan query prediksi untuk skenario pengguna. Kemudian, Anda mengimplementasikan kueri menggunakan fungsi SQL yang dihasilkan oleh perintah CREATE MODEL.

Anda dapat menggunakan perintah CREATE MODEL sederhana untuk mengekspor data pelatihan, melatih model, mengimpor model, dan menyiapkan fungsi prediksi Amazon Redshift. Gunakan pernyataan CREATE MODEL untuk menentukan data pelatihan baik sebagai tabel atau pernyataan SELECT.

Contoh ini menggunakan informasi historis untuk membangun model pembelajaran mesin dari churn pelanggan operator seluler. Pertama, SageMaker AI melatih model pembelajaran mesin Anda dan kemudian menguji model Anda menggunakan informasi profil pelanggan yang sewenang-wenang. Setelah model divalidasi, Amazon SageMaker AI menyebarkan model dan fungsi prediksi ke Amazon Redshift. Anda dapat menggunakan fungsi prediksi untuk memprediksi apakah pelanggan akan churn atau tidak.

## Contoh kasus penggunaan
<a name="tutorial_customer_churn_tasks"></a>

Anda dapat memecahkan masalah klasifikasi biner lainnya menggunakan Amazon Redshift ML, seperti memprediksi apakah prospek penjualan akan ditutup atau tidak. Anda juga bisa memprediksi apakah transaksi keuangan itu curang atau tidak.

**Tugas**
+ Prasyarat
+ Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
+ Langkah 2: Buat model pembelajaran mesin
+ Langkah 3: Lakukan prediksi dengan model

## Prasyarat
<a name="tutorial_customer_churn_prereqs"></a>

Untuk menyelesaikan tutorial ini, Anda harus memiliki prasyarat berikut:
+ Anda harus menyiapkan klaster Amazon Redshift untuk Amazon Redshift Ml. Untuk melakukannya, gunakan dokumentasi untuk [Cluster dan konfigurasikan penyiapan untuk administrasi Amazon Redshift ML.](https://docs.aws.amazon.com/redshift/latest/dg/admin-setup.html)
+ Cluster Amazon Redshift yang Anda gunakan untuk membuat model, dan bucket Amazon S3 yang Anda gunakan untuk mementaskan data pelatihan dan menyimpan artefak model harus berada di Wilayah yang sama. AWS 
+ Untuk mengunduh perintah SQL dan kumpulan data sampel yang digunakan dalam dokumentasi ini, lakukan salah satu hal berikut:
  + Unduh [perintah SQL](https://s3.amazonaws.com/redshift-downloads/redshift-ml/tutorial-scripts/redshift-ml-tutorial.sql), [file aktivitas Pelanggan, dan file](https://s3.amazonaws.com/redshift-downloads/redshift-ml/customer_activity/customer_activity.csv) [Abalone](https://s3.amazonaws.com/redshift-downloads/redshift-ml/abalone_xg/abalone.csv).
  + Menggunakan AWS CLI untuk Amazon S3, jalankan perintah berikut. Anda dapat menggunakan jalur target Anda sendiri.

    ```
    aws s3 cp s3://redshift-downloads/redshift-ml/tutorial-scripts/redshift-ml-tutorial.sql </target/path>
    aws s3 cp s3://redshift-downloads/redshift-ml/customer_activity/customer_activity.csv </target/path>
    aws s3 cp s3://redshift-downloads/redshift-ml/abalone_xgb/abalone_xgb.csv </target/path>
    ```

## Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
<a name="tutorial_customer_churn_step_load"></a>

Gunakan [editor kueri Amazon Redshift v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html) untuk mengedit dan menjalankan kueri serta memvisualisasikan hasil.

Menjalankan kueri berikut akan membuat tabel bernama `customer_activity` dan menyerap kumpulan data sampel dari Amazon S3.

```
DROP TABLE IF EXISTS customer_activity;

CREATE TABLE customer_activity (
state varchar(2),
account_length int,
area_code int,
phone varchar(8),
intl_plan varchar(3),
vMail_plan varchar(3),
vMail_message int,
day_mins float,
day_calls int,
day_charge float,
total_charge float,
eve_mins float,
eve_calls int,
eve_charge float,
night_mins float,
night_calls int,
night_charge float,
intl_mins float,
intl_calls int,
intl_charge float,
cust_serv_calls int,
churn varchar(6),
record_date date
);

COPY customer_activity
FROM 's3://redshift-downloads/redshift-ml/customer_activity/'
REGION 'us-east-1' IAM_ROLE default
FORMAT AS CSV IGNOREHEADER 1;
```

## Langkah 2: Buat model pembelajaran mesin
<a name="tutorial_customer_churn_step_create_model"></a>

Churn adalah masukan target kami dalam model ini. Semua input lain untuk model adalah atribut yang membantu membuat fungsi untuk memprediksi churn.

Contoh berikut menggunakan operasi CREATE MODEL untuk memberikan model yang memprediksi apakah pelanggan akan aktif, menggunakan input seperti usia pelanggan, kode pos, pengeluaran, dan kasus. Dalam contoh berikut, ganti amzn-s3-demo-bucket dengan bucket Amazon S3 Anda sendiri.

```
CREATE MODEL customer_churn_auto_model
FROM
    (
      SELECT state,
             account_length,
             area_code,
             total_charge/account_length AS average_daily_spend,
             cust_serv_calls/account_length AS average_daily_cases,
             churn
      FROM customer_activity
      WHERE  record_date < '2020-01-01'
     )
TARGET churn FUNCTION ml_fn_customer_churn_auto
IAM_ROLE default SETTINGS (
  S3_BUCKET 'amzn-s3-demo-bucket'
);
```

Query SELECT dalam contoh sebelumnya membuat data pelatihan. Klausa TARGET menentukan kolom mana yang merupakan label pembelajaran mesin yang digunakan operasi CREATE MODEL untuk mempelajari cara memprediksi. Kolom target “churn” menunjukkan apakah pelanggan masih memiliki keanggotaan aktif atau telah menangguhkan keanggotaan. Bidang S3\$1BUCKET adalah nama bucket Amazon S3 yang sebelumnya Anda buat. Bucket Amazon S3 digunakan untuk berbagi data pelatihan dan artefak antara Amazon Redshift dan Amazon AI. SageMaker Kolom yang tersisa adalah fitur yang digunakan untuk prediksi.

Untuk ringkasan sintaks dan fitur kasus penggunaan dasar perintah CREATE MODEL, lihat [Simple CREATE MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_create_model_use_cases.html#r_simple_create_model).

### Tambahkan izin untuk enkripsi sisi server (opsional)
<a name="tutorial_customer_churn_encryption"></a>

Amazon Redshift secara default menggunakan Amazon SageMaker AI Autopilot untuk pelatihan. Secara khusus, Amazon Redshift mengekspor data pelatihan dengan aman ke bucket Amazon S3 yang ditentukan pelanggan. Jika Anda tidak menentukan`KMS_KEY_ID`, maka data dienkripsi menggunakan enkripsi sisi server SSE-S3 secara default.

Saat Anda mengenkripsi input menggunakan enkripsi sisi server dengan kunci AWS KMS terkelola (SSE-MMS), tambahkan izin berikut:

```
{
    "Effect": "Allow",
    "Action": [
    "kms:Encrypt"
    "kms:Decrypt"
    ]
}
```

Untuk informasi selengkapnya tentang peran Amazon SageMaker AI, lihat [peran Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html) di *Panduan Pengembang Amazon SageMaker AI*.

### Periksa status pelatihan model (opsional)
<a name="tutorial_customer_churn_check_status"></a>

Anda dapat menggunakan perintah SHOW MODEL untuk mengetahui kapan model Anda siap.

Gunakan operasi berikut untuk memeriksa status model.

```
SHOW MODEL customer_churn_auto_model;
```

Berikut ini adalah contoh output dari operasi sebelumnya.

```
+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|           Key            |                                                                             Value                                                                             |
+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|        Model Name        |                                                                   customer_churn_auto_model                                                                   |
|       Schema Name        |                                                                            public                                                                             |
|          Owner           |                                                                            awsuser                                                                            |
|      Creation Time       |                                                                   Tue, 14.06.2022 17:15:52                                                                    |
|       Model State        |                                                                           TRAINING                                                                            |
|                          |                                                                                                                                                               |
|      TRAINING DATA:      |                                                                                                                                                               |
|          Query           | SELECT STATE, ACCOUNT_LENGTH, AREA_CODE, TOTAL_CHARGE / ACCOUNT_LENGTH AS AVERAGE_DAILY_SPEND, CUST_SERV_CALLS / ACCOUNT_LENGTH AS AVERAGE_DAILY_CASES, CHURN |
|                          |                                                                    FROM CUSTOMER_ACTIVITY                                                                     |
|                          |                                                               WHERE RECORD_DATE < '2020-01-01'                                                                |
|      Target Column       |                                                                             CHURN                                                                             |
|                          |                                                                                                                                                               |
|       PARAMETERS:        |                                                                                                                                                               |
|        Model Type        |                                                                             auto                                                                              |
|       Problem Type       |                                                                                                                                                               |
|        Objective         |                                                                                                                                                               |
|     AutoML Job Name      |                                                                redshiftml-20220614171552640901                                                                |
|      Function Name       |                                                                   ml_fn_customer_churn_auto                                                                   |
|   Function Parameters    |                                            state account_length area_code average_daily_spend average_daily_cases                                             |
| Function Parameter Types |                                                                 varchar int4 int4 float8 int4                                                                 |
|         IAM Role         |                                                                     default-aws-iam-role                                                                      |
|        S3 Bucket         |                                                                        amzn-s3-demo-bucket                                                                     |
|       Max Runtime        |                                                                             5400                                                                              |
+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
```

Ketika pelatihan model selesai, `model_state` variabel menjadi`Model is Ready`, dan fungsi prediksi menjadi tersedia.

## Langkah 3: Lakukan prediksi dengan model
<a name="tutorial_customer_churn_step_perform_predictions"></a>

Anda dapat menggunakan pernyataan SQL untuk melihat prediksi yang dibuat oleh model prediksi. Dalam contoh ini, fungsi prediksi yang dibuat oleh operasi CREATE MODEL diberi nama`ml_fn_customer_churn_auto`. Argumen input untuk fungsi prediksi sesuai dengan jenis fitur, seperti varchar untuk `state` dan integer untuk. `account_length` Output dari fungsi prediksi adalah tipe yang sama dengan kolom TARGET dari pernyataan CREATE MODEL.

1. Anda melatih model pada data dari sebelum 2020-01-01, jadi sekarang Anda menggunakan fungsi prediksi pada set pengujian. Kueri berikut menampilkan prediksi apakah pelanggan yang mendaftar setelah 2020-01-01 akan melalui churn atau tidak.

   ```
   SELECT
       phone,
       ml_fn_customer_churn_auto(
           state,
           account_length,
           area_code,
           total_charge / account_length,
           cust_serv_calls / account_length
       ) AS active
   FROM
       customer_activity
   WHERE
       record_date > '2020-01-01';
   ```

1. Contoh berikut menggunakan fungsi prediksi yang sama untuk kasus penggunaan yang berbeda. Dalam hal ini, Amazon Redshift memprediksi proporsi churner dan non-churner di antara pelanggan dari berbagai negara bagian di mana tanggal pencatatan lebih besar dari 2020-01-01.

   ```
   WITH predicted AS (
       SELECT
           state,
           ml_fn_customer_churn_auto(
               state,
               account_length,
               area_code,
               total_charge / account_length,
               cust_serv_calls / account_length
           ) :: varchar(6) AS active
       FROM
           customer_activity
       WHERE
           record_date > '2020-01-01'
   )
   SELECT
       state,
       SUM(
           CASE
               WHEN active = 'True.' THEN 1
               ELSE 0
           END
       ) AS churners,
       SUM(
           CASE
               WHEN active = 'False.' THEN 1
               ELSE 0
           END
       ) AS nonchurners,
       COUNT(*) AS total_per_state
   FROM
       predicted
   GROUP BY
       state
   ORDER BY
       state;
   ```

1. Contoh berikut menggunakan fungsi prediksi untuk kasus penggunaan memprediksi persentase pelanggan yang melakukan churn dalam suatu keadaan. Dalam hal ini, Amazon Redshift memprediksi persentase churn di mana tanggal rekor lebih besar dari 2020-01-01.

   ```
   WITH predicted AS (
       SELECT
           state,
           ml_fn_customer_churn_auto(
               state,
               account_length,
               area_code,
               total_charge / account_length,
               cust_serv_calls / account_length
           ) :: varchar(6) AS active
       FROM
           customer_activity
       WHERE
           record_date > '2020-01-01'
   )
   SELECT
       state,
       CAST((CAST((SUM(
           CASE
               WHEN active = 'True.' THEN 1
               ELSE 0
           END
       )) AS FLOAT) / CAST(COUNT(*) AS FLOAT)) AS DECIMAL (3, 2)) AS pct_churn,
       COUNT(*) AS total_customers_per_state
   FROM
       predicted
   GROUP BY
       state
   ORDER BY
       3 DESC;
   ```

## Topik terkait
<a name="tutorial_customer_churn_related_topics"></a>

Untuk informasi selengkapnya tentang Amazon Redshift ML, lihat dokumentasi berikut:
+ [Biaya untuk menggunakan Amazon RedShiftMl](https://docs.aws.amazon.com/redshift/latest/dg/cost.html)
+ [BUAT perintah MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html)
+ [Fungsi EXPLAIN\$1MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_explain_model_function.html)

Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut:
+ [Ikhtisar pembelajaran mesin](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning_overview.html)
+ [Pembelajaran mesin untuk pemula dan ahli](https://docs.aws.amazon.com/redshift/latest/dg/novice_expert.html)
+ [Apa Keadilan dan Penjelasan Model untuk Prediksi Machine Learning?](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-fairness-and-explainability.html)

# Tutorial: Membangun model pengelompokan K-means
<a name="tutorial_k-means_clustering"></a>

[Dalam tutorial ini, Anda menggunakan Amazon Redshift ML untuk membuat, melatih, dan menerapkan model pembelajaran mesin berdasarkan algoritma K-means.](url-sm-dev;k-means.html) Algoritma ini memecahkan masalah pengelompokan di mana Anda ingin menemukan pengelompokan dalam data. K-means membantu dalam mengelompokkan data yang belum diberi label. Untuk mempelajari lebih lanjut tentang pengelompokan K-means, lihat [Cara Kerja K-Means Clustering di Panduan Pengembang](https://docs.aws.amazon.com/sagemaker/latest/dg/algo-kmeans-tech-notes.html) Amazon SageMaker AI.

Anda akan menggunakan operasi CREATE MODEL untuk membuat model K-means dari cluster Amazon Redshift. Anda dapat menggunakan perintah CREATE MODEL untuk mengekspor data pelatihan, melatih model, mengimpor model, dan menyiapkan fungsi prediksi Amazon Redshift. Gunakan operasi CREATE MODEL untuk menentukan data pelatihan baik sebagai tabel atau pernyataan SELECT.

Dalam tutorial ini, Anda menggunakan K-means pada dataset [Global Database of Events, Language, and Tone (GDELT)](https://aws.amazon.com/public-datasets/gdelt/), yang memantau berita dunia di seluruh dunia, dan data disimpan setiap detik setiap hari. K-means akan mengelompokkan acara yang memiliki nada, aktor, atau lokasi yang sama. Data disimpan sebagai beberapa file di Amazon Simple Storage Service, dalam dua folder berbeda. Folder tersebut bersejarah, yang mencakup tahun 1979-2013, dan pembaruan harian, yang mencakup tahun 2013 dan setelahnya. Untuk contoh ini, kami menggunakan format historis dan membawa data 1979.

## Contoh kasus penggunaan
<a name="tutorial_k-means_clustering_tasks"></a>

Anda dapat memecahkan masalah pengelompokan lainnya dengan Amazon Redshift ML, seperti mengelompokkan pelanggan yang memiliki kebiasaan menonton serupa pada layanan streaming. Anda juga dapat menggunakan Redshift ML untuk memprediksi jumlah optimal pusat pengiriman untuk layanan pengiriman.

**Tugas**
+ Prasyarat
+ Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
+ Langkah 2: Buat model pembelajaran mesin
+ Langkah 3: Lakukan prediksi dengan model

## Prasyarat
<a name="tutorial_k-means_clustering_prereqs"></a>

Untuk menyelesaikan tutorial ini, Anda harus menyelesaikan [pengaturan Administratif](https://docs.aws.amazon.com/redshift/latest/dg/admin-setup.html) untuk Amazon Redshift Ml.

## Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
<a name="tutorial_k-means_clustering_step_load"></a>

1. Gunakan [editor kueri Amazon Redshift v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html) untuk menjalankan kueri berikut. Kueri menjatuhkan `gdelt_data` tabel dalam skema publik jika ada dan membuat tabel dengan nama yang sama dalam skema publik.

   ```
   DROP TABLE IF EXISTS gdelt_data CASCADE;
   
   CREATE TABLE gdelt_data (
       GlobalEventId bigint,
       SqlDate bigint,
       MonthYear bigint,
       Year bigint,
       FractionDate double precision,
       Actor1Code varchar(256),
       Actor1Name varchar(256),
       Actor1CountryCode varchar(256),
       Actor1KnownGroupCode varchar(256),
       Actor1EthnicCode varchar(256),
       Actor1Religion1Code varchar(256),
       Actor1Religion2Code varchar(256),
       Actor1Type1Code varchar(256),
       Actor1Type2Code varchar(256),
       Actor1Type3Code varchar(256),
       Actor2Code varchar(256),
       Actor2Name varchar(256),
       Actor2CountryCode varchar(256),
       Actor2KnownGroupCode varchar(256),
       Actor2EthnicCode varchar(256),
       Actor2Religion1Code varchar(256),
       Actor2Religion2Code varchar(256),
       Actor2Type1Code varchar(256),
       Actor2Type2Code varchar(256),
       Actor2Type3Code varchar(256),
       IsRootEvent bigint,
       EventCode bigint,
       EventBaseCode bigint,
       EventRootCode bigint,
       QuadClass bigint,
       GoldsteinScale double precision,
       NumMentions bigint,
       NumSources bigint,
       NumArticles bigint,
       AvgTone double precision,
       Actor1Geo_Type bigint,
       Actor1Geo_FullName varchar(256),
       Actor1Geo_CountryCode varchar(256),
       Actor1Geo_ADM1Code varchar(256),
       Actor1Geo_Lat double precision,
       Actor1Geo_Long double precision,
       Actor1Geo_FeatureID bigint,
       Actor2Geo_Type bigint,
       Actor2Geo_FullName varchar(256),
       Actor2Geo_CountryCode varchar(256),
       Actor2Geo_ADM1Code varchar(256),
       Actor2Geo_Lat double precision,
       Actor2Geo_Long double precision,
       Actor2Geo_FeatureID bigint,
       ActionGeo_Type bigint,
       ActionGeo_FullName varchar(256),
       ActionGeo_CountryCode varchar(256),
       ActionGeo_ADM1Code varchar(256),
       ActionGeo_Lat double precision,
       ActionGeo_Long double precision,
       ActionGeo_FeatureID bigint,
       DATEADDED bigint
   );
   ```

1. Query berikut memuat data sampel ke dalam `gdelt_data` tabel.

   ```
   COPY gdelt_data
   FROM 's3://gdelt-open-data/events/1979.csv' 
   REGION 'us-east-1'
   IAM_ROLE default 
   CSV
   DELIMITER '\t';
   ```

### Periksa data pelatihan (opsional)
<a name="tutorial_k-means_clustering_examine"></a>

Untuk melihat data apa yang akan dilatih model Anda, gunakan kueri berikut.

```
SELECT
    AvgTone,
    EventCode,
    NumArticles,
    Actor1Geo_Lat,
    Actor1Geo_Long,
    Actor2Geo_Lat,
    Actor2Geo_Long
FROM
    gdelt_data LIMIT 100;
```

## Langkah 2: Buat model pembelajaran mesin
<a name="tutorial_k-means_clustering_create_model"></a>

Contoh berikut menggunakan perintah CREATE MODEL untuk membuat model yang mengelompokkan data menjadi tujuh cluster. Nilai K adalah jumlah cluster tempat titik data Anda dibagi menjadi. Model ini mengklasifikasikan titik data Anda ke dalam cluster di mana titik data lebih mirip satu sama lain. Dengan mengelompokkan titik data ke dalam kelompok, algoritma K-Means secara iteratif menentukan pusat cluster terbaik. Algoritma kemudian menetapkan setiap titik data ke pusat cluster terdekat. Anggota terdekat dengan pusat cluster yang sama termasuk dalam grup yang sama. Anggota kelompok semirip mungkin dengan anggota lain dalam kelompok yang sama, dan berbeda mungkin dari anggota kelompok lain. Nilai K bersifat subjektif dan bergantung pada metode yang mengukur kesamaan antar titik data. Anda dapat mengubah nilai K untuk menghaluskan ukuran cluster jika cluster tidak terdistribusi secara merata.

Dalam contoh berikut, ganti amzn-s3-demo-bucket dengan bucket Amazon S3 Anda sendiri.

```
CREATE MODEL news_data_clusters
FROM
    (
        SELECT
            AvgTone,
            EventCode,
            NumArticles,
            Actor1Geo_Lat,
            Actor1Geo_Long,
            Actor2Geo_Lat,
            Actor2Geo_Long
        FROM
            gdelt_data
    ) FUNCTION news_monitoring_cluster 
    IAM_ROLE default 
    AUTO OFF 
    MODEL_TYPE KMEANS 
    PREPROCESSORS 'none' 
    HYPERPARAMETERS DEFAULT
    EXCEPT
    (K '7') 
    SETTINGS (S3_BUCKET 'amzn-s3-demo-bucket');
```

### Periksa status pelatihan model (opsional)
<a name="tutorial_k-means_clustering_check_status"></a>

Anda dapat menggunakan perintah SHOW MODEL untuk mengetahui kapan model Anda siap.

Untuk memeriksa status model, gunakan operasi SHOW MODEL berikut dan temukan apakah `Model State` ada`Ready`.

```
SHOW MODEL NEWS_DATA_CLUSTERS;
```

Ketika model siap, output dari operasi sebelumnya harus menunjukkan bahwa `Model State` adalah`Ready`. Berikut ini adalah contoh output dari operasi SHOW MODEL.

```
+--------------------------+------------------------------------------------------------------------------------------------------+
|        Model Name        |                                          news_data_clusters                                          |
+--------------------------+------------------------------------------------------------------------------------------------------+
|       Schema Name        |                                                public                                                |
|          Owner           |                                               awsuser                                                |
|      Creation Time       |                                       Fri, 17.06.2022 16:32:19                                       |
|       Model State        |                                                READY                                                 |
|        train:msd         |                                             2973.822754                                              |
|      train:progress      |                                              100.000000                                              |
|     train:throughput     |                                            237114.875000                                             |
|      Estimated Cost      |                                               0.004983                                               |
|                          |                                                                                                      |
|      TRAINING DATA:      |                                                                                                      |
|          Query           | SELECT AVGTONE, EVENTCODE, NUMARTICLES, ACTOR1GEO_LAT, ACTOR1GEO_LONG, ACTOR2GEO_LAT, ACTOR2GEO_LONG |
|                          |                                           FROM GDELT_DATA                                            |
|                          |                                                                                                      |
|       PARAMETERS:        |                                                                                                      |
|        Model Type        |                                                kmeans                                                |
|    Training Job Name     |                                redshiftml-20220617163219978978-kmeans                                |
|      Function Name       |                                       news_monitoring_cluster                                        |
|   Function Parameters    |       avgtone eventcode numarticles actor1geo_lat actor1geo_long actor2geo_lat actor2geo_long        |
| Function Parameter Types |                             float8 int8 int8 float8 float8 float8 float8                             |
|         IAM Role         |                                         default-aws-iam-role                                         |
|        S3 Bucket         |                                            amzn-s3-demo-bucket                                       |
|       Max Runtime        |                                                 5400                                                 |
|                          |                                                                                                      |
|     HYPERPARAMETERS:     |                                                                                                      |
|       feature_dim        |                                                  7                                                   |
|            k             |                                                  7                                                   |
+--------------------------+------------------------------------------------------------------------------------------------------+
```

## Langkah 3: Lakukan prediksi dengan model
<a name="tutorial_k-means_clustering_step_perform_predictions"></a>

### Identifikasi cluster
<a name="tutorial_k-means_clustering_identify_clusters"></a>

Anda dapat menemukan pengelompokan diskrit yang diidentifikasi dalam data oleh model Anda, atau dikenal sebagai cluster. Cluster adalah kumpulan titik data yang lebih dekat ke pusat klaster daripada pusat cluster lainnya. Karena nilai K mewakili jumlah cluster dalam model, itu juga mewakili jumlah pusat cluster. Kueri berikut mengidentifikasi cluster dengan menunjukkan cluster yang terkait dengan masing-masing. `globaleventid`

```
SELECT
    globaleventid,
    news_monitoring_cluster (
        AvgTone,
        EventCode,
        NumArticles,
        Actor1Geo_Lat,
        Actor1Geo_Long,
        Actor2Geo_Lat,
        Actor2Geo_Long
    ) AS cluster
FROM
    gdelt_data;
```

### Periksa distribusi data
<a name="tutorial_k-means_clustering_check_distribution"></a>

Anda dapat memeriksa distribusi data di seluruh cluster untuk melihat apakah nilai K yang Anda pilih menyebabkan data terdistribusi agak merata. Gunakan kueri berikut untuk menentukan apakah data didistribusikan secara merata di seluruh cluster Anda.

```
SELECT
    events_cluster,
    COUNT(*) AS nbr_events
FROM
    (
        SELECT
            globaleventid,
            news_monitoring_cluster(
                AvgTone,
                EventCode,
                NumArticles,
                Actor1Geo_Lat,
                Actor1Geo_Long,
                Actor2Geo_Lat,
                Actor2Geo_Long
            ) AS events_cluster
        FROM
            gdelt_data
    )
GROUP BY
    1;
```

Perhatikan bahwa Anda dapat mengubah nilai K untuk menghaluskan ukuran cluster jika cluster tidak terdistribusi secara merata.

### Tentukan pusat cluster
<a name="tutorial_k-means_clustering_determine_centers"></a>

Titik data lebih dekat ke pusat klaster daripada ke pusat cluster lainnya. Dengan demikian, menemukan pusat cluster membantu Anda menentukan cluster.

Jalankan kueri berikut untuk menentukan pusat cluster berdasarkan jumlah artikel berdasarkan kode acara.

```
SELECT
    news_monitoring_cluster (
        AvgTone,
        EventCode,
        NumArticles,
        Actor1Geo_Lat,
        Actor1Geo_Long,
        Actor2Geo_Lat,
        Actor2Geo_Long
    ) AS events_cluster,
    eventcode,
    SUM(numArticles) AS numArticles
FROM
    gdelt_data
GROUP BY
    1,
    2;
```

### Menampilkan informasi tentang titik data dalam klaster
<a name="tutorial_k-means_clustering_data_points_info"></a>

Gunakan kueri berikut untuk mengembalikan data untuk poin yang ditetapkan ke cluster kelima. Artikel yang dipilih harus memiliki dua aktor.

```
SELECT
    news_monitoring_cluster (
        AvgTone,
        EventCode,
        NumArticles,
        Actor1Geo_Lat,
        Actor1Geo_Long,
        Actor2Geo_Lat,
        Actor2Geo_Long
    ) AS events_cluster,
    eventcode,
    actor1name,
    actor2name,
    SUM(numarticles) AS totalarticles
FROM
    gdelt_data
WHERE
    events_cluster = 5
    AND actor1name <> ' '
    AND actor2name <> ' '
GROUP BY
    1,
    2,
    3,
    4
ORDER BY
    5 desc;
```

### Tampilkan data tentang peristiwa dengan aktor dari kode etnis yang sama
<a name="tutorial_k-means_clustering_show_events_data"></a>

Kueri berikut menghitung jumlah artikel yang ditulis tentang peristiwa dengan nada positif. Kueri juga mengharuskan kedua aktor memiliki kode etnis yang sama dan mengembalikan cluster mana yang ditugaskan untuk setiap peristiwa.

```
SELECT
    news_monitoring_cluster (
        AvgTone,
        EventCode,
        NumArticles,
        Actor1Geo_Lat,
        Actor1Geo_Long,
        Actor2Geo_Lat,
        Actor2Geo_Long
    ) AS events_cluster,
    SUM(numarticles) AS total_articles,
    eventcode AS event_code,
    Actor1EthnicCode AS ethnic_code
FROM
    gdelt_data
WHERE
    Actor1EthnicCode = Actor2EthnicCode
    AND Actor1EthnicCode <> ' '
    AND Actor2EthnicCode <> ' '
    AND AvgTone > 0
GROUP BY
    1,
    3,
    4
HAVING
    (total_articles) > 4
ORDER BY
    1,
    2 ASC;
```

## Topik terkait
<a name="tutorial_k-means_clustering_related_topics"></a>

Untuk informasi selengkapnya tentang Amazon Redshift ML, lihat dokumentasi berikut:
+ [Biaya untuk menggunakan Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cost.html)
+ [OPERASI BUAT MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html)
+ [Fungsi EXPLAIN\$1MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_explain_model_function.html)

Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut:
+ [Ikhtisar pembelajaran mesin](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning_overview.html)
+ [Pembelajaran mesin untuk pemula dan ahli](https://docs.aws.amazon.com/redshift/latest/dg/novice_expert.html)
+ [Apa Keadilan dan Penjelasan Model untuk Prediksi Machine Learning?](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-fairness-and-explainability.html)

# Tutorial: Membangun model klasifikasi multi-kelas
<a name="tutorial_multi-class_classification"></a>

Dalam tutorial ini, Anda menggunakan Amazon Redshift ML untuk membuat model pembelajaran mesin yang memecahkan masalah klasifikasi multi-kelas. Algoritma klasifikasi multi-kelas mengklasifikasikan titik data menjadi salah satu dari tiga kelas atau lebih. Kemudian, Anda mengimplementasikan kueri menggunakan fungsi SQL yang dihasilkan oleh perintah CREATE MODEL.

Anda dapat menggunakan perintah CREATE MODEL untuk mengekspor data pelatihan, melatih model, mengimpor model, dan menyiapkan fungsi prediksi Amazon Redshift. Gunakan operasi CREATE MODEL untuk menentukan data pelatihan baik sebagai tabel atau pernyataan SELECT.

Untuk mengikuti tutorial, Anda menggunakan dataset publik [E-Commerce Sales Forecast](https://www.kaggle.com/allunia/e-commerce-sales-forecast), yang mencakup data penjualan pengecer Inggris online. Model yang Anda hasilkan akan menargetkan pelanggan paling aktif untuk program loyalitas pelanggan khusus. Dengan klasifikasi multi-kelas, Anda dapat menggunakan model untuk memprediksi berapa bulan pelanggan akan aktif selama periode 13 bulan. Fungsi prediksi menunjuk pelanggan yang diprediksi akan aktif selama 7 bulan atau lebih untuk masuk ke program.

## Contoh kasus penggunaan
<a name="tutorial_multi-class_classification_tasks"></a>

Anda dapat memecahkan masalah klasifikasi multi-kelas lainnya dengan Amazon Redshift ML, seperti memprediksi produk terlaris dari lini produk. Anda juga dapat memprediksi buah mana yang terkandung dalam gambar, seperti memilih apel atau pir atau jeruk.

**Tugas**
+ Prasyarat
+ Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
+ Langkah 2: Buat model pembelajaran mesin
+ Langkah 3: Lakukan prediksi dengan model

## Prasyarat
<a name="tutorial_multi-class_classification_prereqs"></a>

Untuk menyelesaikan tutorial ini, Anda harus menyelesaikan [pengaturan Administratif](https://docs.aws.amazon.com/redshift/latest/dg/admin-setup.html) untuk Amazon Redshift Ml.

## Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
<a name="tutorial_multi-class_classification_step_load"></a>

Gunakan [editor kueri Amazon Redshift v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html) untuk menjalankan kueri berikut. Kueri ini memuat data sampel ke Amazon Redshift.

1. Query berikut membuat tabel bernama`ecommerce_sales`.

   ```
   CREATE TABLE IF NOT EXISTS ecommerce_sales (
       invoiceno VARCHAR(30),
       stockcode VARCHAR(30),
       description VARCHAR(60),
       quantity DOUBLE PRECISION,
       invoicedate VARCHAR(30),
       unitprice DOUBLE PRECISION,
       customerid BIGINT,
       country VARCHAR(25)
   );
   ```

1. Kueri berikut menyalin data sampel dari [dataset E-Commerce Sales Forecast](https://www.kaggle.com/allunia/e-commerce-sales-forecast) ke dalam `ecommerce_sales` tabel.

   ```
   COPY ecommerce_sales
   FROM
       's3://redshift-ml-multiclass/ecommerce_data.txt' 
   IAM_ROLE default 
   DELIMITER '\t' 
   IGNOREHEADER 1 
   REGION 'us-east-1' 
   MAXERROR 100;
   ```

### Membagi data
<a name="tutorial_multi-class_classification_split_data"></a>

Saat Anda membuat model di Amazon Redshift ML, SageMaker AI secara otomatis membagi data Anda menjadi set pelatihan dan pengujian, sehingga SageMaker AI dapat menentukan akurasi model. Dengan memisahkan data secara manual pada langkah ini, Anda akan dapat memverifikasi keakuratan model dengan mengalokasikan set prediksi tambahan. 

Gunakan pernyataan SQL berikut untuk membagi data menjadi tiga set untuk pelatihan, validasi, dan prediksi.

```
--creates table with all data
CREATE TABLE ecommerce_sales_data AS (
    SELECT
        t1.stockcode,
        t1.description,
        t1.invoicedate,
        t1.customerid,
        t1.country,
        t1.sales_amt,
        CAST(RANDOM() * 100 AS INT) AS data_group_id
    FROM
        (
            SELECT
                stockcode,
                description,
                invoicedate,
                customerid,
                country,
                SUM(quantity * unitprice) AS sales_amt
            FROM
                ecommerce_sales
            GROUP BY
                1,
                2,
                3,
                4,
                5
        ) t1
);

--creates training set
CREATE TABLE ecommerce_sales_training AS (
    SELECT
        a.customerid,
        a.country,
        a.stockcode,
        a.description,
        a.invoicedate,
        a.sales_amt,
        (b.nbr_months_active) AS nbr_months_active
    FROM
        ecommerce_sales_data a
        INNER JOIN (
            SELECT
                customerid,
                COUNT(
                    DISTINCT(
                        DATE_PART(y, CAST(invoicedate AS DATE)) || '-' || LPAD(
                            DATE_PART(mon, CAST(invoicedate AS DATE)),
                            2,
                            '00'
                        )
                    )
                ) AS nbr_months_active
            FROM
                ecommerce_sales_data
            GROUP BY
                1
        ) b ON a.customerid = b.customerid
    WHERE
        a.data_group_id < 80
);

--creates validation set
CREATE TABLE ecommerce_sales_validation AS (
    SELECT
        a.customerid,
        a.country,
        a.stockcode,
        a.description,
        a.invoicedate,
        a.sales_amt,
        (b.nbr_months_active) AS nbr_months_active
    FROM
        ecommerce_sales_data a
        INNER JOIN (
            SELECT
                customerid,
                COUNT(
                    DISTINCT(
                        DATE_PART(y, CAST(invoicedate AS DATE)) || '-' || LPAD(
                            DATE_PART(mon, CAST(invoicedate AS DATE)),
                            2,
                            '00'
                        )
                    )
                ) AS nbr_months_active
            FROM
                ecommerce_sales_data
            GROUP BY
                1
        ) b ON a.customerid = b.customerid
    WHERE
        a.data_group_id BETWEEN 80
        AND 90
);

--creates prediction set
CREATE TABLE ecommerce_sales_prediction AS (
    SELECT
        customerid,
        country,
        stockcode,
        description,
        invoicedate,
        sales_amt
    FROM
        ecommerce_sales_data
    WHERE
        data_group_id > 90);
```

## Langkah 2: Buat model pembelajaran mesin
<a name="tutorial_multi-class_classification_step_create_model"></a>

Pada langkah ini, Anda menggunakan pernyataan CREATE MODEL untuk membuat model pembelajaran mesin Anda menggunakan klasifikasi multi-kelas. 

Kueri berikut membuat model klasifikasi multi-kelas dengan set pelatihan menggunakan operasi CREATE MODEL. Ganti amzn-s3-demo-bucket dengan bucket Amazon S3 Anda sendiri.

```
CREATE MODEL ecommerce_customer_activity
FROM
    (
        SELECT
            customerid,
            country,
            stockcode,
            description,
            invoicedate,
            sales_amt,
            nbr_months_active
        FROM
            ecommerce_sales_training
    ) TARGET nbr_months_active FUNCTION predict_customer_activity IAM_ROLE default PROBLEM_TYPE MULTICLASS_CLASSIFICATION SETTINGS (
        S3_BUCKET 'amzn-s3-demo-bucket',
        S3_GARBAGE_COLLECT OFF
    );
```

Dalam kueri ini, Anda menentukan jenis masalah sebagai`Multiclass_Classification`. Target yang Anda prediksi untuk model tersebut adalah`nbr_months_active`. Ketika SageMaker AI selesai melatih model, itu menciptakan fungsi`predict_customer_activity`, yang akan Anda gunakan untuk membuat prediksi di Amazon Redshift.

### Tampilkan status pelatihan model (opsional)
<a name="tutorial_multi-class_classification_show_status"></a>

Anda dapat menggunakan perintah SHOW MODEL untuk mengetahui kapan model Anda siap.

Gunakan kueri berikut untuk mengembalikan berbagai metrik model, termasuk status model dan akurasi.

```
SHOW MODEL ecommerce_customer_activity;
```

Ketika model siap, output dari operasi sebelumnya harus menunjukkan bahwa `Model State` adalah`Ready`. Berikut ini adalah contoh output dari operasi SHOW MODEL.

```
+--------------------------+-----------------------------------------------------------------------------------------------+
|        Model Name        |                                  ecommerce_customer_activity                                  |
+--------------------------+-----------------------------------------------------------------------------------------------+
|       Schema Name        |                                            public                                             |
|          Owner           |                                            awsuser                                            |
|      Creation Time       |                                   Fri, 17.06.2022 19:02:15                                    |
|       Model State        |                                             READY                                             |
|   Training Job Status    |                                  MaxAutoMLJobRuntimeReached                                   |
|   validation:accuracy    |                                           0.991280                                            |
|      Estimated Cost      |                                           7.897689                                            |
|                          |                                                                                               |
|      TRAINING DATA:      |                                                                                               |
|          Query           | SELECT CUSTOMERID, COUNTRY, STOCKCODE, DESCRIPTION, INVOICEDATE, SALES_AMT, NBR_MONTHS_ACTIVE |
|                          |                                 FROM ECOMMERCE_SALES_TRAINING                                 |
|      Target Column       |                                       NBR_MONTHS_ACTIVE                                       |
|                          |                                                                                               |
|       PARAMETERS:        |                                                                                               |
|        Model Type        |                                            xgboost                                            |
|       Problem Type       |                                   MulticlassClassification                                    |
|        Objective         |                                           Accuracy                                            |
|     AutoML Job Name      |                                redshiftml-20220617190215268770                                |
|      Function Name       |                                   predict_customer_activity                                   |
|   Function Parameters    |                customerid country stockcode description invoicedate sales_amt                 |
| Function Parameter Types |                          int8 varchar varchar varchar varchar float8                          |
|         IAM Role         |                                     default-aws-iam-role                                      |
|        S3 Bucket         |                                         amzn-s3-demo-bucket                                    |
|       Max Runtime        |                                             5400                                              |
+--------------------------+-----------------------------------------------------------------------------------------------+
```

## Langkah 3: Lakukan prediksi dengan model
<a name="tutorial_multi-class_classification_step_perform_predictions"></a>

Kueri berikut menunjukkan pelanggan mana yang memenuhi syarat untuk program loyalitas pelanggan Anda. Jika model memprediksi bahwa pelanggan akan aktif setidaknya selama tujuh bulan, maka model memilih pelanggan untuk program loyalitas.

```
SELECT
    customerid,
    predict_customer_activity(
        customerid,
        country,
        stockcode,
        description,
        invoicedate,
        sales_amt
    ) AS predicted_months_active
FROM
    ecommerce_sales_prediction
WHERE
    predicted_months_active >= 7
GROUP BY
    1,
    2
LIMIT
    10;
```

### Jalankan kueri prediksi terhadap data validasi (opsional)
<a name="tutorial_multi-class_classification_run_validation_prediction"></a>

Jalankan kueri prediksi berikut terhadap data validasi untuk melihat tingkat akurasi model.

```
SELECT
    CAST(SUM(t1.match) AS decimal(7, 2)) AS predicted_matches,
    CAST(SUM(t1.nonmatch) AS decimal(7, 2)) AS predicted_non_matches,
    CAST(SUM(t1.match + t1.nonmatch) AS decimal(7, 2)) AS total_predictions,
    predicted_matches / total_predictions AS pct_accuracy
FROM
    (
        SELECT
            customerid,
            country,
            stockcode,
            description,
            invoicedate,
            sales_amt,
            nbr_months_active,
            predict_customer_activity(
                customerid,
                country,
                stockcode,
                description,
                invoicedate,
                sales_amt
            ) AS predicted_months_active,
            CASE
                WHEN nbr_months_active = predicted_months_active THEN 1
                ELSE 0
            END AS match,
            CASE
                WHEN nbr_months_active <> predicted_months_active THEN 1
                ELSE 0
            END AS nonmatch
        FROM
            ecommerce_sales_validation
    )t1;
```

### Memprediksi berapa banyak pelanggan yang melewatkan entri (opsional)
<a name="tutorial_multi-class_classification_run_missed_entries"></a>

Kueri berikut membandingkan jumlah pelanggan yang diprediksi aktif hanya selama 5 atau 6 bulan. Model memprediksi bahwa pelanggan ini akan kehilangan program loyalitas. Kueri kemudian membandingkan jumlah yang hampir tidak ketinggalan program dengan nomor yang diperkirakan memenuhi syarat untuk program loyalitas. Kueri ini dapat digunakan untuk menginformasikan keputusan apakah akan menurunkan ambang batas untuk program loyalitas. Anda juga dapat menentukan apakah ada sejumlah besar pelanggan yang diperkirakan hampir tidak akan melewatkan program. Anda kemudian dapat mendorong pelanggan tersebut untuk meningkatkan aktivitas mereka untuk mendapatkan keanggotaan program loyalitas.

```
SELECT
    predict_customer_activity(
        customerid,
        country,
        stockcode,
        description,
        invoicedate,
        sales_amt
    ) AS predicted_months_active,
    COUNT(customerid)
FROM
    ecommerce_sales_prediction
WHERE
    predicted_months_active BETWEEN 5 AND 6
GROUP BY
    1
ORDER BY
    1 ASC
LIMIT
    10)
UNION
(SELECT
      NULL AS predicted_months_active,
    COUNT (customerid)
FROM 
    ecommerce_sales_prediction
WHERE
    predict_customer_activity(
        customerid,
        country,
        stockcode,
        description,
        invoicedate,
        sales_amt
    ) >=7);
```

## Topik terkait
<a name="tutorial_multi-class_classification_related_topics"></a>

Untuk informasi selengkapnya tentang Amazon Redshift ML, lihat dokumentasi berikut:
+ [Biaya untuk menggunakan Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cost.html)
+ [OPERASI BUAT MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html)
+ [Fungsi EXPLAIN\$1MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_explain_model_function.html)

Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut:
+ [Ikhtisar pembelajaran mesin](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning_overview.html)
+ [Pembelajaran mesin untuk pemula dan ahli](https://docs.aws.amazon.com/redshift/latest/dg/novice_expert.html)
+ [Apa Keadilan dan Penjelasan Model untuk Prediksi Machine Learning?](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-fairness-and-explainability.html)

# Tutorial: Membangun XGBoost model
<a name="tutorial_xgboost"></a>

Dalam tutorial ini, Anda membuat model dengan data dari Amazon S3 dan menjalankan kueri prediksi dengan model menggunakan Amazon Redshift ML. XGBoost Algoritma ini adalah implementasi yang dioptimalkan dari algoritma pohon yang ditingkatkan gradien. XGBoost menangani lebih banyak tipe data, hubungan, dan distribusi daripada algoritma pohon yang ditingkatkan gradien lainnya. Anda dapat menggunakan XGBoost untuk regresi, klasifikasi biner, klasifikasi multi-kelas, dan masalah peringkat. Untuk informasi selengkapnya tentang XGBoost algoritme, lihat [XGBoostalgoritme](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) di Panduan Pengembang Amazon SageMaker AI.

`CREATE MODEL`Operasi Amazon Redshift MLdengan `AUTO OFF` opsi yang saat ini mendukung XGBoost sebagai. `MODEL_TYPE` Anda dapat memberikan informasi yang relevan seperti tujuan dan hiperparameter sebagai bagian dari `CREATE MODEL` perintah, berdasarkan kasus penggunaan Anda.

Dalam tutorial ini, Anda menggunakan [dataset otentikasi uang kertas](https://archive.ics.uci.edu/ml/datasets/banknote+authentication), yang merupakan masalah klasifikasi biner untuk memprediksi apakah uang kertas yang diberikan asli atau palsu. 

## Contoh kasus penggunaan
<a name="tutorial_xgboost_tasks"></a>

Anda dapat memecahkan masalah klasifikasi biner lainnya menggunakan Amazon Redshift ML, seperti memprediksi apakah pasien sehat atau memiliki penyakit. Anda juga bisa memprediksi apakah email itu spam atau bukan spam.

**Tugas**
+ Prasyarat
+ Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
+ Langkah 2: Buat model pembelajaran mesin
+ Langkah 3: Lakukan prediksi dengan model

## Prasyarat
<a name="tutorial_xgboost_prereqs"></a>

Untuk menyelesaikan tutorial ini, Anda harus menyelesaikan [pengaturan Administratif](https://docs.aws.amazon.com/redshift/latest/dg/admin-setup.html) untuk Amazon Redshift Ml.

## Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
<a name="tutorial_xgboost_step_load"></a>

Gunakan [editor kueri Amazon Redshift v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html) untuk menjalankan kueri berikut.

Kueri berikut membuat dua tabel, memuat data dari Amazon S3, dan membagi data menjadi satu set pelatihan dan satu set pengujian. Anda akan menggunakan set pelatihan untuk melatih model Anda dan membuat fungsi prediksi. Kemudian, Anda akan menguji fungsi prediksi pada set pengujian.

```
--create training set table
CREATE TABLE banknoteauthentication_train(
    variance FLOAT,
    skewness FLOAT,
    curtosis FLOAT,
    entropy FLOAT,
    class INT
);

--Load into training table
COPY banknoteauthentication_train
FROM
    's3://redshiftbucket-ml-sagemaker/banknote_authentication/train_data/' IAM_ROLE default REGION 'us-west-2' IGNOREHEADER 1 CSV;

--create testing set table
CREATE TABLE banknoteauthentication_test(
    variance FLOAT,
    skewness FLOAT,
    curtosis FLOAT,
    entropy FLOAT,
    class INT
);

--Load data into testing table
COPY banknoteauthentication_test
FROM
    's3://redshiftbucket-ml-sagemaker/banknote_authentication/test_data/' 
    IAM_ROLE default 
    REGION 'us-west-2' 
    IGNOREHEADER 1 
    CSV;
```

## Langkah 2: Buat model pembelajaran mesin
<a name="tutorial_xgboost_step_create_model"></a>

Kueri berikut membuat XGBoost model di Amazon Redshift MLdari set pelatihan yang Anda buat pada langkah sebelumnya. Ganti `amzn-s3-demo-bucket` dengan milik Anda sendiri`S3_BUCKET`, yang akan menyimpan dataset input Anda dan artefak Redshift ML lainnya.

```
CREATE MODEL model_banknoteauthentication_xgboost_binary
FROM
    banknoteauthentication_train 
    TARGET class 
    FUNCTION func_model_banknoteauthentication_xgboost_binary 
    IAM_ROLE default 
    AUTO OFF 
    MODEL_TYPE xgboost 
    OBJECTIVE 'binary:logistic' 
    PREPROCESSORS 'none' 
    HYPERPARAMETERS DEFAULT
EXCEPT(NUM_ROUND '100') 
SETTINGS(S3_BUCKET 'amzn-s3-demo-bucket');
```

### Tampilkan status pelatihan model (opsional)
<a name="tutorial_xgboost_show_status"></a>

Anda dapat menggunakan perintah SHOW MODEL untuk mengetahui kapan model Anda siap.

Gunakan kueri berikut untuk memantau kemajuan pelatihan model.

```
SHOW MODEL model_banknoteauthentication_xgboost_binary;
```

Jika modelnya`READY`, operasi SHOW MODEL juga menyediakan `train:error` metrik, seperti yang ditunjukkan pada contoh output berikut. `train:error`Metrik adalah ukuran akurasi model Anda yang mengukur hingga enam tempat desimal. Nilai 0 paling akurat dan nilai 1 paling tidak akurat.

```
+--------------------------+--------------------------------------------------+
|        Model Name        |   model_banknoteauthentication_xgboost_binary    |
+--------------------------+--------------------------------------------------+
| Schema Name              | public                                           |
| Owner                    | awsuser                                          |
| Creation Time            | Tue, 21.06.2022 19:07:35                         |
| Model State              | READY                                            |
| train:error              |                                         0.000000 |
| Estimated Cost           |                                         0.006197 |
|                          |                                                  |
| TRAINING DATA:           |                                                  |
| Query                    | SELECT *                                         |
|                          | FROM "BANKNOTEAUTHENTICATION_TRAIN"              |
| Target Column            | CLASS                                            |
|                          |                                                  |
| PARAMETERS:              |                                                  |
| Model Type               | xgboost                                          |
| Training Job Name        | redshiftml-20220621190735686935-xgboost          |
| Function Name            | func_model_banknoteauthentication_xgboost_binary |
| Function Parameters      | variance skewness curtosis entropy               |
| Function Parameter Types | float8 float8 float8 float8                      |
| IAM Role                 | default-aws-iam-role                             |
| S3 Bucket                | amzn-s3-demo-bucket                              |
| Max Runtime              |                                             5400 |
|                          |                                                  |
| HYPERPARAMETERS:         |                                                  |
| num_round                |                                              100 |
| objective                | binary:logistic                                  |
+--------------------------+--------------------------------------------------+
```

## Langkah 3: Lakukan prediksi dengan model
<a name="tutorial_xgboost_step_perform_predictions"></a>

### Periksa keakuratan model
<a name="tutorial_xgboost_check_accuracy"></a>

Kueri prediksi berikut menggunakan fungsi prediksi yang dibuat pada langkah sebelumnya untuk memeriksa keakuratan model Anda. Jalankan kueri ini pada set pengujian untuk memastikan model tidak sesuai terlalu dekat dengan set pelatihan. Korespondensi dekat ini juga dikenal sebagai overfitting, dan overfitting dapat menyebabkan model membuat prediksi yang tidak dapat diandalkan.

```
WITH predict_data AS (
    SELECT
        class AS label,
        func_model_banknoteauthentication_xgboost_binary (variance, skewness, curtosis, entropy) AS predicted,
        CASE
            WHEN label IS NULL THEN 0
            ELSE label
        END AS actual,
        CASE
            WHEN actual = predicted THEN 1 :: INT
            ELSE 0 :: INT
        END AS correct
    FROM
        banknoteauthentication_test
),
aggr_data AS (
    SELECT
        SUM(correct) AS num_correct,
        COUNT(*) AS total
    FROM
        predict_data
)
SELECT
    (num_correct :: FLOAT / total :: FLOAT) AS accuracy
FROM
    aggr_data;
```

### Memprediksi jumlah uang kertas asli dan palsu
<a name="tutorial_xgboost_predict_amount"></a>

Kueri prediksi berikut mengembalikan jumlah uang kertas asli dan palsu yang diprediksi dalam set pengujian.

```
WITH predict_data AS (
    SELECT
        func_model_banknoteauthentication_xgboost_binary(variance, skewness, curtosis, entropy) AS predicted
    FROM
        banknoteauthentication_test
)
SELECT
    CASE
        WHEN predicted = '0' THEN 'Original banknote'
        WHEN predicted = '1' THEN 'Counterfeit banknote'
        ELSE 'NA'
    END AS banknote_authentication,
    COUNT(1) AS count
FROM
    predict_data
GROUP BY
    1;
```

### Temukan pengamatan rata-rata untuk uang kertas asli dan palsu
<a name="tutorial_xgboost_find_average_observation"></a>

Kueri prediksi berikut mengembalikan nilai rata-rata setiap fitur untuk uang kertas yang diprediksi asli dan palsu dalam set pengujian.

```
WITH predict_data AS (
    SELECT
        func_model_banknoteauthentication_xgboost_binary(variance, skewness, curtosis, entropy) AS predicted,
          variance,
          skewness,
          curtosis,
          entropy
    FROM
        banknoteauthentication_test
)
SELECT
    CASE
        WHEN predicted = '0' THEN 'Original banknote'
        WHEN predicted = '1' THEN 'Counterfeit banknote'
        ELSE 'NA'
    END AS banknote_authentication,
    TRUNC(AVG(variance), 2) AS avg_variance,
    TRUNC(AVG(skewness), 2) AS avg_skewness,
    TRUNC(AVG(curtosis), 2) AS avg_curtosis,
    TRUNC(AVG(entropy), 2) AS avg_entropy
FROM
    predict_data
GROUP BY
    1
ORDER BY
    2;
```

## Topik terkait
<a name="tutorial_xgboost_related_topics"></a>

Untuk informasi selengkapnya tentang Amazon Redshift ML, lihat dokumentasi berikut:
+ [Biaya untuk menggunakan Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cost.html)
+ [OPERASI BUAT MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html)
+ [Fungsi EXPLAIN\$1MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_explain_model_function.html)

Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut:
+ [Ikhtisar pembelajaran mesin](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning_overview.html)
+ [Pembelajaran mesin untuk pemula dan ahli](https://docs.aws.amazon.com/redshift/latest/dg/novice_expert.html)
+ [Apa Keadilan dan Penjelasan Model untuk Prediksi Machine Learning?](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-fairness-and-explainability.html)

# Tutorial: Membangun model regresi
<a name="tutorial_regression"></a>

Dalam tutorial ini, Anda menggunakan Amazon Redshift MLuntuk membuat model regresi pembelajaran mesin dan menjalankan kueri prediksi pada model. Model regresi memungkinkan Anda memprediksi hasil numerik, seperti harga rumah, atau berapa banyak orang yang akan menggunakan layanan penyewaan sepeda kota. Anda menggunakan perintah CREATE MODEL di Amazon Redshift dengan data pelatihan Anda. Kemudian, Amazon Redshift ML mengkompilasi model, mengimpor model terlatih ke Redshift, dan menyiapkan fungsi prediksi SQL. Anda dapat menggunakan fungsi prediksi dalam kueri SQL di Amazon Redshift.

Dalam tutorial ini, Anda akan menggunakan Amazon Redshift MLuntuk membangun model regresi yang memprediksi jumlah orang yang menggunakan layanan berbagi sepeda kota Toronto pada jam tertentu dalam sehari. Input untuk model termasuk hari libur dan kondisi cuaca. Anda akan menggunakan model regresi, karena Anda menginginkan hasil numerik untuk masalah ini.

Anda dapat menggunakan perintah CREATE MODEL untuk mengekspor data pelatihan, melatih model, dan membuat model tersedia di Amazon Redshift sebagai fungsi SQL. Gunakan operasi CREATE MODEL untuk menentukan data pelatihan baik sebagai tabel atau pernyataan SELECT.

## Contoh kasus penggunaan
<a name="tutorial_regression_tasks"></a>

Anda dapat memecahkan masalah regresi lainnya dengan Amazon Redshift ML, seperti memprediksi nilai seumur hidup pelanggan. Anda juga dapat menggunakan Redshift ML untuk memprediksi harga yang paling menguntungkan dan pendapatan yang dihasilkan dari suatu produk.

**Tugas**
+ Prasyarat
+ Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
+ Langkah 2: Buat model pembelajaran mesin
+ Langkah 3: Validasi model

## Prasyarat
<a name="tutorial_regression_prereqs"></a>

Untuk menyelesaikan tutorial ini, Anda harus menyelesaikan [pengaturan Administratif](https://docs.aws.amazon.com/redshift/latest/dg/admin-setup.html) untuk Amazon Redshift Ml.

## Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
<a name="tutorial_regression_step_load"></a>

Gunakan [editor kueri Amazon Redshift v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html) untuk menjalankan kueri berikut.

1. Anda harus membuat tiga tabel untuk memuat tiga kumpulan data publik ke Amazon Redshift. [Kumpulan data tersebut adalah Data [Pengendara Sepeda Toronto, data](https://open.toronto.ca/dataset/bike-share-toronto-ridership-data/)[cuaca historis, dan data liburan historis](https://climate.weather.gc.ca/historical_data/search_historic_data_e.html).](https://github.com/uWaterloo/Datasets/blob/master/Holidays/holidays.csv) Jalankan kueri berikut di editor kueri Amazon Redshift untuk membuat tabel bernama`ridership`,`weather`, dan. `holiday`

   ```
   CREATE TABLE IF NOT EXISTS ridership (
       trip_id INT,
       trip_duration_seconds INT,
       trip_start_time timestamp,
       trip_stop_time timestamp,
       from_station_name VARCHAR(50),
       to_station_name VARCHAR(50),
       from_station_id SMALLINT,
       to_station_id SMALLINT,
       user_type VARCHAR(20)
   );
   
   CREATE TABLE IF NOT EXISTS weather (
       longitude_x DECIMAL(5, 2),
       latitude_y DECIMAL(5, 2),
       station_name VARCHAR(20),
       climate_id BIGINT,
       datetime_utc TIMESTAMP,
       weather_year SMALLINT,
       weather_month SMALLINT,
       weather_day SMALLINT,
       time_utc VARCHAR(5),
       temp_c DECIMAL(5, 2),
       temp_flag VARCHAR(1),
       dew_point_temp_c DECIMAL(5, 2),
       dew_point_temp_flag VARCHAR(1),
       rel_hum SMALLINT,
       rel_hum_flag VARCHAR(1),
       precip_amount_mm DECIMAL(5, 2),
       precip_amount_flag VARCHAR(1),
       wind_dir_10s_deg VARCHAR(10),
       wind_dir_flag VARCHAR(1),
       wind_spd_kmh VARCHAR(10),
       wind_spd_flag VARCHAR(1),
       visibility_km VARCHAR(10),
       visibility_flag VARCHAR(1),
       stn_press_kpa DECIMAL(5, 2),
       stn_press_flag VARCHAR(1),
       hmdx SMALLINT,
       hmdx_flag VARCHAR(1),
       wind_chill VARCHAR(10),
       wind_chill_flag VARCHAR(1),
       weather VARCHAR(10)
   );
   
   CREATE TABLE IF NOT EXISTS holiday (holiday_date DATE, description VARCHAR(100));
   ```

1. Kueri berikut memuat data sampel ke dalam tabel yang Anda buat pada langkah sebelumnya.

   ```
   COPY ridership
   FROM
       's3://redshift-ml-bikesharing-data/bike-sharing-data/ridership/' 
       IAM_ROLE default 
       FORMAT CSV 
       IGNOREHEADER 1 
       DATEFORMAT 'auto' 
       TIMEFORMAT 'auto' 
       REGION 'us-west-2' 
       gzip;
   
   COPY weather
   FROM
       's3://redshift-ml-bikesharing-data/bike-sharing-data/weather/' 
       IAM_ROLE default 
       FORMAT csv 
       IGNOREHEADER 1 
       DATEFORMAT 'auto' 
       TIMEFORMAT 'auto' 
       REGION 'us-west-2' 
       gzip;
   
   COPY holiday
   FROM
       's3://redshift-ml-bikesharing-data/bike-sharing-data/holiday/' 
       IAM_ROLE default 
       FORMAT csv 
       IGNOREHEADER 1 
       DATEFORMAT 'auto' 
       TIMEFORMAT 'auto' 
       REGION 'us-west-2' 
       gzip;
   ```

1. Kueri berikut melakukan transformasi pada `weather` kumpulan data `ridership` dan untuk menghilangkan bias atau anomali. Menghapus bias dan anomali menghasilkan peningkatan akurasi model. Query menyederhanakan tabel dengan membuat dua tampilan baru yang disebut `ridership_view` dan`weather_view`.

   ```
   CREATE
   OR REPLACE VIEW ridership_view AS
   SELECT
       trip_time,
       trip_count,
       TO_CHAR(trip_time, 'hh24') :: INT trip_hour,
       TO_CHAR(trip_time, 'dd') :: INT trip_day,
       TO_CHAR(trip_time, 'mm') :: INT trip_month,
       TO_CHAR(trip_time, 'yy') :: INT trip_year,
       TO_CHAR(trip_time, 'q') :: INT trip_quarter,
       TO_CHAR(trip_time, 'w') :: INT trip_month_week,
       TO_CHAR(trip_time, 'd') :: INT trip_week_day
   FROM
       (
           SELECT
               CASE
                   WHEN TRUNC(r.trip_start_time) < '2017-07-01' :: DATE THEN CONVERT_TIMEZONE(
                       'US/Eastern',
                       DATE_TRUNC('hour', r.trip_start_time)
                   )
                   ELSE DATE_TRUNC('hour', r.trip_start_time)
               END trip_time,
               COUNT(1) trip_count
           FROM
               ridership r
           WHERE
               r.trip_duration_seconds BETWEEN 60
               AND 60 * 60 * 24
           GROUP BY
               1
       );
   
   CREATE
   OR REPLACE VIEW weather_view AS
   SELECT
       CONVERT_TIMEZONE(
           'US/Eastern',
           DATE_TRUNC('hour', datetime_utc)
       ) daytime,
       ROUND(AVG(temp_c)) temp_c,
       ROUND(AVG(precip_amount_mm)) precip_amount_mm
   FROM
       weather
   GROUP BY
       1;
   ```

1. Query berikut membuat tabel yang menggabungkan semua atribut input yang relevan dari `ridership_view` dan `weather_view` ke dalam `trip_data` tabel.

   ```
   CREATE TABLE trip_data AS
   SELECT
       r.trip_time,
       r.trip_count,
       r.trip_hour,
       r.trip_day,
       r.trip_month,
       r.trip_year,
       r.trip_quarter,
       r.trip_month_week,
       r.trip_week_day,
       w.temp_c,
       w.precip_amount_mm,CASE
           WHEN h.holiday_date IS NOT NULL THEN 1
           WHEN TO_CHAR(r.trip_time, 'D') :: INT IN (1, 7) THEN 1
           ELSE 0
       END is_holiday,
       ROW_NUMBER() OVER (
           ORDER BY
               RANDOM()
       ) serial_number
   FROM
       ridership_view r
       JOIN weather_view w ON (r.trip_time = w.daytime)
       LEFT OUTER JOIN holiday h ON (TRUNC(r.trip_time) = h.holiday_date);
   ```

### Lihat data sampel (opsional)
<a name="tutorial_regression_view_data"></a>

Kueri berikut menunjukkan entri dari tabel. Anda dapat menjalankan operasi ini untuk memastikan tabel dibuat dengan benar.

```
SELECT * 
FROM trip_data 
LIMIT 5;
```

Berikut ini adalah contoh output dari operasi sebelumnya.

```
+---------------------+------------+-----------+----------+------------+-----------+--------------+-----------------+---------------+--------+------------------+------------+---------------+
|      trip_time      | trip_count | trip_hour | trip_day | trip_month | trip_year | trip_quarter | trip_month_week | trip_week_day | temp_c | precip_amount_mm | is_holiday | serial_number |
+---------------------+------------+-----------+----------+------------+-----------+--------------+-----------------+---------------+--------+------------------+------------+---------------+
| 2017-03-21 22:00:00 |         47 |        22 |       21 |          3 |        17 |            1 |               3 |             3 |      1 |                0 |          0 |             1 |
| 2018-05-04 01:00:00 |         19 |         1 |        4 |          5 |        18 |            2 |               1 |             6 |     12 |                0 |          0 |             3 |
| 2018-01-11 10:00:00 |         93 |        10 |       11 |          1 |        18 |            1 |               2 |             5 |      9 |                0 |          0 |             5 |
| 2017-10-28 04:00:00 |         20 |         4 |       28 |         10 |        17 |            4 |               4 |             7 |     11 |                0 |          1 |             7 |
| 2017-12-31 21:00:00 |         11 |        21 |       31 |         12 |        17 |            4 |               5 |             1 |    -15 |                0 |          1 |             9 |
+---------------------+------------+-----------+----------+------------+-----------+--------------+-----------------+---------------+--------+------------------+------------+---------------+
```

### Tampilkan korelasi antara atribut (opsional)
<a name="tutorial_regression_show_correlation"></a>

Menentukan korelasi membantu Anda mengukur kekuatan asosiasi antar atribut. Tingkat asosiasi dapat membantu Anda menentukan apa yang mempengaruhi output target Anda. Dalam tutorial ini, target output adalah`trip_count`.

Query berikut membuat atau menggantikan `sp_correlation` prosedur. Anda menggunakan prosedur tersimpan yang dipanggil `sp_correlation` untuk menunjukkan korelasi antara atribut dan atribut lainnya dalam tabel di Amazon Redshift.

```
CREATE OR REPLACE PROCEDURE sp_correlation(source_schema_name in varchar(255), source_table_name in varchar(255), target_column_name in varchar(255), output_temp_table_name inout varchar(255)) AS $$
DECLARE
  v_sql varchar(max);
  v_generated_sql varchar(max);
  v_source_schema_name varchar(255)=lower(source_schema_name);
  v_source_table_name varchar(255)=lower(source_table_name);
  v_target_column_name varchar(255)=lower(target_column_name);
BEGIN
  EXECUTE 'DROP TABLE IF EXISTS ' || output_temp_table_name;
  v_sql = '
SELECT
  ''CREATE temp table '|| output_temp_table_name||' AS SELECT ''|| outer_calculation||
  '' FROM (SELECT COUNT(1) number_of_items, SUM('||v_target_column_name||') sum_target, SUM(POW('||v_target_column_name||',2)) sum_square_target, POW(SUM('||v_target_column_name||'),2) square_sum_target,''||
  inner_calculation||
  '' FROM (SELECT ''||
  column_name||
  '' FROM '||v_source_table_name||'))''
FROM
  (
  SELECT
    DISTINCT
    LISTAGG(outer_calculation,'','') OVER () outer_calculation
    ,LISTAGG(inner_calculation,'','') OVER () inner_calculation
    ,LISTAGG(column_name,'','') OVER () column_name
  FROM
    (
    SELECT
      CASE WHEN atttypid=16 THEN ''DECODE(''||column_name||'',true,1,0)'' ELSE column_name END column_name
      ,atttypid
      ,''CAST(DECODE(number_of_items * sum_square_''||rn||'' - square_sum_''||rn||'',0,null,(number_of_items*sum_target_''||rn||'' - sum_target * sum_''||rn||
        '')/SQRT((number_of_items * sum_square_target - square_sum_target) * (number_of_items * sum_square_''||rn||
        '' - square_sum_''||rn||''))) AS numeric(5,2)) ''||column_name outer_calculation
      ,''sum(''||column_name||'') sum_''||rn||'',''||
            ''SUM(trip_count*''||column_name||'') sum_target_''||rn||'',''||
            ''SUM(POW(''||column_name||'',2)) sum_square_''||rn||'',''||
            ''POW(SUM(''||column_name||''),2) square_sum_''||rn inner_calculation
    FROM
      (
      SELECT
        row_number() OVER (order by a.attnum) rn
        ,a.attname::VARCHAR column_name
        ,a.atttypid
      FROM pg_namespace AS n
        INNER JOIN pg_class AS c ON n.oid = c.relnamespace
        INNER JOIN pg_attribute AS a ON c.oid = a.attrelid
      WHERE a.attnum > 0
        AND n.nspname = '''||v_source_schema_name||'''
        AND c.relname = '''||v_source_table_name||'''
        AND a.atttypid IN (16,20,21,23,700,701,1700)
      )
    )
)';
  EXECUTE v_sql INTO v_generated_sql;
  EXECUTE  v_generated_sql;
END;
$$ LANGUAGE plpgsql;
```

Kueri berikut menunjukkan korelasi antara kolom target,`trip_count`, dan atribut numerik lainnya dalam dataset kami.

```
call sp_correlation(
    'public',
    'trip_data',
    'trip_count',
    'tmp_corr_table'
);

SELECT
    *
FROM
    tmp_corr_table;
```

Contoh berikut menunjukkan output dari `sp_correlation` operasi sebelumnya.

```
+------------+-----------+----------+------------+-----------+--------------+-----------------+---------------+--------+------------------+------------+---------------+
| trip_count | trip_hour | trip_day | trip_month | trip_year | trip_quarter | trip_month_week | trip_week_day | temp_c | precip_amount_mm | is_holiday | serial_number |
+------------+-----------+----------+------------+-----------+--------------+-----------------+---------------+--------+------------------+------------+---------------+
|          1 |      0.32 |     0.01 |       0.18 |      0.12 |         0.18 |               0 |          0.02 |   0.53 |            -0.07 |      -0.13 |             0 |
+------------+-----------+----------+------------+-----------+--------------+-----------------+---------------+--------+------------------+------------+---------------+
```

## Langkah 2: Buat model pembelajaran mesin
<a name="tutorial_regression_create_model"></a>

1. Kueri berikut membagi data Anda menjadi satu set pelatihan dan set validasi dengan menunjuk 80% dari dataset untuk pelatihan dan 20% untuk validasi. Set pelatihan adalah input untuk model ML untuk mengidentifikasi algoritme terbaik untuk model tersebut. Setelah model dibuat, Anda menggunakan set validasi untuk memvalidasi akurasi model.

   ```
   CREATE TABLE training_data AS
   SELECT
       trip_count,
       trip_hour,
       trip_day,
       trip_month,
       trip_year,
       trip_quarter,
       trip_month_week,
       trip_week_day,
       temp_c,
       precip_amount_mm,
       is_holiday
   FROM
       trip_data
   WHERE
       serial_number > (
           SELECT
               COUNT(1) * 0.2
           FROM
               trip_data
       );
   
   CREATE TABLE validation_data AS
   SELECT
       trip_count,
       trip_hour,
       trip_day,
       trip_month,
       trip_year,
       trip_quarter,
       trip_month_week,
       trip_week_day,
       temp_c,
       precip_amount_mm,
       is_holiday,
       trip_time
   FROM
       trip_data
   WHERE
       serial_number <= (
           SELECT
               COUNT(1) * 0.2
           FROM
               trip_data
       );
   ```

1. Kueri berikut membuat model regresi untuk memprediksi `trip_count` nilai untuk setiap tanggal dan waktu masukan. Dalam contoh berikut, ganti amzn-s3-demo-bucket dengan bucket S3 Anda sendiri.

   ```
   CREATE MODEL predict_rental_count
   FROM
       training_data TARGET trip_count FUNCTION predict_rental_count 
       IAM_ROLE default 
       PROBLEM_TYPE regression 
       OBJECTIVE 'mse' 
       SETTINGS (
           s3_bucket 'amzn-s3-demo-bucket',
           s3_garbage_collect off,
           max_runtime 5000
       );
   ```

## Langkah 3: Validasi model
<a name="tutorial_regression_step_validate"></a>

1. Gunakan kueri berikut untuk menampilkan aspek model, dan temukan metrik kesalahan kuadrat rata-rata dalam output. Mean square error adalah metrik akurasi khas untuk masalah regresi.

   ```
   show model predict_rental_count;
   ```

1. Jalankan kueri prediksi berikut terhadap data validasi untuk membandingkan jumlah perjalanan yang diprediksi dengan jumlah perjalanan yang sebenarnya.

   ```
   SELECT
       trip_time,
       actual_count,
       predicted_count,
       (actual_count - predicted_count) difference
   FROM
       (
           SELECT
               trip_time,
               trip_count AS actual_count,
               PREDICT_RENTAL_COUNT (
                   trip_hour,
                   trip_day,
                   trip_month,
                   trip_year,
                   trip_quarter,
                   trip_month_week,
                   trip_week_day,
                   temp_c,
                   precip_amount_mm,
                   is_holiday
               ) predicted_count
           FROM
               validation_data
       )
   LIMIT
       5;
   ```

1. Kueri berikut menghitung kesalahan kuadrat rata-rata dan kesalahan kuadrat rata-rata akar berdasarkan data validasi Anda. Anda menggunakan kesalahan kuadrat rata-rata dan kesalahan kuadrat rata-rata akar untuk mengukur jarak antara target numerik yang diprediksi dan jawaban numerik yang sebenarnya. Model yang baik memiliki skor rendah di kedua metrik. Query berikut mengembalikan nilai kedua metrik.

   ```
   SELECT
       ROUND(
           AVG(POWER((actual_count - predicted_count), 2)),
           2
       ) mse,
       ROUND(
           SQRT(AVG(POWER((actual_count - predicted_count), 2))),
           2
       ) rmse
   FROM
       (
           SELECT
               trip_time,
               trip_count AS actual_count,
               PREDICT_RENTAL_COUNT (
                   trip_hour,
                   trip_day,
                   trip_month,
                   trip_year,
                   trip_quarter,
                   trip_month_week,
                   trip_week_day,
                   temp_c,
                   precip_amount_mm,
                   is_holiday
               ) predicted_count
           FROM
               validation_data
       );
   ```

1. Kueri berikut menghitung persen kesalahan dalam jumlah perjalanan untuk setiap waktu perjalanan pada 2017-01-01. Kueri memesan waktu perjalanan dari waktu dengan kesalahan persen terendah ke waktu dengan kesalahan persen tertinggi.

   ```
   SELECT
       trip_time,
       CAST(ABS(((actual_count - predicted_count) / actual_count)) * 100 AS DECIMAL (7,2)) AS pct_error
   FROM
       (
           SELECT
               trip_time,
               trip_count AS actual_count,
               PREDICT_RENTAL_COUNT (
                   trip_hour,
                   trip_day,
                   trip_month,
                   trip_year,
                   trip_quarter,
                   trip_month_week,
                   trip_week_day,
                   temp_c,
                   precip_amount_mm,
                   is_holiday
               ) predicted_count
           FROM
               validation_data
       )
   WHERE
      trip_time LIKE '2017-01-01 %%:%%:%%'
   ORDER BY
      2 ASC;
   ```

## Topik terkait
<a name="tutorial_regression_related_topics"></a>

Untuk informasi selengkapnya tentang Amazon Redshift ML, lihat dokumentasi berikut:
+ [Biaya untuk menggunakan Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cost.html)
+ [OPERASI BUAT MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html)
+ [Fungsi EXPLAIN\$1MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_explain_model_function.html)

Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut:
+ [Ikhtisar pembelajaran mesin](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning_overview.html)
+ [Pembelajaran mesin untuk pemula dan ahli](https://docs.aws.amazon.com/redshift/latest/dg/novice_expert.html)
+ [Apa Keadilan dan Penjelasan Model untuk Prediksi Machine Learning?](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-fairness-and-explainability.html)

# Tutorial: Membangun model regresi dengan pelajar linier
<a name="tutorial_linear_learner_regression"></a>

Dalam tutorial ini, Anda membuat model pembelajar linier dengan data dari Amazon S3 dan menjalankan kueri prediksi dengan model menggunakan Amazon Redshift ML. Algoritma pembelajar linier SageMaker AI memecahkan masalah regresi atau klasifikasi multi-kelas. Untuk mempelajari lebih lanjut tentang masalah regresi dan klasifikasi multi-kelas, lihat [Jenis masalah untuk paradigma pembelajaran mesin](https://docs.aws.amazon.com/sagemaker/latest/dg/algorithms-choose.html#basic-machine-learning-paradigms) di Panduan Pengembang Amazon SageMaker AI. Dalam tutorial ini, Anda memecahkan masalah regresi. Algoritma pembelajar linier melatih banyak model secara paralel, dan secara otomatis menentukan model yang paling dioptimalkan. Anda menggunakan operasi CREATE MODEL di Amazon Redshift, yang membuat model pembelajar linier menggunakan SageMaker AI dan mengirimkan fungsi prediksi ke Amazon Redshift. Untuk informasi selengkapnya tentang algoritme pembelajar linier, lihat Algoritma [Linear Learner](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) di Panduan Pengembang Amazon SageMaker AI.

Anda dapat menggunakan perintah CREATE MODEL untuk mengekspor data pelatihan, melatih model, mengimpor model, dan menyiapkan fungsi prediksi Amazon Redshift. Gunakan operasi CREATE MODEL untuk menentukan data pelatihan baik sebagai tabel atau pernyataan SELECT.

Model pembelajar linier mengoptimalkan tujuan berkelanjutan atau tujuan diskrit. Tujuan kontinu digunakan untuk regresi, sedangkan variabel diskrit digunakan untuk klasifikasi. Beberapa metode memberikan solusi hanya untuk tujuan berkelanjutan, seperti metode regresi. Algoritma pembelajar linier memberikan peningkatan kecepatan dibandingkan teknik optimasi hiperparameter naif, seperti teknik Naive Bayes. Teknik optimasi naif mengasumsikan bahwa setiap variabel input independen. Untuk menggunakan algoritme pembelajar linier, Anda harus menyediakan kolom yang mewakili dimensi input, dan baris yang mewakili pengamatan. Untuk informasi selengkapnya tentang algoritme pembelajar linier, lihat Algoritma [Linear Learner](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) di Panduan Pengembang Amazon SageMaker AI. 

Dalam tutorial ini, Anda membangun model pembelajar linier yang memprediksi usia abalon. Anda menggunakan perintah CREATE MODEL pada [dataset Abalone](http://archive.ics.uci.edu/ml/datasets/Abalone) untuk menentukan hubungan antara pengukuran fisik abalon. Kemudian, Anda menggunakan model untuk menentukan usia abalon.

## Contoh kasus penggunaan
<a name="tutorial_linear_learner_regression_tasks"></a>

Anda dapat memecahkan masalah regresi lainnya dengan pelajar linier dan Amazon Redshift MS, seperti memprediksi harga rumah. Anda juga dapat menggunakan Redshift ML untuk memprediksi jumlah orang yang akan menggunakan layanan penyewaan sepeda kota.

**Tugas**
+ Prasyarat
+ Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
+ Langkah 2: Buat model pembelajaran mesin
+ Langkah 3: Validasi model

## Prasyarat
<a name="tutorial_linear_learner_regression_prereqs"></a>

Untuk menyelesaikan tutorial ini, Anda harus menyelesaikan [pengaturan Administratif](https://docs.aws.amazon.com/redshift/latest/dg/admin-setup.html) untuk Amazon Redshift Ml.

## Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
<a name="tutorial_linear_learner_regression_step_load_data"></a>

Gunakan [editor kueri Amazon Redshift v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html) untuk menjalankan kueri berikut. Kueri ini memuat data sampel ke dalam Redshift dan membagi data menjadi satu set pelatihan dan set validasi.

1. Query berikut membuat `abalone_dataset` tabel.

   ```
   CREATE TABLE abalone_dataset (
       id INT IDENTITY(1, 1),
       Sex CHAR(1),
       Length float,
       Diameter float,
       Height float,
       Whole float,
       Shucked float,
       Viscera float,
       Shell float,
       Rings integer
   );
   ```

1. Kueri berikut menyalin data sampel dari [kumpulan data Abalone](http://archive.ics.uci.edu/ml/datasets/Abalone) di Amazon S3 ke tabel yang Anda buat `abalone_dataset` sebelumnya di Amazon Redshift.

   ```
   COPY abalone_dataset
   FROM
       's3://redshift-ml-multiclass/abalone.csv' REGION 'us-east-1' IAM_ROLE default CSV IGNOREHEADER 1 NULL AS 'NULL';
   ```

1. Dengan memisahkan data secara manual, Anda akan dapat memverifikasi keakuratan model dengan mengalokasikan set prediksi tambahan. Query berikut membagi data menjadi dua set. `abalone_training`Tabel untuk pelatihan dan `abalone_validation` tabel untuk validasi.

   ```
   CREATE TABLE abalone_training as 
   SELECT 
       *
   FROM
       abalone_dataset
   WHERE
       mod(id, 10) < 8;
   
   CREATE TABLE abalone_validation as 
   SELECT 
       *
   FROM
       abalone_dataset
   WHERE
       mod(id, 10) >= 8;
   ```

## Langkah 2: Buat model pembelajaran mesin
<a name="tutorial_linear_learner_regression_step_create_model"></a>

Pada langkah ini, Anda menggunakan pernyataan CREATE MODEL untuk membuat model pembelajaran mesin Anda dengan algoritme pembelajar linier. 

Kueri berikut membuat model pembelajar linier dengan operasi CREATE MODEL menggunakan bucket S3 Anda. Ganti amzn-s3-demo-bucket dengan bucket S3 Anda sendiri.

```
CREATE MODEL model_abalone_ring_prediction
FROM
    (
        SELECT
            Sex,
            Length,
            Diameter,
            Height,
            Whole,
            Shucked,
            Viscera,
            Shell,
            Rings AS target_label
        FROM
            abalone_training
    ) TARGET target_label FUNCTION f_abalone_ring_prediction IAM_ROLE default MODEL_TYPE LINEAR_LEARNER PROBLEM_TYPE REGRESSION OBJECTIVE 'MSE' SETTINGS (
        S3_BUCKET 'amzn-s3-demo-bucket',
        MAX_RUNTIME 15000
    );
```

### Tampilkan status pelatihan model (opsional)
<a name="tutorial_linear_learner_regression_show_status"></a>

Anda dapat menggunakan perintah SHOW MODEL untuk mengetahui kapan model Anda siap.

Gunakan kueri berikut untuk memantau kemajuan pelatihan model.

```
SHOW MODEL model_abalone_ring_prediction;
```

Ketika model siap, output dari operasi sebelumnya akan terlihat mirip dengan contoh berikut. Perhatikan bahwa output menyediakan `validation:mse` metrik, yang merupakan kesalahan kuadrat rata-rata. Anda akan menggunakan kesalahan kuadrat rata-rata untuk memvalidasi keakuratan model pada langkah berikutnya.

```
+--------------------------+----------------------------------------------------------------------------------------------------+
|        Model Name        |                                   model_abalone_ring_prediction                                    |
+--------------------------+----------------------------------------------------------------------------------------------------+
| Schema Name              | public                                                                                             |
| Owner                    | awsuser                                                                                            |
| Creation Time            | Thu, 30.06.2022 18:00:10                                                                           |
| Model State              | READY                                                                                              |
| validation:mse           |                                                                                           4.168633 |
| Estimated Cost           |                                                                                           4.291608 |
|                          |                                                                                                    |
| TRAINING DATA:           |                                                                                                    |
| Query                    | SELECT SEX , LENGTH , DIAMETER , HEIGHT , WHOLE , SHUCKED , VISCERA , SHELL, RINGS AS TARGET_LABEL |
|                          | FROM ABALONE_TRAINING                                                                              |
| Target Column            | TARGET_LABEL                                                                                       |
|                          |                                                                                                    |
| PARAMETERS:              |                                                                                                    |
| Model Type               | linear_learner                                                                                     |
| Problem Type             | Regression                                                                                         |
| Objective                | MSE                                                                                                |
| AutoML Job Name          | redshiftml-20220630180010947843                                                                    |
| Function Name            | f_abalone_ring_prediction                                                                          |
| Function Parameters      | sex length diameter height whole shucked viscera shell                                             |
| Function Parameter Types | bpchar float8 float8 float8 float8 float8 float8 float8                                            |
| IAM Role                 | default-aws-iam-role                                                                               |
| S3 Bucket                | amzn-s3-demo-bucket                                                                                |
| Max Runtime              |                                                                                              15000 |
+--------------------------+----------------------------------------------------------------------------------------------------+
```

## Langkah 3: Validasi model
<a name="tutorial_linear_learner_regression_step_validate"></a>

1. Kueri prediksi berikut memvalidasi keakuratan model pada `abalone_validation` kumpulan data dengan menghitung kesalahan kuadrat rata-rata dan kesalahan kuadrat rata-rata akar.

   ```
   SELECT
       ROUND(AVG(POWER((tgt_label - predicted), 2)), 2) mse,
       ROUND(SQRT(AVG(POWER((tgt_label - predicted), 2))), 2) rmse
   FROM
       (
           SELECT
               Sex,
               Length,
               Diameter,
               Height,
               Whole,
               Shucked,
               Viscera,
               Shell,
               Rings AS tgt_label,
               f_abalone_ring_prediction(
                   Sex,
                   Length,
                   Diameter,
                   Height,
                   Whole,
                   Shucked,
                   Viscera,
                   Shell
               ) AS predicted,
               CASE
                   WHEN tgt_label = predicted then 1
                   ELSE 0
               END AS match,
               CASE
                   WHEN tgt_label <> predicted then 1
                   ELSE 0
               END AS nonmatch
           FROM
               abalone_validation
       ) t1;
   ```

   Output dari query sebelumnya akan terlihat seperti contoh berikut. Nilai metrik kesalahan kuadrat rata-rata harus serupa dengan `validation:mse` metrik yang ditunjukkan oleh output operasi SHOW MODEL.

   ```
   +-----+--------------------+
   | mse |        rmse        |
   +-----+--------------------+
   | 5.1 | 2.2600000000000002 |
   +-----+--------------------+
   ```

1. Gunakan kueri berikut untuk menjalankan operasi EXPLAIN\$1MODEL pada fungsi prediksi Anda. Operasi akan mengembalikan laporan penjelasan model. Untuk informasi selengkapnya tentang operasi EXPLAIN\$1MODEL, lihat fungsi [EXPLAIN\$1MODEL di](https://docs.aws.amazon.com/redshift/latest/dg/r_explain_model_function.html) Panduan Pengembang Database Amazon Redshift.

   ```
   SELECT
       EXPLAIN_MODEL ('model_abalone_ring_prediction');
   ```

   Informasi berikut adalah contoh laporan penjelasan model yang dihasilkan oleh operasi EXPLAIN\$1MODEL sebelumnya. Nilai untuk masing-masing input adalah nilai Shapley. Nilai Shapley mewakili efek setiap input terhadap prediksi model Anda, dengan input bernilai lebih tinggi memiliki dampak lebih besar pada prediksi. Dalam contoh ini, input bernilai lebih tinggi memiliki dampak lebih besar pada prediksi usia abalon.

   ```
   { 
       "explanations": { 
           "kernel_shap": { 
               "label0": { 
                   "expected_value" :10.290688514709473,
                   "global_shap_values": { 
                       "diameter" :0.6856910187882492,
                       "height" :0.4415323937124035,
                       "length" :0.21507476107609084,
                       "sex" :0.448611774505744,
                       "shell" :1.70426496893776,
                       "shucked" :2.1181392924386994,
                       "viscera" :0.342220754059912,
                       "whole" :0.6711906974084011 
                   } 
               } 
           } 
       },
       "version" :"1.0" 
   };
   ```

1. Gunakan kueri berikut untuk menghitung persentase prediksi yang benar yang dibuat model tentang abalon yang belum matang. Abalone yang belum matang memiliki 10 cincin atau kurang, dan prediksi yang benar akurat dalam satu cincin dari jumlah cincin yang sebenarnya.

   ```
   SELECT
       TRUNC(
           SUM(
               CASE
                   WHEN ROUND(
                       f_abalone_ring_prediction(
                           Sex,
                           Length,
                           Diameter,
                           Height,
                           Whole,
                           Shucked,
                           Viscera,
                           Shell
                       ),
                       0
                   ) BETWEEN Rings - 1
                   AND Rings + 1 THEN 1
                   ELSE 0
               END
           ) / CAST(COUNT(SHELL) AS FLOAT),
           4
       ) AS prediction_pct
   FROM
       abalone_validation
   WHERE
       Rings <= 10;
   ```

## Topik terkait
<a name="tutorial_linear_learner_regression_related_topics"></a>

Untuk informasi selengkapnya tentang Amazon Redshift ML, lihat dokumentasi berikut:
+ [Biaya untuk menggunakan Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cost.html)
+ [OPERASI BUAT MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html)
+ [Fungsi EXPLAIN\$1MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_explain_model_function.html)

Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut:
+ [Ikhtisar pembelajaran mesin](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning_overview.html)
+ [Pembelajaran mesin untuk pemula dan ahli](https://docs.aws.amazon.com/redshift/latest/dg/novice_expert.html)
+ [Apa Keadilan dan Penjelasan Model untuk Prediksi Machine Learning?](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-fairness-and-explainability.html)

# Tutorial: Membangun model klasifikasi multi-kelas dengan pelajar linier
<a name="tutorial_linear_learner_multi-class_classification"></a>

Dalam tutorial ini, Anda membuat model pembelajar linier dengan data dari Amazon S3, lalu menjalankan kueri prediksi dengan model menggunakan Amazon Redshift ML. Algoritma pembelajar linier SageMaker AI memecahkan masalah regresi atau klasifikasi. Untuk mempelajari lebih lanjut tentang masalah regresi dan klasifikasi multi-kelas, lihat [Jenis masalah untuk paradigma pembelajaran mesin](https://docs.aws.amazon.com/sagemaker/latest/dg/algorithms-choose.html#basic-machine-learning-paradigms) di Panduan Pengembang Amazon SageMaker AI. Dalam tutorial ini, Anda memecahkan masalah klasifikasi multi-kelas. Algoritma pembelajar linier melatih banyak model secara paralel, dan secara otomatis menentukan model yang paling dioptimalkan. Anda menggunakan operasi CREATE MODEL di Amazon Redshift, yang membuat model pembelajar linier menggunakan SageMaker AI dan mengirimkan fungsi prediksi ke Amazon Redshift. Untuk informasi selengkapnya tentang algoritme pembelajar linier, lihat Algoritma [Linear Learner](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) di Panduan Pengembang Amazon SageMaker AI.

Anda dapat menggunakan perintah CREATE MODEL untuk mengekspor data pelatihan, melatih model, mengimpor model, dan menyiapkan fungsi prediksi Amazon Redshift. Gunakan operasi CREATE MODEL untuk menentukan data pelatihan baik sebagai tabel atau pernyataan SELECT.

Model pembelajar linier mengoptimalkan tujuan berkelanjutan atau tujuan diskrit. Tujuan kontinu digunakan untuk regresi, sedangkan variabel diskrit digunakan untuk klasifikasi. Beberapa metode memberikan solusi hanya untuk tujuan berkelanjutan, seperti metode regresi. Algoritma pembelajar linier memberikan peningkatan kecepatan dibandingkan teknik optimasi hiperparameter naif, seperti teknik Naive Bayes. Teknik optimasi naif mengasumsikan bahwa setiap variabel input independen. Algoritma pembelajar linier melatih banyak model secara paralel dan memilih model yang paling dioptimalkan. Algoritma serupa adalah XGBoost, yang menggabungkan perkiraan dari serangkaian model yang lebih sederhana dan lebih lemah untuk membuat prediksi. Untuk mempelajari selengkapnya XGBoost, lihat [XGBoost algoritme](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) di Panduan Pengembang Amazon SageMaker AI.

Untuk menggunakan algoritme pembelajar linier, Anda harus menyediakan kolom yang mewakili dimensi input, dan baris yang mewakili pengamatan. Untuk informasi selengkapnya tentang algoritme pembelajar linier, lihat Algoritma [Linear Learner](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) di Panduan Pengembang Amazon SageMaker AI. 

Dalam tutorial ini, Anda membangun model pembelajar linier yang memprediksi jenis penutup untuk area tertentu. Anda menggunakan perintah CREATE MODEL pada [dataset Covertype](https://archive.ics.uci.edu/ml/datasets/covertype) dari UCI Machine Learning Repository. Kemudian, Anda menggunakan fungsi prediksi yang dibuat oleh perintah untuk menentukan jenis penutup di area hutan belantara. Jenis tutupan hutan biasanya merupakan jenis pohon. Input yang akan digunakan Redshift MLuntuk membuat model termasuk jenis tanah, jarak ke jalan raya, dan penunjukan area hutan belantara. Untuk informasi selengkapnya tentang kumpulan data, lihat Dataset [Jenis Covertype dari UCI](https://archive.ics.uci.edu/ml/datasets/covertype) Machine Learning Repository.

## Contoh kasus penggunaan
<a name="tutorial_linear_learner_multi-class_classification_tasks"></a>

Anda dapat memecahkan masalah klasifikasi multi-kelas lainnya dengan pembelajar linier dengan Amazon Redshift ML. seperti memprediksi spesies tanaman dari gambar. Anda juga dapat memprediksi jumlah produk yang akan dibeli pelanggan.

**Tugas**
+ Prasyarat
+ Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
+ Langkah 2: Buat model pembelajaran mesin
+ Langkah 3: Validasi model

## Prasyarat
<a name="tutorial_linear_learner_multi-class_classification_prereqs"></a>

Untuk menyelesaikan tutorial ini, Anda harus menyelesaikan [pengaturan Administratif](https://docs.aws.amazon.com/redshift/latest/dg/admin-setup.html) untuk Amazon Redshift Ml.

## Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift
<a name="tutorial_linear_learner_multi-class_classification_step_load"></a>

Gunakan [editor kueri Amazon Redshift v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html) untuk menjalankan kueri berikut. Kueri ini memuat data sampel ke dalam Redshift dan membagi data menjadi satu set pelatihan dan set validasi.

1. Query berikut membuat `covertype_data` tabel.

   ```
   CREATE TABLE public.covertype_data (
       elevation bigint ENCODE az64,
       aspect bigint ENCODE az64,
       slope bigint ENCODE az64,
       horizontal_distance_to_hydrology bigint ENCODE az64,
       vertical_distance_to_hydrology bigint ENCODE az64,
       horizontal_distance_to_roadways bigint ENCODE az64,
       hillshade_9am bigint ENCODE az64,
       hillshade_noon bigint ENCODE az64,
       hillshade_3pm bigint ENCODE az64,
       horizontal_distance_to_fire_points bigint ENCODE az64,
       wilderness_area1 bigint ENCODE az64,
       wilderness_area2 bigint ENCODE az64,
       wilderness_area3 bigint ENCODE az64,
       wilderness_area4 bigint ENCODE az64,
       soil_type1 bigint ENCODE az64,
       soil_type2 bigint ENCODE az64,
       soil_type3 bigint ENCODE az64,
       soil_type4 bigint ENCODE az64,
       soil_type5 bigint ENCODE az64,
       soil_type6 bigint ENCODE az64,
       soil_type7 bigint ENCODE az64,
       soil_type8 bigint ENCODE az64,
       soil_type9 bigint ENCODE az64,
       soil_type10 bigint ENCODE az64,
       soil_type11 bigint ENCODE az64,
       soil_type12 bigint ENCODE az64,
       soil_type13 bigint ENCODE az64,
       soil_type14 bigint ENCODE az64,
       soil_type15 bigint ENCODE az64,
       soil_type16 bigint ENCODE az64,
       soil_type17 bigint ENCODE az64,
       soil_type18 bigint ENCODE az64,
       soil_type19 bigint ENCODE az64,
       soil_type20 bigint ENCODE az64,
       soil_type21 bigint ENCODE az64,
       soil_type22 bigint ENCODE az64,
       soil_type23 bigint ENCODE az64,
       soil_type24 bigint ENCODE az64,
       soil_type25 bigint ENCODE az64,
       soil_type26 bigint ENCODE az64,
       soil_type27 bigint ENCODE az64,
       soil_type28 bigint ENCODE az64,
       soil_type29 bigint ENCODE az64,
       soil_type30 bigint ENCODE az64,
       soil_type31 bigint ENCODE az64,
       soil_type32 bigint ENCODE az64,
       soil_type33 bigint ENCODE az64,
       soil_type34 bigint ENCODE az64,
       soil_type35 bigint ENCODE az64,
       soil_type36 bigint ENCODE az64,
       soil_type37 bigint ENCODE az64,
       soil_type38 bigint ENCODE az64,
       soil_type39 bigint ENCODE az64,
       soil_type40 bigint ENCODE az64,
       cover_type bigint ENCODE az64
   ) DISTSTYLE AUTO;
   ```

1. Kueri berikut menyalin data sampel dari [kumpulan data Covertype](https://archive.ics.uci.edu/ml/datasets/covertype) di Amazon S3 ke tabel yang Anda buat `covertype_data` sebelumnya di Amazon Redshift.

   ```
   COPY public.covertype_data
   FROM
       's3://redshift-ml-multiclass/covtype.data.gz' IAM_ROLE DEFAULT gzip DELIMITER ',' REGION 'us-east-1';
   ```

1. Dengan memisahkan data secara manual, Anda akan dapat memverifikasi keakuratan model dengan mengalokasikan set pengujian tambahan. Query berikut membagi data menjadi tiga set. `covertype_training`Tabel untuk pelatihan, `covertype_validation` tabel untuk validasi, dan `covertype_test` tabel untuk menguji model Anda. Anda akan menggunakan set pelatihan untuk melatih model Anda dan set validasi untuk memvalidasi pengembangan model. Kemudian, Anda menggunakan set pengujian untuk menguji kinerja model dan melihat apakah model tersebut terlalu pas atau tidak sesuai dengan kumpulan data.

   ```
   CREATE TABLE public.covertype_data_prep AS
   SELECT
       a.*,
       CAST (random() * 100 AS int) AS data_group_id
   FROM
       public.covertype_data a;
   
   --training dataset
    CREATE TABLE public.covertype_training as
   SELECT
       *
   FROM
       public.covertype_data_prep
   WHERE
       data_group_id < 80;
   
   --validation dataset
    CREATE TABLE public.covertype_validation AS
   SELECT
       *
   FROM
       public.covertype_data_prep
   WHERE
       data_group_id BETWEEN 80
       AND 89;
   
   --test dataset
    CREATE TABLE public.covertype_test AS
   SELECT
       *
   FROM
       public.covertype_data_prep
   WHERE
       data_group_id > 89;
   ```

## Langkah 2: Buat model pembelajaran mesin
<a name="tutorial_linear_learner_multi-class_classification_step_create_model"></a>

Pada langkah ini, Anda menggunakan pernyataan CREATE MODEL untuk membuat model pembelajaran mesin Anda dengan algoritme pembelajar linier. 

Kueri berikut membuat model pembelajar linier dengan operasi CREATE MODEL menggunakan bucket S3 Anda. Ganti amzn-s3-demo-bucket dengan bucket S3 Anda sendiri.

```
CREATE MODEL forest_cover_type_model
FROM
    (
        SELECT
            Elevation,
            Aspect,
            Slope,
            Horizontal_distance_to_hydrology,
            Vertical_distance_to_hydrology,
            Horizontal_distance_to_roadways,
            HIllshade_9am,
            Hillshade_noon,
            Hillshade_3pm,
            Horizontal_Distance_To_Fire_Points,
            Wilderness_Area1,
            Wilderness_Area2,
            Wilderness_Area3,
            Wilderness_Area4,
            soil_type1,
            Soil_Type2,
            Soil_Type3,
            Soil_Type4,
            Soil_Type5,
            Soil_Type6,
            Soil_Type7,
            Soil_Type8,
            Soil_Type9,
            Soil_Type10,
            Soil_Type11,
            Soil_Type12,
            Soil_Type13,
            Soil_Type14,
            Soil_Type15,
            Soil_Type16,
            Soil_Type17,
            Soil_Type18,
            Soil_Type19,
            Soil_Type20,
            Soil_Type21,
            Soil_Type22,
            Soil_Type23,
            Soil_Type24,
            Soil_Type25,
            Soil_Type26,
            Soil_Type27,
            Soil_Type28,
            Soil_Type29,
            Soil_Type30,
            Soil_Type31,
            Soil_Type32,
            Soil_Type33,
            Soil_Type34,
            Soil_Type36,
            Soil_Type37,
            Soil_Type38,
            Soil_Type39,
            Soil_Type40,
            Cover_type
        from
            public.covertype_training
    ) TARGET cover_type FUNCTION predict_cover_type IAM_ROLE default MODEL_TYPE LINEAR_LEARNER PROBLEM_TYPE MULTICLASS_CLASSIFICATION OBJECTIVE 'Accuracy' SETTINGS (
        S3_BUCKET 'amzn-s3-demo-bucket',
        S3_GARBAGE_COLLECT OFF,
        MAX_RUNTIME 15000
    );
```

### Tampilkan status pelatihan model (opsional)
<a name="tutorial_linear_learner_multi-class_classification_show_status"></a>

Anda dapat menggunakan perintah SHOW MODEL untuk mengetahui kapan model Anda siap.

Gunakan kueri berikut untuk memantau kemajuan pelatihan model.

```
SHOW MODEL forest_cover_type_model;
```

Ketika model siap, output dari operasi sebelumnya akan terlihat mirip dengan contoh berikut. Perhatikan bahwa output menyediakan `validation:multiclass_accuracy` metrik, yang dapat Anda lihat di sisi kanan contoh berikut. Akurasi multi-kelas mengukur persentase titik data yang diklasifikasikan dengan benar oleh model. Anda akan menggunakan akurasi multi-kelas untuk memvalidasi keakuratan model pada langkah berikutnya.

```
+--------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|              Key               |                                                                                                                                                                                                                                                                                                                                                                                                             Value                                                                                                                                                                                                                                                                                                                                                                                                              |
+--------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Model Name                     | forest_cover_type_model                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Schema Name                    | public                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Owner                          | awsuser                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Creation Time                  | Tue, 12.07.2022 20:24:32                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Model State                    | READY                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| validation:multiclass_accuracy |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       0.724952 |
| Estimated Cost                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       5.341750 |
|                                |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| TRAINING DATA:                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| Query                          | SELECT ELEVATION, ASPECT, SLOPE, HORIZONTAL_DISTANCE_TO_HYDROLOGY, VERTICAL_DISTANCE_TO_HYDROLOGY, HORIZONTAL_DISTANCE_TO_ROADWAYS, HILLSHADE_9AM, HILLSHADE_NOON, HILLSHADE_3PM , HORIZONTAL_DISTANCE_TO_FIRE_POINTS, WILDERNESS_AREA1, WILDERNESS_AREA2, WILDERNESS_AREA3, WILDERNESS_AREA4, SOIL_TYPE1, SOIL_TYPE2, SOIL_TYPE3, SOIL_TYPE4, SOIL_TYPE5, SOIL_TYPE6, SOIL_TYPE7, SOIL_TYPE8, SOIL_TYPE9, SOIL_TYPE10 , SOIL_TYPE11, SOIL_TYPE12 , SOIL_TYPE13 , SOIL_TYPE14, SOIL_TYPE15, SOIL_TYPE16, SOIL_TYPE17, SOIL_TYPE18, SOIL_TYPE19, SOIL_TYPE20, SOIL_TYPE21, SOIL_TYPE22, SOIL_TYPE23, SOIL_TYPE24, SOIL_TYPE25, SOIL_TYPE26, SOIL_TYPE27, SOIL_TYPE28, SOIL_TYPE29, SOIL_TYPE30, SOIL_TYPE31, SOIL_TYPE32, SOIL_TYPE33, SOIL_TYPE34, SOIL_TYPE36, SOIL_TYPE37, SOIL_TYPE38, SOIL_TYPE39, SOIL_TYPE40, COVER_TYPE |
|                                | FROM PUBLIC.COVERTYPE_TRAINING                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Target Column                  | COVER_TYPE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|                                |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| PARAMETERS:                    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| Model Type                     | linear_learner                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Problem Type                   | MulticlassClassification                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Objective                      | Accuracy                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| AutoML Job Name                | redshiftml-20220712202432187659                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| Function Name                  | predict_cover_type                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Function Parameters            | elevation aspect slope horizontal_distance_to_hydrology vertical_distance_to_hydrology horizontal_distance_to_roadways hillshade_9am hillshade_noon hillshade_3pm horizontal_distance_to_fire_points wilderness_area1 wilderness_area2 wilderness_area3 wilderness_area4 soil_type1 soil_type2 soil_type3 soil_type4 soil_type5 soil_type6 soil_type7 soil_type8 soil_type9 soil_type10 soil_type11 soil_type12 soil_type13 soil_type14 soil_type15 soil_type16 soil_type17 soil_type18 soil_type19 soil_type20 soil_type21 soil_type22 soil_type23 soil_type24 soil_type25 soil_type26 soil_type27 soil_type28 soil_type29 soil_type30 soil_type31 soil_type32 soil_type33 soil_type34 soil_type36 soil_type37 soil_type38 soil_type39 soil_type40                                                                            |
| Function Parameter Types       | int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8 int8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| IAM Role                       | default-aws-iam-role                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| S3 Bucket                      | amzn-s3-demo-bucket                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Max Runtime                    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          15000 |
+--------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
```

## Langkah 3: Validasi model
<a name="tutorial_linear_learner_multi-class_classification_step_validate"></a>

1. Kueri prediksi berikut memvalidasi keakuratan model pada `covertype_validation` kumpulan data dengan menghitung akurasi multi-kelas. Akurasi multi-kelas adalah persentase prediksi model yang benar.

   ```
   SELECT
       CAST(sum(t1.match) AS decimal(7, 2)) AS predicted_matches,
       CAST(sum(t1.nonmatch) AS decimal(7, 2)) AS predicted_non_matches,
       CAST(sum(t1.match + t1.nonmatch) AS decimal(7, 2)) AS total_predictions,
       predicted_matches / total_predictions AS pct_accuracy
   FROM
       (
           SELECT
               Elevation,
               Aspect,
               Slope,
               Horizontal_distance_to_hydrology,
               Vertical_distance_to_hydrology,
               Horizontal_distance_to_roadways,
               HIllshade_9am,
               Hillshade_noon,
               Hillshade_3pm,
               Horizontal_Distance_To_Fire_Points,
               Wilderness_Area1,
               Wilderness_Area2,
               Wilderness_Area3,
               Wilderness_Area4,
               soil_type1,
               Soil_Type2,
               Soil_Type3,
               Soil_Type4,
               Soil_Type5,
               Soil_Type6,
               Soil_Type7,
               Soil_Type8,
               Soil_Type9,
               Soil_Type10,
               Soil_Type11,
               Soil_Type12,
               Soil_Type13,
               Soil_Type14,
               Soil_Type15,
               Soil_Type16,
               Soil_Type17,
               Soil_Type18,
               Soil_Type19,
               Soil_Type20,
               Soil_Type21,
               Soil_Type22,
               Soil_Type23,
               Soil_Type24,
               Soil_Type25,
               Soil_Type26,
               Soil_Type27,
               Soil_Type28,
               Soil_Type29,
               Soil_Type30,
               Soil_Type31,
               Soil_Type32,
               Soil_Type33,
               Soil_Type34,
               Soil_Type36,
               Soil_Type37,
               Soil_Type38,
               Soil_Type39,
               Soil_Type40,
               Cover_type AS actual_cover_type,
               predict_cover_type(
                   Elevation,
                   Aspect,
                   Slope,
                   Horizontal_distance_to_hydrology,
                   Vertical_distance_to_hydrology,
                   Horizontal_distance_to_roadways,
                   HIllshade_9am,
                   Hillshade_noon,
                   Hillshade_3pm,
                   Horizontal_Distance_To_Fire_Points,
                   Wilderness_Area1,
                   Wilderness_Area2,
                   Wilderness_Area3,
                   Wilderness_Area4,
                   soil_type1,
                   Soil_Type2,
                   Soil_Type3,
                   Soil_Type4,
                   Soil_Type5,
                   Soil_Type6,
                   Soil_Type7,
                   Soil_Type8,
                   Soil_Type9,
                   Soil_Type10,
                   Soil_Type11,
                   Soil_Type12,
                   Soil_Type13,
                   Soil_Type14,
                   Soil_Type15,
                   Soil_Type16,
                   Soil_Type17,
                   Soil_Type18,
                   Soil_Type19,
                   Soil_Type20,
                   Soil_Type21,
                   Soil_Type22,
                   Soil_Type23,
                   Soil_Type24,
                   Soil_Type25,
                   Soil_Type26,
                   Soil_Type27,
                   Soil_Type28,
                   Soil_Type29,
                   Soil_Type30,
                   Soil_Type31,
                   Soil_Type32,
                   Soil_Type33,
                   Soil_Type34,
                   Soil_Type36,
                   Soil_Type37,
                   Soil_Type38,
                   Soil_Type39,
                   Soil_Type40
               ) AS predicted_cover_type,
               CASE
                   WHEN actual_cover_type = predicted_cover_type THEN 1
                   ELSE 0
               END AS match,
               CASE
                   WHEN actual_cover_type <> predicted_cover_type THEN 1
                   ELSE 0
               END AS nonmatch
           FROM
               public.covertype_validation
       ) t1;
   ```

   Output dari query sebelumnya akan terlihat seperti contoh berikut. Nilai metrik akurasi multi-kelas harus serupa dengan `validation:multiclass_accuracy` metrik yang ditunjukkan oleh output operasi SHOW MODEL.

   ```
   +-------------------+-----------------------+-------------------+--------------+
   | predicted_matches | predicted_non_matches | total_predictions | pct_accuracy |
   +-------------------+-----------------------+-------------------+--------------+
   |             41211 |                 16324 |             57535 |   0.71627704 |
   +-------------------+-----------------------+-------------------+--------------+
   ```

1. Kueri berikut memprediksi jenis sampul yang paling umum untuk`wilderness_area2`. Dataset ini mencakup empat area hutan belantara dan tujuh jenis penutup. Area hutan belantara dapat memiliki beberapa jenis penutup.

   ```
   SELECT t1. predicted_cover_type, COUNT(*) 
   FROM 
   (     
   SELECT 
      Elevation, 
      Aspect,  
      Slope,  
      Horizontal_distance_to_hydrology,  
      Vertical_distance_to_hydrology,   
      Horizontal_distance_to_roadways,  
      HIllshade_9am,  
      Hillshade_noon,  
      Hillshade_3pm , 
      Horizontal_Distance_To_Fire_Points,  
      Wilderness_Area1,  
      Wilderness_Area2,   
      Wilderness_Area3,  
      Wilderness_Area4,  
      soil_type1,
      Soil_Type2,
      Soil_Type3, 
      Soil_Type4, 
      Soil_Type5,  
      Soil_Type6, 
      Soil_Type7,  
      Soil_Type8, 
      Soil_Type9, 
      Soil_Type10 , 
      Soil_Type11,  
      Soil_Type12 , 
      Soil_Type13 ,
      Soil_Type14, 
      Soil_Type15, 
      Soil_Type16,  
      Soil_Type17, 
      Soil_Type18,  
      Soil_Type19,  
      Soil_Type20,  
      Soil_Type21,  
      Soil_Type22,  
      Soil_Type23,  
      Soil_Type24, 
      Soil_Type25,  
      Soil_Type26, 
      Soil_Type27,  
      Soil_Type28,  
      Soil_Type29,  
      Soil_Type30,  
      Soil_Type31, 
      Soil_Type32, 
      Soil_Type33,  
      Soil_Type34, 
      Soil_Type36, 
      Soil_Type37,  
      Soil_Type38,  
      Soil_Type39, 
      Soil_Type40,
      predict_cover_type( Elevation, 
      Aspect,  
      Slope,  
      Horizontal_distance_to_hydrology,  
      Vertical_distance_to_hydrology,   
      Horizontal_distance_to_roadways,  
      HIllshade_9am,  
      Hillshade_noon,  
      Hillshade_3pm , 
      Horizontal_Distance_To_Fire_Points,  
      Wilderness_Area1,  
      Wilderness_Area2,   
      Wilderness_Area3,  
      Wilderness_Area4,  
      soil_type1,
      Soil_Type2,
      Soil_Type3, 
      Soil_Type4, 
      Soil_Type5,  
      Soil_Type6, 
      Soil_Type7,  
      Soil_Type8, 
      Soil_Type9, 
      Soil_Type10,
      Soil_Type11,  
      Soil_Type12, 
      Soil_Type13,
      Soil_Type14, 
      Soil_Type15, 
      Soil_Type16,  
      Soil_Type17, 
      Soil_Type18,  
      Soil_Type19,  
      Soil_Type20,  
      Soil_Type21,  
      Soil_Type22,  
      Soil_Type23,  
      Soil_Type24, 
      Soil_Type25,  
      Soil_Type26, 
      Soil_Type27,  
      Soil_Type28,  
      Soil_Type29,  
      Soil_Type30,  
      Soil_Type31, 
      Soil_Type32, 
      Soil_Type33,  
      Soil_Type34, 
      Soil_Type36, 
      Soil_Type37,  
      Soil_Type38,  
      Soil_Type39, 
      Soil_Type40) AS predicted_cover_type 
   
   FROM public.covertype_test
   WHERE wilderness_area2 = 1)
   t1
   GROUP BY 1;
   ```

   Output dari operasi sebelumnya akan terlihat mirip dengan contoh berikut. Output ini berarti bahwa model memprediksi bahwa mayoritas penutup adalah tipe penutup 1, dan ada beberapa penutup jenis penutup 2 dan 7.

   ```
   +----------------------+-------+
   | predicted_cover_type | count |
   +----------------------+-------+
   |                    2 |   564 |
   |                    7 |    97 |
   |                    1 |  2309 |
   +----------------------+-------+
   ```

1. Kueri berikut menunjukkan jenis penutup yang paling umum di satu area hutan belantara. Kueri menampilkan jumlah jenis penutup itu dan area hutan belantara tipe penutup.

   ```
   SELECT t1. predicted_cover_type, COUNT(*), wilderness_area 
   FROM 
   (     
   SELECT 
      Elevation, 
      Aspect,  
      Slope,  
      Horizontal_distance_to_hydrology,  
      Vertical_distance_to_hydrology,   
      Horizontal_distance_to_roadways,  
      HIllshade_9am,  
      Hillshade_noon,  
      Hillshade_3pm , 
      Horizontal_Distance_To_Fire_Points,  
      Wilderness_Area1,  
      Wilderness_Area2,   
      Wilderness_Area3,  
      Wilderness_Area4,  
      soil_type1,
      Soil_Type2,
      Soil_Type3, 
      Soil_Type4, 
      Soil_Type5,  
      Soil_Type6, 
      Soil_Type7,  
      Soil_Type8, 
      Soil_Type9, 
      Soil_Type10 , 
      Soil_Type11,  
      Soil_Type12 , 
      Soil_Type13 ,
      Soil_Type14, 
      Soil_Type15, 
      Soil_Type16,  
      Soil_Type17, 
      Soil_Type18,  
      Soil_Type19,  
      Soil_Type20,  
      Soil_Type21,  
      Soil_Type22,  
      Soil_Type23,  
      Soil_Type24, 
      Soil_Type25,  
      Soil_Type26, 
      Soil_Type27,  
      Soil_Type28,  
      Soil_Type29,  
      Soil_Type30,  
      Soil_Type31, 
      Soil_Type32, 
      Soil_Type33,  
      Soil_Type34, 
      Soil_Type36, 
      Soil_Type37,  
      Soil_Type38,  
      Soil_Type39, 
      Soil_Type40,
      predict_cover_type( Elevation, 
      Aspect,  
      Slope,  
      Horizontal_distance_to_hydrology,  
      Vertical_distance_to_hydrology,   
      Horizontal_distance_to_roadways,  
      HIllshade_9am,  
      Hillshade_noon,  
      Hillshade_3pm , 
      Horizontal_Distance_To_Fire_Points,  
      Wilderness_Area1,  
      Wilderness_Area2,   
      Wilderness_Area3,  
      Wilderness_Area4,  
      soil_type1,
      Soil_Type2,
      Soil_Type3, 
      Soil_Type4, 
      Soil_Type5,  
      Soil_Type6, 
      Soil_Type7,  
      Soil_Type8, 
      Soil_Type9, 
      Soil_Type10,
      Soil_Type11,  
      Soil_Type12, 
      Soil_Type13,
      Soil_Type14, 
      Soil_Type15, 
      Soil_Type16,  
      Soil_Type17, 
      Soil_Type18,  
      Soil_Type19,  
      Soil_Type20,  
      Soil_Type21,  
      Soil_Type22,  
      Soil_Type23,  
      Soil_Type24, 
      Soil_Type25,  
      Soil_Type26, 
      Soil_Type27,  
      Soil_Type28,  
      Soil_Type29,  
      Soil_Type30,  
      Soil_Type31, 
      Soil_Type32, 
      Soil_Type33,  
      Soil_Type34, 
      Soil_Type36, 
      Soil_Type37,  
      Soil_Type38,  
      Soil_Type39, 
      Soil_Type40) AS predicted_cover_type,
      CASE WHEN Wilderness_Area1 = 1 THEN 1
           WHEN Wilderness_Area2 = 1 THEN 2
           WHEN Wilderness_Area3 = 1 THEN 3
           WHEN Wilderness_Area4 = 1 THEN 4
           ELSE 0
      END AS wilderness_area
   
   FROM public.covertype_test)
   t1
   GROUP BY 1, 3
   ORDER BY 2 DESC
   LIMIT 1;
   ```

   Output dari operasi sebelumnya akan terlihat mirip dengan contoh berikut.

   ```
   +----------------------+-------+-----------------+
   | predicted_cover_type | count | wilderness_area |
   +----------------------+-------+-----------------+
   |                    2 | 15738 |               1 |
   +----------------------+-------+-----------------+
   ```

## Topik terkait
<a name="tutorial_linear_learner_multi-class_classification_related_topics"></a>

Untuk informasi selengkapnya tentang Amazon Redshift ML, lihat dokumentasi berikut:
+ [Biaya untuk menggunakan Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cost.html)
+ [OPERASI BUAT MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html)
+ [Fungsi EXPLAIN\$1MODEL](https://docs.aws.amazon.com/redshift/latest/dg/r_explain_model_function.html)

Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut:
+ [Ikhtisar pembelajaran mesin](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning_overview.html)
+ [Pembelajaran mesin untuk pemula dan ahli](https://docs.aws.amazon.com/redshift/latest/dg/novice_expert.html)
+ [Apa Keadilan dan Penjelasan Model untuk Prediksi Machine Learning?](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-fairness-and-explainability.html)

# Integrasi Amazon Redshift MLL dengan Amazon Bedrock
<a name="machine-learning-br"></a>

Bagian ini menjelaskan cara menggunakan integrasi Amazon Redshift MLdengan Amazon Bedrock. Dengan fitur ini, Anda dapat memanggil model Amazon Bedrock menggunakan SQL, dan Anda dapat menggunakan data Anda dari gudang data Amazon Redshift untuk membangun aplikasi AI generatif seperti pembuatan teks, analisis sentimen, atau terjemahan.

**Topics**
+ [Membuat atau memperbarui peran IAM untuk integrasi Amazon Redshift MLdengan Amazon Bedrock](#machine-learning-br-iam)
+ [Membuat model eksternal untuk integrasi Amazon Redshift MLdengan Amazon Bedrock](#machine-learning-br-create)
+ [Menggunakan model eksternal untuk integrasi Amazon Redshift MLdengan Amazon Bedrock](#machine-learning-br-use)
+ [Rekayasa cepat untuk integrasi Amazon Redshift MS dengan Amazon Bedrock](#machine-learning-br-prompt)

## Membuat atau memperbarui peran IAM untuk integrasi Amazon Redshift MLdengan Amazon Bedrock
<a name="machine-learning-br-iam"></a>

Bagian ini menunjukkan cara membuat peran IAM untuk digunakan dengan integrasi Amazon Redshift MLdengan Amazon Bedrock.

Tambahkan kebijakan berikut ke peran IAM yang Anda gunakan dengan integrasi Amazon Redshift MLdengan Amazon Bedrock: 
+ `AmazonBedrockFullAccess`

Agar Amazon Redshift dapat berperan berinteraksi dengan layanan lain, tambahkan kebijakan kepercayaan berikut ke peran IAM:

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": {
            "Service": [
               "redshift.amazonaws.com"
            ]
         },
         "Action": "sts:AssumeRole"
      }
   ]
}
```

------

Jika cluster atau namespace berada dalam VPC, ikuti instruksi di. [Cluster dan konfigurasikan pengaturan untuk administrasi Amazon Redshift ML.](getting-started-machine-learning.md#admin-setup) 

Jika Anda memerlukan kebijakan yang lebih ketat, Anda dapat membuat kebijakan yang hanya menyertakan izin Amazon Bedrock yang ditentukan di halaman berikut:
+ [Cluster dan konfigurasikan pengaturan untuk administrasi Amazon Redshift ML.](getting-started-machine-learning.md#admin-setup)
+ [Izin yang diperlukan untuk menggunakan machine learning Amazon Redshift (ML)](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#iam-permission-ml?)

Untuk informasi tentang membuat peran IAM, lihat [Pembuatan Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) di *AWS Identity and Access Management Panduan Pengguna*.

## Membuat model eksternal untuk integrasi Amazon Redshift MLdengan Amazon Bedrock
<a name="machine-learning-br-create"></a>

Bagian ini menunjukkan cara membuat model eksternal untuk digunakan sebagai antarmuka untuk Amazon Bedrock dalam gudang data Amazon Redshift Anda.

Untuk menjalankan model Amazon Bedrock dari Amazon Redshift, Anda harus menjalankan perintah terlebih dahulu. `CREATE EXTERNAL MODEL` Perintah ini membuat objek model eksternal dalam database, dan fungsi pengguna terkait yang Anda gunakan untuk menghasilkan konten teks dengan Amazon Bedrock.

Contoh kode berikut menunjukkan `CREATE EXTERNAL MODEL` perintah dasar:

```
CREATE EXTERNAL MODEL llm_claude
FUNCTION llm_claude_func
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'anthropic.claude-v2:1',
   PROMPT 'Summarize the following text:');
```

`CREATE EXTERNAL MODEL`Perintah ini memiliki antarmuka terpadu dan konsisten dengan Amazon Bedrock untuk semua Model Foundation (FM) yang mendukung pesan. Ini adalah opsi default saat menggunakan `CREATE EXTERNAL MODEL` perintah atau ketika secara eksplisit menentukan jenis permintaan yang akan menjadi. `UNIFIED` Untuk informasi selengkapnya, lihat dokumentasi [Converse API di dokumentasi](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) *Amazon Bedrock API*.

Jika FM tidak mendukung pesan, maka Anda harus mengatur `request_type` pengaturan ke`RAW`, seperti contoh berikut menunjukkan. Saat Anda menyetel `request_type` ke`RAW`, Anda harus membuat permintaan yang dikirim ke Amazon Bedrock saat menggunakan fungsi inferensi berdasarkan FM yang dipilih. Pastikan Anda mengaktifkan akses ke model Titan Text G1 — Express di Amazon Bedrock sebelum menjalankan contoh berikut. 

```
CREATE EXTERNAL MODEL titan_raw
FUNCTION func_titan_raw
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'amazon.titan-text-express-v1',
   REQUEST_TYPE RAW,
   RESPONSE_TYPE SUPER);
```

Jika Anda memerlukan informasi lebih lanjut tentang permintaan input seperti total token, Anda dapat meminta `RESPONSE_TYPE` untuk menjadi `super` ketika Anda membuat model. 

```
CREATE EXTERNAL MODEL patient_recommendations_v2
FUNCTION patient_recommendations_func_v2
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'anthropic.claude-v2',
   PROMPT 'Generate personalized diet plan for following patient:',
   RESPONSE_TYPE SUPER);
```

`PROMPT`Parameter untuk `CREATE EXTERNAL MODEL` perintah adalah prompt statis. Jika Anda memerlukan prompt dinamis untuk aplikasi Anda, Anda harus menentukannya saat menggunakan fungsi inferensi. Untuk detail selengkapnya, lihat [Rekayasa cepat untuk integrasi Amazon Redshift MS dengan Amazon Bedrock](#machine-learning-br-prompt).

Untuk informasi selengkapnya tentang `CREATE EXTERNAL MODEL` pernyataan dan parameter serta pengaturannya, lihat[BUAT MODEL EKSTERNAL](r_create_external_model.md).

## Menggunakan model eksternal untuk integrasi Amazon Redshift MLdengan Amazon Bedrock
<a name="machine-learning-br-use"></a>

Bagian ini menunjukkan cara memanggil model eksternal untuk menghasilkan teks sebagai respons terhadap permintaan yang diberikan. Untuk memanggil model eksternal, gunakan fungsi inferensi yang Anda buat dengan. `CREATE EXTERNAL MODEL`

**Topics**
+ [Inferensi dengan model tipe `UNIFIED` permintaan](#machine-learning-br-use-unified)
+ [Inferensi dengan model tipe `RAW` permintaan](#machine-learning-br-use-raw)
+ [Fungsi inferensi sebagai fungsi khusus pemimpin](#machine-learning-br-use-leader)
+ [Catatan penggunaan fungsi inferensi](#machine-learning-br-use-usage)

### Inferensi dengan model tipe `UNIFIED` permintaan
<a name="machine-learning-br-use-unified"></a>

Fungsi inferensi untuk model dengan tipe permintaan `UNIFIED` memiliki tiga parameter berikut yang diteruskan ke fungsi secara berurutan:
+ **Teks input** (wajib): Parameter ini menentukan teks masukan yang diteruskan Amazon Redshift ke Amazon Bedrock.
+ **Konfigurasi inferensi** dan **bidang permintaan model tambahan** (opsional): Amazon Redshift meneruskan parameter ini ke parameter yang sesuai untuk API model Converse. 

Contoh kode berikut menunjukkan cara menggunakan fungsi inferensi `UNIFIED` tipe:

```
SELECT llm_claude_func(input_text, object('temperature', 0.7, 'maxtokens', 500))
   FROM some_data;
```

### Inferensi dengan model tipe `RAW` permintaan
<a name="machine-learning-br-use-raw"></a>

Fungsi inferensi untuk model dengan tipe permintaan hanya `RAW` memiliki satu parameter tipe `SUPER` data. Sintaks parameter ini tergantung pada model Amazon Bedrock yang digunakan.

Contoh kode berikut menunjukkan cara menggunakan fungsi inferensi `RAW` tipe:

```
SELECT llm_titan_func(
    object(
        "inputText", "Summarize the following text: " | input_text,
        "textGenerationConfig", object("temperature", 0.5, "maxTokenCount", 500)
    )
)
FROM some_data;
```

### Fungsi inferensi sebagai fungsi khusus pemimpin
<a name="machine-learning-br-use-leader"></a>

Fungsi inferensi untuk model Amazon Bedrock dapat dijalankan sebagai fungsi khusus simpul pemimpin saat kueri yang menggunakannya tidak mereferensikan tabel apa pun. Ini dapat membantu jika Anda ingin segera mengajukan pertanyaan LLM.

Contoh kode berikut menunjukkan cara menggunakan fungsi inferensi khusus pemimpin:

```
SELECT general_titan_llm_func('Summarize the benefits of LLM on data analytics in 100 words');
```

### Catatan penggunaan fungsi inferensi
<a name="machine-learning-br-use-usage"></a>

Perhatikan hal berikut saat menggunakan fungsi inferensi dengan integrasi Amazon Redshift MLdengan Amazon Bedrock:
+ Nama-nama parameter untuk semua model Amazon Bedrock peka huruf besar/kecil. Jika parameter Anda tidak cocok dengan yang diperlukan oleh model, Amazon Bedrock mungkin diam-diam mengabaikannya.
+ Throughput kueri inferensi dibatasi oleh kuota runtime dari berbagai model yang ditawarkan oleh Amazon Bedrock di berbagai wilayah. Untuk informasi selengkapnya, lihat [Kuota untuk Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html) di Panduan Pengguna *Amazon Bedrock*.
+ Jika Anda membutuhkan throughput yang terjamin dan konsisten, pertimbangkan untuk mendapatkan throughput yang disediakan untuk model yang Anda butuhkan dari Amazon Bedrock. *Untuk informasi selengkapnya, lihat [Meningkatkan kapasitas pemanggilan model dengan Throughput yang Disediakan di Amazon Bedrock di Panduan Pengguna Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html).*
+ Kueri inferensi dengan sejumlah besar data mungkin mendapatkan pengecualian pelambatan. Ini karena kuota runtime terbatas untuk Amazon Bedrock. Amazon Redshift mencoba ulang permintaan beberapa kali, tetapi kueri masih dapat dibatasi karena throughput untuk model yang tidak disediakan mungkin bervariasi.
+ Jika Anda menemukan pengecualian pembatasan yang berasal dari Amazon Bedrock seperti `Too many requests, please wait before trying again.` bahkan dengan sejumlah kecil data, periksa **kuota di bawah Service Quotas** di akun Amazon Bedrock Anda. Periksa apakah kuota tingkat akun yang diterapkan setidaknya sama dengan nilai kuota AWS default untuk **InvokeModel**permintaan model yang Anda gunakan.

## Rekayasa cepat untuk integrasi Amazon Redshift MS dengan Amazon Bedrock
<a name="machine-learning-br-prompt"></a>

Bagian ini menunjukkan cara menggunakan prompt statis dengan model eksternal.

Untuk menggunakan awalan statis dan sufiks prompt untuk model eksternal Anda, berikan mereka menggunakan `PROMPT` dan `SUFFIX` parameter pernyataan. `CREATE EXTERNAL MODEL` Permintaan ini ditambahkan ke setiap kueri menggunakan model eksternal.

Contoh berikut menunjukkan cara menambahkan awalan dan sufiks prompt ke model eksternal:

```
CREATE EXTERNAL MODEL llm_claude
FUNCTION llm_claude_func
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'anthropic.claude-v2:1',
   PROMPT 'Summarize the following text:',
   SUFFIX 'Respond in an analytic tone');
```

Untuk menggunakan prompt dinamis, Anda dapat memberikannya saat menggunakan fungsi inferensi dengan menggabungkannya dalam input fungsi. Contoh berikut menunjukkan cara menggunakan prompt dinamis dengan fungsi inferensi:

```
SELECT llm_claude_func('Summarize the following review:' | input_text | 'The review should have formal tone.')
FROM some_data
```